TGC Codebase Backup



Space Swarm by MonoCoder

23rd Apr 2006 17:50
Summary

2D game. Shoot stuff.



Description

Old game from ages ago, decided to spend half an hour finishing it and such. enjoy. shoot the aliens and shrink them to death while protecting your base shields.



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem Project: Space Swarm
Rem Created: 21/02/2005 16:09:11
Rem By Thomas Knowles. Yay.

Sync On
Sync Rate 0
Fastsync
Hide mouse
Backdrop Off
Dim EData(5000,2)
Dim WinDisplay(200,6)
Draw to Front

Load Image "AlienLarge.bmp",1,1
Load Image "AlienMedium.bmp",2,1
Load Image "AlienSmall.bmp",3,1
Load Image "Base.bmp",4,1
Load Image "BaseShield.bmp",5,1

Sprite 1,288,447,4
Sprite 2,272,431,5
Sprite 2,320,480,5
Offset sprite 2,48,48

For n=3 to 10
Sprite n,rnd(570),rnd(410),1
Set sprite n,0,1
EData(n,1)=rnd(1)
EData(n,2)=rnd(1)
If EData(n,1)=0 then Mirror Sprite n
Next n

TotalEnemies=8
NextSprite=11
Shields=20
shieldangle#=0

Do
Set cursor 0,0
Print "ENEMIES REMAINING = ",TotalEnemies
Print "SCORE = ",Score
Print "SHIELDS = ",Shields

Inc EnemyMove
If EnemyMove=2
For n=3 to 5000
If Sprite Exist(n)>0
OldDir=EData(n,1)
speed=1+(Sprite Image(n)/3)
If EData(n,1)=0 then Sprite n,Sprite x(n)-speed,Sprite y(n),Sprite Image(n) else Sprite n,Sprite x(n)+speed,Sprite y(n),Sprite Image(n)
If EData(n,2)=0 then Sprite n,Sprite x(n),Sprite y(n)-speed,Sprite Image(n) else Sprite n,Sprite x(n),Sprite y(n)+speed,Sprite Image(n)
If Sprite x(n)<0 then EData(n,1)=1 : Sprite n,1,Sprite y(n),Sprite Image(n)
If Sprite y(n)<0 then EData(n,2)=1 : Sprite n,Sprite x(n),1,Sprite Image(n)
If Sprite x(n)>639-Sprite Width(n) then EData(n,1)=0 : Sprite n,638-Sprite Width(n),Sprite y(n),Sprite Image(n)
If Sprite y(n)>479-Sprite Height(n) then EData(n,2)=0 : Sprite n,Sprite x(n),478-Sprite Height(n),Sprite Image(n)
If EData(n,1)<>OldDir then Mirror Sprite n
If Invulnerable=0 and Sprite x(n)>Sprite x(1)-Sprite Width(n) and Sprite y(n)>Sprite y(1)-Sprite height(n) and Sprite x(n)+Sprite Width(n)<Sprite x(1)+Sprite Width(1) then invulnerable=20 : Shields=Shields-1
If Mouseclick()=1 and (MClick=0 or MClick=2)=1
   If Mousex()>Sprite x(n)-20 and Mousey()>Sprite y(n)-20 and Mousex()<Sprite x(n)+Sprite Width(n)+20 and Mousey()<Sprite y(n)+Sprite Height(n)+20
      If Sprite Image(n)<3
      OldDir=EData(n,1)
      If Sprite Image(n)=1 then Score=Score+20
      If Sprite Image(n)=2 then Score=Score+40
      Sprite NextSprite,Sprite x(n)+Sprite Width(n),Sprite y(n),Sprite Image(n)+1
      Sprite NextSprite+1,Sprite x(n),Sprite y(n)+Sprite Height(n),Sprite Image(n)+1
      Sprite NextSprite+2,Sprite x(n)+Sprite Width(n),Sprite y(n)+Sprite Height(n),Sprite Image(n)+1
      Sprite n,Sprite x(n),Sprite y(n),Sprite Image(n)+1
      EData(NextSprite,1)=1 : EData(NextSprite,2)=0
      EData(NextSprite+1,1)=0 : EData(NextSprite+1,2)=0
      EData(NextSprite+2,1)=1 : EData(NextSprite+2,2)=0
      EData(n,1)=0 : EData(n,2)=0
      If EData(n,1)=0 and EData(n,1)<>OldDir then Mirror Sprite n
      If EData(nextsprite,1)=0 then Mirror Sprite nextsprite
      If EData(nextsprite+1,1)=0 then Mirror Sprite nextsprite+1
      If EData(nextsprite+2,1)=0 then Mirror Sprite nextsprite+2
      Set sprite n,0,1
      Set sprite nextsprite,0,1
      Set sprite nextsprite+1,0,1
      Set sprite nextsprite+2,0,1
      NextSprite=NextSprite+3
      TotalEnemies=TotalEnemies+3
      Else
      Delete Sprite n
      TotalEnemies=TotalEnemies-1
      Score=Score+60
      Endif
   Endif
   Mx=Mousex()
   My=Mousey()
   LineShow=40
   Blastr=0
MClick=2
Endif
Endif
Next n
EnemyMove=0
Endif
If MClick=2 then MClick=1
If Mouseclick()=0 then MClick=0

If Invulnerable>0 then dec Invulnerable
If Shields=>0 then Set Sprite Alpha 2,Shields*8
shieldangle#=wrapvalue(shieldangle#+1)
stretch sprite 2,100+(cos(shieldangle#)*10),100+(sin(shieldangle#)*5)

Rem Basic2D Display
If Lineshow>0
Line 320,456,Mx,My
Circle Mx,My,Blastr
inc Blastr,1
dec Lineshow
Endif
line 0,0,639,0
line 639,0,639,479
line 639,479,0,479
line 0,479,0,0
Circle Mousex(),Mousey(),10

If Shields=<0 then goto Game_over
If TotalEnemies=<0 then goto Game_Won

Sync
cls 0
Loop


Game_Over:
Repeat
For n=3 to 5000
If Sprite Exist(n)>0 and EShot#=0
If rnd(500)=1
EShot#=30
Beamx=Sprite x(n)+(Sprite Width(n)/2)
Beamy=Sprite y(n)+(Sprite Width(n)/2)
targetx=300+rnd(40)
targety=455+rnd(10)
Endif
Endif
Next n
Center Text Screen Width()/2,Screen Height()/2,"GAME OVER! PRESS ENTER"
If EShot#>0
Line targetx,targety,Beamx,Beamy
Circle targetx,targety,31-EShot#
Dec EShot#,0.5
Endif
n=3+rnd(4997)
If Sprite Exist(n)>0 then Line 300+rnd(40),455+rnd(10),Sprite x(n),Sprite y(n)
Sync
cls 0
Until Returnkey()=1
Ink rgb(255,40,40),0
For n=1 to 500
For o=3 to 5000
If Sprite Exist(o)>0
If Sprite x(o)<320 then Sprite o,Sprite x(o)-2,Sprite y(o)-1,Sprite image(o)
If Sprite x(o)=>320 then Sprite o,Sprite x(o)+2,Sprite y(o)-1,Sprite image(o)
Endif
Next o
For p=1 to n
Circle 320,460,p
Next p
Sync
cls 0
Next n
END


Game_Won:
Repeat
For n=1 to 200
If rnd(60)=0 and windisplay(n,3)=0
windisplay(n,1)=rnd(640)
windisplay(n,2)=rnd(480)
windisplay(n,3)=1
windisplay(n,4)=rnd(255)
windisplay(n,5)=rnd(255)
windisplay(n,6)=rnd(255)
Endif
If windisplay(n,3)>0
windisplay(n,3)=windisplay(n,3)+1*1.1
If windisplay(n,3)=>500 then windisplay(n,3)=0
Ink rgb(windisplay(n,4),windisplay(n,5),windisplay(n,6)),0
Circle windisplay(n,1),windisplay(n,2),windisplay(n,3)
Endif
Next n
Center Text Screen Width()/2,Screen Height()/2,"YOU WIN! PRESS ENTER"
Sync
cls 0
Until Returnkey()=1
END