-- SURVIVE! --
Here is a simple 2D video game - |
Click here to download .zip archive
;---------------------- Starting Up ------------------------------ Graphics 600,450 ; size of screen SeedRnd MilliSecs() ; use REALLY random numbers SetBuffer BackBuffer() ; use double buffering to stop flicker Global player = LoadImage("player.bmp") ; loads player picture Global alien = LoadImage("alien.bmp") ; loads bug picture MakePic(alien,100,500,1,2,0) ; Makes a bug at (100,500) ; moving at speed (across=1 , down=2) MakePic(alien,500,100,-1,0,0) MakePic(alien,500,500,1,-1,0) ; More Bugs MakePic(alien,100,100,0,2,0) MakePic(alien,500,300,-1,-1,0) MakePic(alien,300,100,-2,1,0) MakePic(alien,100,300,0,-1,0) MakePic(alien,300,500,1,1,0) Global p.pic = MakePic(player,300,200,0,0,9) ; create the player p Print "Use arrow keys to avoid the bugs and SURVIVE!" Print "Press [ENTER] to start" Input ;--------------------- Playing ------------------------------------ Repeat ; the game loop moving() drawing() hitting() Forever ;------------------------------------------------------------------ ; These are the commands repeated during the game ; Change these to control movement and other actions ;------------------------------------------------------------------ Function moving() If KeyDown(200) ; up arrow is pressed p\y = p\y - 5 EndIf If KeyDown(203) ; left arrow p\x = p\x - 5 EndIf If KeyDown(208) ; down arrow p\y = p\y + 5 EndIf If KeyDown(205) ; right arrow p\x = p\x + 5 EndIf MoveAll() End Function Function drawing() Cls ; clear the screen (blank) DrawAll() ; draw all the pictures again Flip ; display new drawing End Function Function hitting() h.pic = Hit(p) If h\i = alien ; if h is NOT NO collision (there IS a collision) Cls Print "Poisoned ... you lose ..." Input End EndIf End Function ;========================================================================= ; Some complex, technical, standard stuff is below - the game "engine" ; You probably shouldn't change these commands ;========================================================================= Type pic Field i ; image pointer Field x,y,w,h ; position (x,y), width, height Field a,d ; movement speed (across, down) Field c ; code for different types of objects End Type Function MoveAll() Local temp.pic Local gw = GraphicsWidth() Local gh = GraphicsHeight() For temp = Each pic temp\x = (gw + temp\x + temp\a) Mod gw temp\y = (gh + temp\y + temp\d) Mod gh Next End Function Function DrawAll() Local temp.pic For temp = Each pic DrawImage temp\i,temp\x,temp\y Next End Function Function MakePic.pic(img,x,y,a,d,c) Local temp.pic = New pic temp\i = img temp\x = x temp\y = y temp\a = a temp\d = d temp\w = ImageWidth(img) temp\h = ImageHeight(img) Return temp End Function Function Hit.pic(check.pic) Local temp.pic For temp = Each pic If temp<>check If ImagesOverlap(temp\i,temp\x,temp\y,check\i,check\x,check\y) Return temp EndIf EndIf Next Return check End Function ;======================================================================= ; This game is a simple 2D movement game, with several enemies to avoid. ; It demonstrates the basic techniques for 2D games. ; ; Once you understand the commands here (let the teacher explain them) ; try to make the following changes: ; ; (1) Add 4 more enemies, but use a different picture, about the same size. ; ; (2) Change the game so it makes a distinction between the poison enemies ; (the bugs) and the good enemies (your new ones). In the hitting() ; function, the program should respond differently to hitting a bug ; or hitting the new enemy. If you hit the new enemy, you WIN! ; The commands look something like this: ; ; If h\i = alien ; cls ; print "You got poisoned" ; input ; end ; ElseIf h\i = friend ; cls ; print "You WIN!!" ; input ; end ; EndIf ; ; Try out this game: http://www.startinglinks.net/games/frogger.html ; It is called FROGGER. The goal is to get across the river ; without getting squashed or falline in the water. ; You can make a very simple version of this game as follows: ; ; (3) Make all the bugs start in a horizontal line, and all move at the ; same speed across the screen. This is like one lane of traffic ; in the FROGGER game. ; ; (4) Start the player at the bottom-center of the screen. ; End the game whenever the player's y-coordinate is less than 50. ; Add this to the moving() function: ; ; If p\y < 50 ; cls ; print "You WON!" ; input ; end ; EndIf ; ; (5) Add more rows of enemies - like more lanes of traffic. ; In each case, all the enemies in each row should move at the ; same speed. The various rows can have different speeds. ; Leave one row in the middle empty, so the frog can rest. ; ; (6) The "frog" cannot move down the screen, so remove the commands ; that move him downward. Also, the frog is very slow, so ; reduce the speed. ; ; (7) Make the game more challenging by placing the frog at the ; bottom left corner, and remove the left-arrow movement, ; so the frog can only move up and to the right.