Toi juttu ei oikein toiminu... Voisitko kattoo mikä on vikana??
Toi juttu ei oikein toiminu... voisitko kattoo mikä on vikana???
Code: Select all
FrameLimit 40
SetWindow "Zombie Madness",2
valikko:
While True
' painikkeista voi tällä tavalla tehdä ehtolauseita, koska ne palauttavat
' toden (true, 1) kun niitä on painettu. Tällöin ehtolausekkin muuttuu
' todeksi, ja silloin toteutetaan haluttu asia.
If button(10,10,100,20,"Start") Then Goto rata1
If button(10,40,100,20,"Exit") then end
DrawScreen
Wend
Function Button(x As integer,y As integer,w As integer,h As integer,t As String,s As integer = 5)
' painikkeen koodi
If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
If MouseDown(1) Then Color 200,200,200 Else Color 190,190,190
If MouseUp(1) Then Return True
Else
Color 220,220,220
EndIf
Box x+s,y,w-(s*2),h ' painikkeen pohja
Box x,y+s,w,h-(s*2)
Circle x,y,s*2
Circle x+w-s*2,y,s*2
Circle x+w-s*2,y+h-s*2,s*2
Circle x,y+h-s*2,s*2
' painikkeen otsikko
Color cbblack
CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
EndFunction
DrawScreen
rata1:
Type zombis'nimi
Field obj'objecti
Field hp'energiat
Field dmg'vahinko
Field speed'nopeus
Field score'pisteet
Field id'minkälainen zombie on
EndType
Type bullets'ammukset
Field obj
Field hp
Field dmg
Field speed
Field id
EndType
Type upgs'asepäivitykset
Field obj
Field hp
Field id
EndType
'ladataan media
gun_sound=LoadSound("media\gun 1.wav")
upg_sound=LoadSound("media\whip.wav")
enemy_sound=LoadSound("media\sheep.wav")
map=LoadMap("media\cdm2.til","media\tileset.bmp")
hero=LoadObject("media\hero.bmp",32)
zombi=LoadObject("media\guy.bmp",32)
cow=LoadObject("media\cow.bmp",32)
bullet=LoadObject("media\bullet.bmp",720)
upg=LoadObject("media\bullet.bmp")
topower=LoadObject("media\fireball.bmp")
tospeed=LoadObject("media\bigbullet.bmp")
medikit=LoadObject("media\tatti.bmp")
tähtäin=LoadObject("media\crosshair.bmp")
ShowObject topower,OFF
ShowObject tospeed,OFF
ShowObject bullet,OFF
ShowObject zombi,OFF
ShowObject cow,OFF
ShowObject medikit,OFF
If score > 20 Then Goto rata2
SetupCollision hero,map,1,4,2
hp=500'sinun energiat
powupg=34'Aseen aloitus teho
speedupg=100000000'aseen aloitus nopeus
Repeat''''''''''''''''''''''''''''''
If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero, KeyDown(CBKEYw)*6- KeyDown(CBKEYs)*4
TurnObject hero, KeyDown(CBKEYa)*5- KeyDown(CBKEYd)*5
'Aseet''''''''''''''''''''''''''''''''''''''''
PositionObject tähtäin,MouseWX(),MouseWY()
ShowMouse OFF
PointObject hero,tähtäin
If MouseHit(1) And reload<0
PlaySound gun_sound,40
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
newbullet\dmg=powupg
newbullet\speed=speedupg
CloneObjectPosition newBullet\obj,hero
CloneObjectOrientation newbullet\obj,hero
MoveObject newBullet\obj,24
reload=15
SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'llikutetaan luotia
Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
If uusi>220
newupg.upgS= New(upgS)'thdään uusi
newupg\obj=CloneObject(upg)
newupg\hp=100
newupg\id=Rand(1,3)
If Newupg\id=1 Then PaintObject newupg\obj,topower
If Newupg\id=2 Then PaintObject Newupg\obj,tospeed
If Newupg\id=3 Then PaintObject Newupg\obj,medikit
'Asetetaan tavara kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newupg\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
uusi=0
EndIf
uusi+1
For iupg.upgS= Each upgS'aloitetaan kaikkien päivitysten käsittely
If ObjectsOverlap(iupg\obj,hero) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
If iupg\hp<0 Then'jos tuhotaan tavara
PlaySound upg_sound'soitetaan ääni
If iupg\id=1 Then powupg+1'lisätään aseen thoa
If iupg\id=1 Then speedupg+1'nopeutta
If iupg\id=3 Then hp+50'lisä
DeleteObject iupg\obj'poistetaan tavara
Delete iupg'ja sen jasen
EndIf
Next iupg
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
newzombi.zombiS= New(zombiS)
newzombi\obj=CloneObject(zombi)
'Asetetaan vihollinen kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
newzombi\id=Rand(1,2)
If newzombi\id =1'Ykkös zombi
newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
EndIf
If newzombi\id =2'kakkos zombi
PaintObject newzombi\obj,cow
newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
EndIf
SetupCollision newzombi\obj,map,1,4,2
luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle'jos kosketaan deinään, niin stepataan
PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg
For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
DeleteObject iBullet\obj
Delete iBullet
EndIf
Next ibullet
MoveObject izombi\obj,izombi\speed'liikutetaan zombia nopeutensa verran
If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
PlaySound enemy_sound
score+izombi\score
DeleteObject izombi\obj
Delete izombi
EndIf
Next izombi
EndIf
DrawGame'ettei teksti jää kartan alle
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If hp<0 Or hp<-1 Or hp<-2 Or hp<-3 Or hp<-4 Or hp<-5 Then Goto valikko
DrawScreen
Forever
rata2:
map=LoadMap("media\map2.til","media\tileset.bmp")
ShowObject topower,OFF
ShowObject tospeed,OFF
ShowObject bullet,OFF
ShowObject zombi,OFF
ShowObject cow,OFF
ShowObject medikit,OFF
If score=500 Then Goto valikko
SetupCollision hero,map,1,4,2
hp=500'sinun energiat
powupg=34'Aseen aloitus teho
speedupg=100000000'aseen aloitus nopeus
Repeat''''''''''''''''''''''''''''''
If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero, KeyDown(CBKEYw)*6- KeyDown(CBKEYs)*4
TurnObject hero, KeyDown(CBKEYa)*5- KeyDown(CBKEYd)*5
'Aseet''''''''''''''''''''''''''''''''''''''''
PositionObject tähtäin,MouseWX(),MouseWY()
ShowMouse OFF
PointObject hero,tähtäin
If MouseHit(1) And reload<0
PlaySound gun_sound,40
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
newbullet\dmg=powupg
newbullet\speed=speedupg
CloneObjectPosition newBullet\obj,hero
CloneObjectOrientation newbullet\obj,hero
MoveObject newBullet\obj,24
reload=15
SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'llikutetaan luotia
Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
If uusi>220
newupg.upgS= New(upgS)'thdään uusi
newupg\obj=CloneObject(upg)
newupg\hp=100
newupg\id=Rand(1,3)
If Newupg\id=1 Then PaintObject newupg\obj,topower
If Newupg\id=2 Then PaintObject Newupg\obj,tospeed
If Newupg\id=3 Then PaintObject Newupg\obj,medikit
'Asetetaan tavara kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newupg\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
uusi=0
EndIf
uusi+1
For iupg.upgS= Each upgS'aloitetaan kaikkien päivitysten käsittely
If ObjectsOverlap(iupg\obj,hero) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
If iupg\hp<0 Then'jos tuhotaan tavara
PlaySound upg_sound'soitetaan ääni
If iupg\id=1 Then powupg+1'lisätään aseen thoa
If iupg\id=1 Then speedupg+1'nopeutta
If iupg\id=3 Then hp+50'lisä
DeleteObject iupg\obj'poistetaan tavara
Delete iupg'ja sen jasen
EndIf
Next iupg
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
newzombi.zombiS= New(zombiS)
newzombi\obj=CloneObject(zombi)
'Asetetaan vihollinen kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
newzombi\id=Rand(1,2)
If newzombi\id =1'Ykkös zombi
newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
EndIf
If newzombi\id =2'kakkos zombi
PaintObject newzombi\obj,cow
newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
EndIf
SetupCollision newzombi\obj,map,1,4,2
luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle'jos kosketaan deinään, niin stepataan
PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg
For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
DeleteObject iBullet\obj
Delete iBullet
EndIf
Next ibullet
MoveObject izombi\obj,izombi\speed'liikutetaan zombia nopeutensa verran
If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
PlaySound enemy_sound
score+izombi\score
DeleteObject izombi\obj
Delete izombi
EndIf
Next izombi
EndIf
DrawGame'ettei teksti jää kartan alle
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If hp<0 Or hp<-1 Or hp<-2 Or hp<-3 Or hp<-4 Or hp<-5 Then Goto valikko
DrawScreen
Forever