TGC Codebase Backup



space invader application by Anonymous Coder

11th Mar 2009 18:08
Summary

game space invader sprite application



Description



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem Project: spaceinvader02
Rem Created: , March 11, 2009

Rem ***** Main Source File *****
rem
sync on
sync rate 100
rem
// backdrop on
autocam on
set dir "media"
randomize timer()
global false as integer 
global true as integer 
type _map01
nmap as integer
posx as integer
posy as integer
numspr as integer
numshot as integer
flghide as integer
endtype
type _ripp
nmap as integer
posx as integer
posy as integer
numspr as integer
flghide as integer
endtype
type _mshot
nmap as integer
posx as integer
posy as integer
numspr as integer
flghide as integer
flgtemp as integer
endtype
global dim mshot(14) as  _mshot
global dim ripp1(10,14) as _ripp
global dim ripp2(10,14) as _ripp
global dim ripp3(10,14) as _ripp
global dim ripp4(10,14) as _ripp
global dim map01(7,15) as _map01
global comtimer as dword
global comt as dword
global dim levelgame(7) as integer
global playgame as integer
global score as integer=0
global level as integer=1
global lvl as integer=3
global v as integer=75
global vie as integer=v
global flgend as integer=false
global flg3600 as integer=false
global flg8400 as integer=false
global flg14400 as integer=false
global flg21600 as integer=false
rem

rem
rem ====================================
gosub ldimg
gosub defmap

rem ========================
rem
rem =====================loop
rem
do
cls
loop music 1
gosub displaygame
// play music 1
sync
loop
end
rem ===============================


mapp04:
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
ripp01:
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
data 0,1,1,1,1,1,0,0,1,1,1,1,1,0
data 0,1,1,1,1,1,0,0,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
mapshot:
data 0,1,1,1,1,1,1,1,1,1,1,1,1,0
rem
rem ================================
ldimg:
load image "Cyn.png",1
load image "e14.png",2
load image "shot1011.png",3
load image "rip01.png",4
load image "fire1.png",5
load image "s15.png",6
load music "music.mp3",1
load sound "die.wav",2
load sound "shotimpulse.wav",3
load sound "explosion1.wav",4
gosub setsprite
return
 setsprite:
 sprite 2,0,0,2
 hide sprite 2
 set sprite 2,1,1
  sprite 6,0,0,6
 hide sprite 6
 set sprite 6,1,1
  sprite 5,0,0,5
 hide sprite 5
 set sprite 5,1,1
 sprite 4,0,0,4
 hide sprite 4
 set sprite 4,1,1
  sprite 3,0,0,3
 hide sprite 3
 set sprite 3,1,1
 clone sprite 3,10
 clone sprite 3,11
 return
rem
rem
Rem ***** Included Source File *****
rem ==============================
defmap:
gosub defvar
gosub defe14
gosub defripp
gosub defmshot
return
rem ===================================
defmshot:
restore mapshot
for k=1 to 14
read a
mshot(k).nmap=a
mshot(k).posx=k
mshot(k).flghide=false
mshot(k).flgtemp=false
if a<>0
mshot(k).numspr=4000+k
clone sprite 6,mshot(k).numspr
endif
next k
return
rem ==================defvar==============================
defvar:
false=0
true=-1
for k=1 to 7
levelgame(k)=false
next k
playgame=false
yyy=0
yshot=0
xshot=0
zzz=0
xxx=0
kx=0
kkk=0
kend=0
 flgtimer=false
ky=0
sk=0

return
rem ============================================
 defe14:
 zzz=0
restore mapp04
for k=1 to 7
for j=1 to 14
read a
map01(k,j).nmap=a
map01(k,j).posx=j
map01(k,j).posy=k
map01(k,j).flghide=false
if a=1
inc zzz,1
inc zzzz,1
map01(k,j).numspr=zzz+1000

endif
//  set cursor j*30,k*30
//  print map01(k,j).posx
next j
next k
rem ============
for k=1 to 7
for j=1 to 14
if map01(k,j).nmap<>0
clone sprite 2,map01(k,j).numspr

//  set cursor j*40,k*30
//  print map01(k,j).numspr
endif
next j
next k
 return
 rem ==========================================
 defripp:
 xxx=40
zzz=0
restore ripp01
for k=1 to 10
for j=1 to 14
read a
ripp1(k,j).nmap=a
ripp1(k,j).posx=j*5+xxx
ripp1(k,j).posy=k*10+350
ripp1(k,j).flghide=0
if a=1
inc zzz,1
ripp1(k,j).numspr=zzz+3000
clone sprite 4,ripp1(k,j).numspr
endif
ripp2(k,j).nmap=a
ripp2(k,j).posx=j*5+140+xxx
ripp2(k,j).posy=k*10+350
ripp2(k,j).flghide=0
if a=1
inc zzz,1
ripp2(k,j).numspr=zzz+3000
clone sprite 4,ripp2(k,j).numspr
endif
ripp3(k,j).nmap=a
ripp3(k,j).posx=j*5+325+xxx
ripp3(k,j).posy=k*10+350
ripp3(k,j).flghide=0
if a=1
inc zzz,1
ripp3(k,j).numspr=zzz+3000
clone sprite 4,ripp3(k,j).numspr
endif
ripp4(k,j).nmap=a
ripp4(k,j).posx=j*5+480+xxx
ripp4(k,j).posy=k*10+350
ripp4(k,j).flghide=0
if a=1
inc zzz,1
ripp4(k,j).numspr=zzz+3000
clone sprite 4,ripp4(k,j).numspr
endif
//  set cursor j*35,k*35
//  print ripp2(k,j).numspr
next j
next k
rem
 return
 rem
 rem =======================================display
 rem
 displaygame:
 play music 1
if playgame=false
gosub  playonoff
endif
cls
// sync

 gosub dise14
 play music 1
 gosub disshot
  gosub disripp
 gosub cylon
 gosub collision
gosub collisionripp
gosub collisionshot
gosub endgamelevel
 gosub texttext
play music 1
 return
 rem ==========================================
 playonoff:
 cls
sync
if flgend = false
   text 400,10,"by vitaluciano@hotmail.fr"
set text size 50
text 20,20,"space invader "
set text size 25
text 10,80,"mouse move Cylon chip and click left fire"
if score<3600
s99$="Level 1  Score 0000  "+"Life "+str$(vie)
endif
text 10,150,s99$
text 10,450,"press a key to start.............."
// sync
endif
1001:
if flgend = true
flgend = false
   text 400,10,"by vitaluciano@hotmail.fr"
set text size 50
text 20,20,"space invader "
text 50,100,"game over"
set text size 25
text 10,180,s100$
text 10,220,"Your Score "+str$(yscore)
text 10,450,"press a key to start.............."
// sync
endif
sync
wait key
 playgame=true
 return
 rem =====================================
 texttext:
//  text 400,10,str$(mousex())+" "+str$(mousey())
//   text 400,20,str$(aa)+" "+str$(bb)
   text 400,10,"by vitaluciano@hotmail.fr"
s1$="Space Invader "
s2$="level "
s3$=str$(level)+" "
s4$="Score "
s5$=str$(score)+" "
s6$="Life "
s7$=str$(vie)+" "
text 10,10,s1$+s2$+s3$+s4$+s5$+s6$+s7$

 return
 rem =====================================
  disshot:
  play music 1
  for j=1 to 14
  if mshot(j).nmap=1 and mshot(j).flghide=false
    show sprite mshot(j).numspr
  inc yyy,1
  if yyy>475
   yyy=yshot
   for k=1 to 14
   mshot(k).flgtemp=false
   next k
   endif
   if   mshot(j).flgtemp=false
   sprite mshot(j).numspr,j*40+kx+19,yyy,6
   endif
  endif
  next j
  return
  rem =================================================
 disripp:
 play music 1
 for k=1 to 10
for j=1 to 14
if ripp1(k,j).nmap<>0 and ripp1(k,j).flghide=false
sprite ripp1(k,j).numspr,ripp1(k,j).posx,ripp1(k,j).posy,4
show sprite ripp1(k,j).numspr
endif
if ripp2(k,j).nmap<>0 and ripp2(k,j).flghide=false
sprite ripp2(k,j).numspr,ripp2(k,j).posx,ripp2(k,j).posy,4
show sprite ripp2(k,j).numspr
endif
if ripp3(k,j).nmap<>0 and ripp3(k,j).flghide=false
sprite ripp3(k,j).numspr,ripp3(k,j).posx,ripp3(k,j).posy,4
show sprite ripp3(k,j).numspr
endif
if ripp4(k,j).nmap<>0 and ripp4(k,j).flghide=false
sprite ripp4(k,j).numspr,ripp4(k,j).posx,ripp4(k,j).posy,4
show sprite ripp4(k,j).numspr
endif
next j
next k
 return
 rem =============================================
 dise14:

gosub calctimer

for k=0 to lvl-1
lk=k+1
for j=1 to 14
if lk=1 and  map01(1,j).nmap=1
mshot(j).flghide=map01(lk,j).flghide
if mshot(j).flghide=true
sprite mshot(j).numspr,0,0,6
hide sprite mshot(j).numspr 
endif
yshot=lk*40+kkk
xshot=j*40+kx
endif
if map01(lk,j).nmap=1
if map01(lk,j).flghide=false

sprite map01(lk,j).numspr,j*40+kx,lk*40+kkk,2
show sprite map01(lk,j).numspr
kend=lk*40+kkk

endif
endif
next j
next k
 return
 rem =============================================
calctimer:
if flgtimer=false
comtimer=timer()+750
flgtimer=true
inc kkk,3
if kkk mod 4=0
kx=0
ky=kkk
endif
if kkk mod 4=1
kx=-40
ky=kkk
endif
if kkk mod 4=2
kx=40
ky=kkk
endif

endif
comt=timer()
if comt>=comtimer then flgtimer=false

return

 rem
 rem =======================================cylon
 rem
 cylon:
sprite 1,mousex(),430,1
show sprite 1
if mousex()>600
sprite 1,600,430,1
endif
if mouseclick()
if sk<1 then sk=435
skx1=mousex()+8
skx2=mousex()+26
play sound 3
endif
dec sk,10
sprite 10,skx1,sk,3
show sprite 10
// move sprite 10,17
sprite 11,skx2,sk,3
show sprite 11
// move sprite 11,17
return
rem =======================================
collision:
num1=sprite collision(10,0)
num2=sprite collision(11,0)
if num1>1000 and num1<2000 or num2>1000 and num2<2000
if num1=num2
 num=num1
 sk=0
 gosub collision01
 else
  if num1<>0
       num=num1
       sk=0
        gosub collision01
     endif
 //  else 
   if num2<>0
     num=num2
     sk=0
        gosub collision01
   endif
//  endif
 endif
 endif
return
rem =============================================
collision01:
for k=1 to lvl
for j=1 to 14
if num=map01(k,j).numspr 
aa=map01(k,j).posx
bb=map01(k,j).posy
sprite map01(k,j).numspr,0,0,2 
hide sprite map01(k,j).numspr 
map01(k,j).flghide=true
paste sprite 5,j*40+kx,k*40+kkk
play sound 4
inc score,100
// show sprite 5
endif
next j
next k
return
rem ===========================================
collisionripp:
nrip1=sprite collision(10,0)
nrip2=sprite collision(11,0)
if nrip1>3000 and nrip1<4000 or nrip2>3000 and nrip2<4000
if nrip1<>0
sk=0
nrip=nrip1
gosub collisionrip01
endif
if nrip2<>0
sk=0
nrip=nrip2
gosub collisionrip01
endif
endif
return
rem ======================================
collisionrip01:
aa=0
bb=0
for k=1 to 10
for j=1 to 14
if nrip=ripp1(k,j).numspr
sprite ripp1(k,j).numspr,0,0,4
hide sprite ripp1(k,j).numspr
ripp1(k,j).flghide=true
endif
if nrip=ripp2(k,j).numspr
sprite ripp2(k,j).numspr,0,0,4
hide sprite ripp2(k,j).numspr
ripp2(k,j).flghide=true
endif
if nrip=ripp3(k,j).numspr
sprite ripp3(k,j).numspr,0,0,4
hide sprite ripp3(k,j).numspr
ripp3(k,j).flghide=true
endif
if nrip=ripp4(k,j).numspr
sprite ripp4(k,j).numspr,0,0,4
hide sprite ripp4(k,j).numspr
ripp4(k,j).flghide=true
endif
next j
next k
return
rem ===========================================
collisionshot:
for j=1 to 14
if mshot(j).numspr<>0
nsh=sprite collision(mshot(j).numspr,0)
if nsh>3000 and nsh<4000
sprite mshot(j).numspr,0,0,6
hide sprite mshot(j).numspr
 mshot(j).flgtemp=true
endif
endif
if nsh=1
hide sprite 1
paste sprite 5,mousex(),450
play sound 2
dec vie,1
endif
next j
return
rem ============================================
endgamelevel:
if kend>350 
playgame=false
vie=v
yscore=score
score=0
s100$="Space Invader win Cylon base"
flg3600=false
flg8400=false
flg14400=false
flg21600=false
gosub defvar
gosub restoremap
gosub restoreripp
gosub restoreshot
level=1
lvl=3
flgend=true
cls
endif
if vie=0 or vie<0
s100$="Space Invader win Cylon base"
playgame=false
vie=v
yscore=score
score=0
flg3600=false
flg8400=false
flg14400=false
flg21600=false
gosub defvar
gosub restoremap
gosub restoreripp
gosub restoreshot
level=1
lvl=3
flgend=true
cls
endif
if score=3600 and flg3600=false
flg3600=true

playgame=false
level=2
lvl=4
vie=vie+10
s99$="Level 2  Score 3600  "+"Life "+str$(vie)
gosub resgrup
endif
if score=8400 and flg8400=false
flg8400=true
vie=vie+15
s99$="Level 3  Score 8400  "+"Life "+str$(vie)
playgame=false
level=3
lvl=5
gosub resgrup
endif
if score=14400 and flg14400=false
flg14400=true
vie=vie+20
s99$="Level 4  Score 14400  "+"Life "+str$(vie)
playgame=false
level=4
lvl=6
gosub resgrup
endif
if score=21600 and flg21600=false
bonus=0
flg21600=true
s100$="Cylon base win Space Invader"
playgame=false
level=1
lvl=3
yscore=score
score=0
flg3600=false
flg8400=false
flg14400=false
flg21600=false
gosub resgrup
flgend=true
vie=v
endif
return
rem =============================
resgrup:
gosub defvar
gosub restoremap
gosub restoreripp
gosub restoreshot
return
rem ========================
restoremap:
for k=1 to 7
for j=1 to 14
 map01(k,j).flghide=false
if map01(k,j).nmap=1
sprite map01(k,j).numspr,0,0,2
hide sprite map01(k,j).numspr
endif
next j
next k
return
rem ========================
restoreripp:
for k=1 to 10
for j=1 to 14
ripp1(k,j).flghide=0
ripp2(k,j).flghide=0
ripp3(k,j).flghide=0
ripp4(k,j).flghide=0
next j
next k
return
rem ===============================
restoreshot:
for k=1 to 14
mshot(k).flghide=false
mshot(k).flgtemp=false
next k
return
rem