diff --git a/xtrn/startrek/sprites/borg.ini b/xtrn/startrek/sprites/borg.ini index 7537b01cfac948b95dcb4b6e29698196d6999ce8..6e15294345cc012606ce49c3af941b64b4694897 100644 --- a/xtrn/startrek/sprites/borg.ini +++ b/xtrn/startrek/sprites/borg.ini @@ -4,11 +4,11 @@ bearings = n,ne,e,se,s,sw,w,nw positions = normal,destroyed movement = rotating constantmotion = 1 -speed = .75 +speed = .7 speedstep = .1 -minimumspeed = .75 +minimumspeed = .7 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo2 attackspeed = .5 name = The Borg type = ship diff --git a/xtrn/startrek/sprites/cardassian.ini b/xtrn/startrek/sprites/cardassian.ini index c54f44b0f2d7f4610c26d197f6d41e32bb9b8797..aff7e9fd53f0494e3306a2cf2cb6e9b533a4352b 100644 --- a/xtrn/startrek/sprites/cardassian.ini +++ b/xtrn/startrek/sprites/cardassian.ini @@ -4,11 +4,11 @@ bearings = n,ne,e,se,s,sw,w,nw positions = normal,destroyed movement = rotating constantmotion = 1 -speed = .25 +speed = .3 speedstep = .1 minimumspeed = .5 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo3 attackspeed = .5 name = Cardassians type = ship diff --git a/xtrn/startrek/sprites/defiant.bin b/xtrn/startrek/sprites/defiant.bin new file mode 100644 index 0000000000000000000000000000000000000000..07b929e7efad97916e7a43a63cb9f621a5db7f64 Binary files /dev/null and b/xtrn/startrek/sprites/defiant.bin differ diff --git a/xtrn/startrek/sprites/defiant.ini b/xtrn/startrek/sprites/defiant.ini new file mode 100644 index 0000000000000000000000000000000000000000..a524d92c100e91ec676c0bd0375e965746b52329 --- /dev/null +++ b/xtrn/startrek/sprites/defiant.ini @@ -0,0 +1,14 @@ +width = 8 +height = 4 +bearings = n,ne,e,se,s,sw,w,nw +positions = normal,destroyed +movement = rotating +constantmotion = 1 +speed = .5 +speedstep = .05 +minimumspeed = .6 +maximumspeed = .2 +weapon = photonTorpedo3 +attackspeed = .2 +type = ship +health = 9 \ No newline at end of file diff --git a/xtrn/startrek/sprites/enterprise.bin b/xtrn/startrek/sprites/galaxy.bin similarity index 100% rename from xtrn/startrek/sprites/enterprise.bin rename to xtrn/startrek/sprites/galaxy.bin diff --git a/xtrn/startrek/sprites/galaxy.ini b/xtrn/startrek/sprites/galaxy.ini new file mode 100644 index 0000000000000000000000000000000000000000..fdba0c9aa51c10079f5dd622d4e6a389276d9e7f --- /dev/null +++ b/xtrn/startrek/sprites/galaxy.ini @@ -0,0 +1,14 @@ +width = 8 +height = 4 +bearings = n,ne,e,se,s,sw,w,nw +positions = normal,destroyed +movement = rotating +constantmotion = 1 +speed = .6 +speedstep = .1 +minimumspeed = .7 +maximumspeed = .3 +weapon = photonTorpedo2 +attackspeed = .3 +type = ship +health = 11 \ No newline at end of file diff --git a/xtrn/startrek/sprites/gorn.ini b/xtrn/startrek/sprites/gorn.ini index 89c65bb40292a9742b0170058ed51143e0bf8be7..daf0c1f065fdace4f2ef962a66784199e4676a79 100644 --- a/xtrn/startrek/sprites/gorn.ini +++ b/xtrn/startrek/sprites/gorn.ini @@ -4,11 +4,11 @@ bearings = n,ne,e,se,s,sw,w,nw positions = normal,destroyed movement = rotating constantmotion = 1 -speed = .2 +speed = .3 speedstep = .1 minimumspeed = .2 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo1 attackspeed = .5 name = Gorn type = ship diff --git a/xtrn/startrek/sprites/intrepid.bin b/xtrn/startrek/sprites/intrepid.bin new file mode 100644 index 0000000000000000000000000000000000000000..0a87eda24e43e487e0b64887153a5a895f0ab213 --- /dev/null +++ b/xtrn/startrek/sprites/intrepid.bin @@ -0,0 +1 @@ + ���� � �� ������ � ��� �� ���� � �� � ��{�������{ � � �� ������ �� � ����� � ��� �������� �� � �����{� � � �� ��� �� � �� �������� � ��� ��������� �� � ���� �� � � �� ����{� � �� ������� � ��� � � ����� �� � � ����� � � �� �{�������{� �� � ���� � � ��� � ������ �� � � ���� � � �� ��{���� �� ������� � ��� ������ � �� � ������ � � �� �� ���� �� �������� � ��� ��������� �� � � �� ��� � � �� ����� � �� ����� � � ��� � ������� �� � � ��{��� � � �� \ No newline at end of file diff --git a/xtrn/startrek/sprites/enterprise.ini b/xtrn/startrek/sprites/intrepid.ini similarity index 72% rename from xtrn/startrek/sprites/enterprise.ini rename to xtrn/startrek/sprites/intrepid.ini index 15bfca3a5225043883b9864d71fb75b50927f7bf..ce0aeb99b79be111d0ea2621ef2aeee8a611f284 100644 --- a/xtrn/startrek/sprites/enterprise.ini +++ b/xtrn/startrek/sprites/intrepid.ini @@ -5,10 +5,10 @@ positions = normal,destroyed movement = rotating constantmotion = 1 speed = .5 -speedstep = .1 +speedstep = .05 minimumspeed = .5 maximumspeed = .1 -weapon = photonTorpedo -attackspeed = .3 +weapon = photonTorpedo1 +attackspeed = .4 type = ship -health = 11 \ No newline at end of file +health = 7 \ No newline at end of file diff --git a/xtrn/startrek/sprites/klingon.ini b/xtrn/startrek/sprites/klingon.ini index 125a1648fabdadb71a49039e8a6db133726a9768..7231e0a2703367babfeceb86099b863034882848 100644 --- a/xtrn/startrek/sprites/klingon.ini +++ b/xtrn/startrek/sprites/klingon.ini @@ -8,7 +8,7 @@ speed = .8 speedstep = .1 minimumspeed = .8 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo2 attackspeed = .5 name = Klingons type = ship diff --git a/xtrn/startrek/sprites/pakled.ini b/xtrn/startrek/sprites/pakled.ini index 7b739268df64c98f1a1a2c009ac89e82866aa7f8..fd696ae701b0b59e28ab7c5cea01a68dcd03a751 100644 --- a/xtrn/startrek/sprites/pakled.ini +++ b/xtrn/startrek/sprites/pakled.ini @@ -8,7 +8,7 @@ speed = 1 speedstep = .1 minimumspeed = 1 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo1 attackspeed = .7 name = Pakleds type = ship diff --git a/xtrn/startrek/sprites/photonTorpedo.bin b/xtrn/startrek/sprites/photonTorpedo1.bin similarity index 100% rename from xtrn/startrek/sprites/photonTorpedo.bin rename to xtrn/startrek/sprites/photonTorpedo1.bin diff --git a/xtrn/startrek/sprites/photonTorpedo1.ini b/xtrn/startrek/sprites/photonTorpedo1.ini new file mode 100644 index 0000000000000000000000000000000000000000..4e5c0aeeed7665cacfdf691ee9e705df4331026f --- /dev/null +++ b/xtrn/startrek/sprites/photonTorpedo1.ini @@ -0,0 +1,10 @@ +width = 1 +height = 1 +bearings = n,ne,e,se,s,sw,w,nw +positions = normal +movement = rotating +constantmotion = 1 +speed = .03 +range = 16 +type = weapon +damage = 1 \ No newline at end of file diff --git a/xtrn/startrek/sprites/photonTorpedo2.bin b/xtrn/startrek/sprites/photonTorpedo2.bin new file mode 100644 index 0000000000000000000000000000000000000000..72cff3f9b2440d3683bb2222abd70d921f9b10a6 --- /dev/null +++ b/xtrn/startrek/sprites/photonTorpedo2.bin @@ -0,0 +1,8 @@ +� +� +� +� +� +� +� +� diff --git a/xtrn/startrek/sprites/photonTorpedo.ini b/xtrn/startrek/sprites/photonTorpedo2.ini similarity index 84% rename from xtrn/startrek/sprites/photonTorpedo.ini rename to xtrn/startrek/sprites/photonTorpedo2.ini index c1d0dcaf247262fd95a6d65a14465f977d73f638..7d32c66c041f205f1efc1b5d1fbbeed0355fefd9 100644 --- a/xtrn/startrek/sprites/photonTorpedo.ini +++ b/xtrn/startrek/sprites/photonTorpedo2.ini @@ -6,4 +6,5 @@ movement = rotating constantmotion = 1 speed = .03 range = 20 -type = weapon \ No newline at end of file +type = weapon +damage = 2 \ No newline at end of file diff --git a/xtrn/startrek/sprites/photonTorpedo3.bin b/xtrn/startrek/sprites/photonTorpedo3.bin new file mode 100644 index 0000000000000000000000000000000000000000..35cf5f2b05513e872c12e2c22eac2b4aa96ca7db --- /dev/null +++ b/xtrn/startrek/sprites/photonTorpedo3.bin @@ -0,0 +1 @@ +�������� \ No newline at end of file diff --git a/xtrn/startrek/sprites/photonTorpedo3.ini b/xtrn/startrek/sprites/photonTorpedo3.ini new file mode 100644 index 0000000000000000000000000000000000000000..c27e6c26c7c22323954aeb7e2f522af113364efa --- /dev/null +++ b/xtrn/startrek/sprites/photonTorpedo3.ini @@ -0,0 +1,10 @@ +width = 1 +height = 1 +bearings = n,ne,e,se,s,sw,w,nw +positions = normal +movement = rotating +constantmotion = 1 +speed = .02 +range = 24 +type = weapon +damage = 3 \ No newline at end of file diff --git a/xtrn/startrek/sprites/romulan.ini b/xtrn/startrek/sprites/romulan.ini index 7d1c554aa918ff4685ac52c554f3a75eeba21e5d..daab341ad4be68f2c359905ec5ac9fd99b801b84 100644 --- a/xtrn/startrek/sprites/romulan.ini +++ b/xtrn/startrek/sprites/romulan.ini @@ -4,11 +4,11 @@ bearings = n,ne,e,se,s,sw,w,nw positions = normal,destroyed movement = rotating constantmotion = 1 -speed = .5 +speed = .3 speedstep = .1 minimumspeed = .5 maximumspeed = .05 -weapon = photonTorpedo +weapon = photonTorpedo3 attackspeed = .5 name = Romulans type = ship diff --git a/xtrn/startrek/startrek.js b/xtrn/startrek/startrek.js index e440643de22349a42f5d5fa707cc9eafc02c055e..acb933d9dbb36d43e071970906075eb29b77be65 100644 --- a/xtrn/startrek/startrek.js +++ b/xtrn/startrek/startrek.js @@ -2,13 +2,18 @@ load("sbbsdefs.js"); load("json-client.js"); load("event-timer.js"); load("frame.js"); +load("layout.js"); load("sprite.js"); +var maxEnemies = 5; + var sysStatus, userInput, player, timer, waveTimer, jsonClient, serverIni; -var frame, splashFrame, fieldFrame, statusFrame, clockFrame, clockSubFrame, uhOhFrame, scoreFrame, helpFrame; +var frame, fieldFrame, statusFrame, clockFrame, clockSubFrame, uhOhFrame; + var player = { round : 0, score : 0, + shipName : "", sprite : {} }; var enemySprites = []; @@ -20,6 +25,158 @@ var enemies = [ "gorn", "pakled" ]; +var ships = [ + "galaxy", + "intrepid", + "defiant" +]; + +var cycle = function() { + Sprite.cycle(); + timer.cycle(); + if(frame.cycle()) + console.gotoxy(console.screen_columns, console.screen_rows); +} + +var splash = function() { + var splashFrame = new Frame(1, 1, 80, 24, 0, frame); + splashFrame.load(js.exec_dir + "startrek.bin", 80, 24); + splashFrame.top(); + splashFrame.open(); + cycle(); + console.getkey(); + splashFrame.close(); + splashFrame.delete(); +} + +var init = function() { + js.branch_limit = 0; + sysStatus = bbs.sys_status; + bbs.sys_status|=SS_MOFF; + KEY_WEAPON = " "; + + frame = new Frame(1, 1, 80, 24, 0); + fieldFrame = new Frame(1, 1, 80, 24, 0, frame); + statusFrame = new Frame(1, 24, 66, 1, BG_BLUE|WHITE, frame); + clockFrame = new Frame(67, 24, 14, 1, BG_BLUE|WHITE, frame); + clockSubFrame = new Frame(78, 24, 2, 1, BG_BLUE|WHITE, clockFrame); + uhOhFrame = new Frame(1, 12, 80, 1, 0, frame); + uhOhFrame.transparent = true; + fieldFrame.load(js.exec_dir + "starfield.bin", 80, 24); + + timer = new Timer(); + + var f = new File(js.exec_dir + "server.ini"); + f.open("r"); + serverIni = f.iniGetObject(); + f.close(); + + frame.open(); + statusFrame.top(); + frame.draw(); +} + +var removeShip = function(s) { + Sprite.aerials[s].remove(); + Sprite.aerials[s].frame.delete(); +} + +var rotateSprites = function(sprites) { + for(var s in sprites) + sprites[s].turn("cw"); +} + +var ucfl = function(str) { + str = str[0].toUpperCase() + str.substr(1); + return str; +} + +var dots = function(d) { + var str = ""; + for(var dd = 0; dd < d; dd++) + str += ascii(254); + return str; +} + +var setup = function() { + var setupFrame = new Frame(1, 1, 80, 24, 0, frame); + setupFrame.load(js.exec_dir + "starfield.bin", 80, 24); + + var layout = new Layout(setupFrame); + + var shipSprites = []; + var viewWidth = 13; + var x = Math.floor((80 - (ships.length * viewWidth)) / 2); + for(var s = 0; s < ships.length; s++) { + var view = layout.addView(ucfl(ships[s]), x, 4, viewWidth - 1, 16); + view.show_tabs = false; + var tab = view.addTab("frame", "frame"); + var sprite = new Sprite.Aerial(ships[s], tab.frame, tab.frame.x, tab.frame.y, 'n'); + var weapon = new Sprite.Aerial(sprite.ini.weapon, tab.frame, tab.frame.x, tab.frame.y, 'n'); + sprite.ini.constantmotion = 0; + shipSprites.push(sprite); + weapon.remove(); + weapon.frame.delete(); + tab.frame.gotoxy(1, 7); + tab.frame.putmsg( + format( + "Speed\r\n\1h\1g%s\r\n\r\n\1h\1wShields\r\n\1h\1c%s\r\n\r\n\1h\1wWeapons\r\n\1h\1r%s", + dots(Math.floor((1 - sprite.ini.maximumspeed) * 10)), + dots(sprite.ini.health - 1), + dots(weapon.ini.damage * 3) + ), + WHITE + ); + x = x + viewWidth; + } + timer.addEvent(1000, true, rotateSprites, [shipSprites]); + + layout.open(); + setupFrame.open(); + setupFrame.gotoxy(1, 2); + setupFrame.center("What class of ship do you want to command, Captain " + ucfl(user.alias) + "?", WHITE); + setupFrame.draw(); + + var userInput = ""; + setupFrame.top(); + while(ascii(userInput) != 13) { + userInput = console.inkey(K_NONE, 5); + if(userInput == KEY_LEFT || userInput == KEY_RIGHT) + userInput = "\x09"; + layout.getcmd(userInput); + layout.cycle(); + cycle(); + } + + setupFrame.gotoxy(1, 21); + setupFrame.center("What is the name of your " + layout.current.title + "-class starship?", WHITE); + cycle(); + while(player.shipName == "") { + console.gotoxy(25, 23); + player.shipName = console.getstr("USS ", 30, K_LINE|K_EDIT); + } + + for(var s in Sprite.aerials) + removeShip(s); + + player.sprite = new Sprite.Aerial(layout.current.title.toLowerCase(), fieldFrame, 40, 10, 'n', 'normal'); + layout.close(); + setupFrame.close(); + setupFrame.delete(); + frame.invalidate(); + timer.events = []; +} + +var showHelp = function() { + var helpFrame = new Frame(8, 4, 64, 16, 0, frame); + helpFrame.load(js.exec_dir + "help.bin", 64, 16); + helpFrame.top(); + helpFrame.open(); + cycle(); + console.getkey(); + helpFrame.close(); + helpFrame.delete(); +} var checkScreenEdge = function(sprite) { if(sprite.x < -3) @@ -46,7 +203,8 @@ var putEnemy = function(re) { var spawnEnemies = function() { var re = Math.floor(Math.random() * enemies.length); - for(var x = 0; x < player.round; x++) { + var roundMax = Math.floor((player.round + 1) / 2); + for(var x = 0; x < ((roundMax > maxEnemies) ? maxEnemies : roundMax); x++) { while(!putEnemy(re)) { } } @@ -61,18 +219,21 @@ var spawnEnemies = function() { putStats(); uhOhFrame.top(); statusFrame.top(); - timer.addEvent(250, 12, cycleWarning, [Sprite.aerials[Sprite.aerials.length - 1].ini.name]); + timer.addEvent(250, 12, cycleWarning, ["Oh no! " + Sprite.aerials[Sprite.aerials.length - 1].ini.name + "!"]); timer.addEvent(3000, false, removeWarning); + if(player.round % 5 == 0) + waveTimer.interval = waveTimer.interval - 5000; } -var removeShip = function(s) { - Sprite.aerials[s].remove(); +var countdown = function() { + clockSubFrame.clear(); + clockSubFrame.putmsg(parseInt(waveTimer.nextrun * .001)); } -var cycleWarning = function(enemy) { +var cycleWarning = function(warning) { var c = Math.floor(Math.random() * 15) + 1; uhOhFrame.clear(); - uhOhFrame.center("Oh no! " + enemy + "!", c); + uhOhFrame.center(warning, c); } var removeWarning = function() { @@ -90,66 +251,28 @@ var putStats = function() { ); } -var countdown = function() { - clockSubFrame.clear(); - clockSubFrame.putmsg(parseInt(waveTimer.nextrun * .001)); -} - -var init = function() { - js.branch_limit = 0; - sysStatus = bbs.sys_status; - bbs.sys_status|=SS_MOFF; - KEY_WEAPON = " "; - - frame = new Frame(1, 1, 80, 24, 0); - splashFrame = new Frame(1, 1, 80, 24, 0, frame); - fieldFrame = new Frame(1, 1, 80, 24, 0, frame); - statusFrame = new Frame(1, 24, 66, 1, BG_BLUE|WHITE, frame); - clockFrame = new Frame(67, 24, 14, 1, BG_BLUE|WHITE, frame); - clockSubFrame = new Frame(78, 24, 2, 1, BG_BLUE|WHITE, clockFrame); - uhOhFrame = new Frame(1, 12, 80, 1, 0, frame); - scoreFrame = new Frame(1, 1, 80, 24, BG_BLACK|WHITE, frame); - helpFrame = new Frame(8, 4, 64, 16, 0, frame); - - uhOhFrame.transparent = true; - splashFrame.load(js.exec_dir + "startrek.bin", 80, 24); - fieldFrame.load(js.exec_dir + "starfield.bin", 80, 24); - helpFrame.load(js.exec_dir + "help.bin", 64, 16); - - player.sprite = new Sprite.Aerial("enterprise", fieldFrame, 40, 10, 'n', 'normal'); - - timer = new Timer(); - - var f = new File(js.exec_dir + "server.ini"); - f.open("r"); - serverIni = f.iniGetObject(); - f.close(); - - frame.open(); - scoreFrame.bottom(); - helpFrame.bottom(); - statusFrame.top(); - splashFrame.top(); - frame.draw(); -} - -var showHelp = function() { - helpFrame.top(); - frame.cycle(); - console.getkey(); - helpFrame.bottom(); +var deathKnell = function() { + uhOhFrame.top(); + for(var n = 0; n < 20; n++) { + cycleWarning("You done goofed!"); + cycle(); + mswait(200); + } + while(console.input_buffer_level > 0) { + console.inkey(); + } } var gamePlay = function() { player.round = 1; - timer.addEvent(5000, 1, spawnEnemies); + player.sprite.frame.draw(); + timer.addEvent(2000, 1, spawnEnemies); waveTimer = timer.addEvent(30000, true, spawnEnemies); putStats(); + statusFrame.top(); while(!js.terminated) { - if(player.sprite.ini.health < 1) { - deathKnell(); + if(player.sprite.ini.health < 1) break; - } userInput = console.inkey(K_NONE, 5); if(ascii(userInput) == 27) break; @@ -185,7 +308,7 @@ var gamePlay = function() { && (o[oo].owner != Sprite.aerials[s]) ) { - Sprite.aerials[s].ini.health = Sprite.aerials[s].ini.health - 1; + Sprite.aerials[s].ini.health = Sprite.aerials[s].ini.health - parseInt(o[oo].ini.damage); o[oo].remove(); } else if( o[oo].ini.type == "ship" && Sprite.aerials[s].ini.type == "ship" @@ -206,80 +329,87 @@ var gamePlay = function() { putStats(); } } - timer.cycle(); - Sprite.cycle(); - if(frame.cycle()) - console.gotoxy(80, 24); - } - waveTimer.abort = true; -} - -var deathKnell = function() { - uhOhFrame.top(); - for(var n = 0; n < 20; n++) { - cycleWarning("You done goofed"); - frame.cycle(); - mswait(200); + cycle(); } + if(player.sprite.ini.health < 1) + deathKnell(); + timer.events = []; } var scoreBoard = function() { var scoreObj = { 'alias' : user.alias, 'system' : system.name, + 'shipName' : player.shipName, 'round' : player.round - 1, 'score' : player.score, 'when' : time() }; try { jsonClient = new JSONClient(serverIni.host, serverIni.port); - var scores = jsonClient.read("STARTREK", "STARTREK.SCORES", 1); + var scores = jsonClient.read("STARTREK", "STARTREK.HIGHSCORES", 1); if(scores === undefined) { - scores = []; - jsonClient.write("STARTREK", "STARTREK.SCORES", scores, 2); + scores = [scoreObj]; + jsonClient.write("STARTREK", "STARTREK.HIGHSCORES", scores, 2); } - jsonClient.push("STARTREK", "STARTREK.SCORES", scoreObj, 2); - jsonClient.disconnect(); } catch(err) { log(LOG_ERR, "JSON client error: " + err); return false; } - scoreFrame.center("Recent scores"); + var scoreFrame = new Frame(1, 1, 80, 24, BG_BLACK|WHITE, frame); + scoreFrame.open(); + scoreFrame.center("High scores"); scoreFrame.putmsg("\r\n\r\n"); scoreFrame.putmsg( format( "%-30s%-30s%-10s%s\r\n\r\n", - "Player", "System", "Round", "Score" + "Player", "Ship", "Round", "Score" ), LIGHTCYAN ); - scores.push(scoreObj); - shownUsers = []; - for(var s = scores.length - 1; s > (scores.length >= 19) ? scores.length - 20 : 0; s = s - 1) { - if(shownUsers.indexOf(scores[s].alias) >= 0) - continue; - shownUsers.push(scores[s].alias); + var writeBack = false; + for(var s = 0; s < scores.length; s++) { + if(player.score > scores[s].score && !writeBack) { + writeBack = true; + scores.splice(s, 0, scoreObj); + } + scoreFrame.putmsg( + format( + "%-30s%-30s%-10s%s\r\n", + scores[s].alias, scores[s].shipName, scores[s].round, scores[s].score + ), + WHITE + ); + } + if(!writeBack && scores.length < 18) { + writeBack = true; + scores.push(scoreObj); scoreFrame.putmsg( format( "%-30s%-30s%-10s%s\r\n", - scores[s].alias, scores[s].system, scores[s].round, scores[s].score - ) + scores[s].alias, scores[s].shipName, scores[s].round, scores[s].score + ), + WHITE ); } + if(writeBack) { + while(scores.length > 18) { + scores.pop(); + } + jsonClient.write("STARTREK", "STARTREK.HIGHSCORES", scores, 2); + } + jsonClient.disconnect(); + scoreFrame.crlf(); scoreFrame.center("<Press any key>", LIGHTRED); scoreFrame.top(); - frame.cycle(); - mswait(1000); - while(console.input_buffer_level > 0) { - console.inkey(); - } + cycle(); console.getkey(); } var main = function() { - console.getkey(); - splashFrame.close(); + splash(); + setup(); gamePlay(); scoreBoard(); }