Code: Select all
'----------------------------------------------------------------
' Viikatemies 1
'----------------------------------------------------------------
Type VIHOLLISET
Field obj'objecti
Field hp'energiat
Field dmg'vahinko
Field speed'nopeus
Field score'pisteet
Field id'minkälainen zombie on
End Type
Type BULLETS
Field obj
Field hp
Field dmg
Field speed
Field id
End Type
Type upgs'asepäivitykset
Field obj
Field hp
Field id
EndType
SCREEN 800,800
FrameLimit 40
SetWindow "Viikatemies1",0,"oletko varma?"
/////////////////////////////////////////////////////////////////
valikko:
ClearText
kuva = LoadImage ("c:\viikatemies\valikko.png")
uusi = LoadObject("c:\viikatemies\uusi peli.png")
PositionObject uusi,150,30
poistu = LoadObject("c:\viikatemies\poistu.png")
PositionObject poistu,-150,-30
ohjeet = LoadObject("c:\viikatemies\ohjeet.png")
PositionObject ohjeet,-200,200
hiiri = LoadObject("c:\viikatemies\hiiri.png")
ClearText
Repeat
DrawImage kuva,0,0
PositionObject hiiri,MouseWX(),MouseWY()
ShowMouse OFF
If ObjectsOverlap(hiiri,uusi) And MouseHit(1) Then Goto alkutekstit
If ObjectsOverlap (hiiri,poistu) And MouseHit(1) Then End
If ObjectsOverlap (hiiri,ohjeet) And MouseHit(1) Then Goto ohjeet
ClearText
DrawScreen
Forever
/////////////////////////////////////////////////////////////////
ohjeet:
arial=LoadFont("arial",20)
Repeat
DrawImage kuva,0,0
ClearObjects
Color cbred
SetFont arial
Text 1,1,"OHJEET PELAAMISEEN"
Text 1,50,"W kävellään eteenpäin"
Text 1,100,"S kävellään taaksepäin"
Text 1,150,"A liikutetaan viikatetta"
Text 1,200,"D liikutetaan viikatetta"
Text 1,250,"Hiiren oikealla ammutaan"
Text 1,300,"Hiirellä käännetään ukkoa"
Text 1,350,"I avataan inventory"
Text 1,400,"Punaiset Pullot parantavat"
Text 1,450,"Siniset Pullot lisäävät voimaa"
Text 1,500,"Vihreät Pullot lisäävät nopeutta"
Text 1,550,"Peli pysäytetään P:llä"
Color cbblack
Text 1,600,"Paina Enteriä niin pääset valikkoon takaisin"
If KeyDown (28) Then Goto valikko Then ClearText ' 28 = enter
DrawScreen
Forever
/////////////////////////////////////////////////////////////////
alkutekstit:
plusx = 1
arial=LoadFont("arial",20)
kuva2= LoadImage ("c:\viikatemies\kuva.png")
Repeat
DrawImage kuva2,0,0
ClearObjects 'poistaa valikon kuvat
Color cbWhite
Text x,150,"Tämä teksti pitää kirjoittaa joka kerta"
SetFont arial
Color cbRed
Text 100,750,"Enteristä pääset peliin"
If KeyHit(28) Then Goto peli '28 = enter
DrawScreen
Forever
/////////////peli alkaa tästä////////////////////////////////////
'->
peli:
kartta = LoadMap("c:\viikatemies\testi.til","c:\viikatemies\TILESET.png")
kartta2 = LoadMap("c:\viikatemies\testi2.til","c:\viikatemies\TILESET.png")
ukko = LoadObject ("c:\viikatemies\viikatemies.png",72)
SetupCollision ukko, kartta, 1, 4, 2
PositionObject ukko,150,200
RotateObject ukko,270
bullet=LoadObject("c:\viikatemies\myrkkypallo.png",72)
ShowObject bullet,OFF
vihu1 = LoadObject ("c:\viikatemies\ukkeli1.bmp",72) : ShowObject vihu1,OFF
vihu2 = LoadObject ("c:\viikatemies\ukkeli2.bmp",72) : ShowObject vihu2,OFF
cow = LoadObject ("c:\viikatemies\viikatemies.png",32) : ShowObject cow,OFF
upg=LoadObject ("c:\viikatemies\myrkkypallo.png") : ShowObject upg,OFF
topower=LoadObject ("c:\viikatemies\esine2.png") : ShowObject topower,OFF
tospeed=LoadObject ("c:\viikatemies\esine3.png") : ShowObject tospeed,OFF
medikit=LoadObject ("c:\viikatemies\esine1.png") : ShowObject medikit,OFF
viikate = LoadObject("c:\viikatemies\viikate2.png",18)
hiiri = LoadObject("c:\viikatemies\hiiri.png")
hp=2000'sinun energiat
powupg=12'Aseen aloitus teho
speedupg=5'aseen aloitus nopeus
Repeat
ClearText
DeleteFont arial
While True
If pause Then
PositionObject hiiri,MouseWX(),MouseWY()'sijoitetaan tähtäin hiiten koordinaatteihin
PointObject ukko,hiiri'käännetään ukko tähtäimeen
If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition ukko
MoveObject ukko,UpKey()*6-DownKey()*4
TurnObject ukko,LeftKey()*5-RightKey()*5
'Ukon ohjaus
If KeyDown(17) Then MoveObject ukko,2' 17 = W
If KeyDown(31) Then MoveObject ukko,-2' 31 =S
If KeyDown(cbkeyA) Then viikateangle = wrapangle(viikateangle + 10)
If KeyDown(cbkeyD) Then viikateangle = wrapangle(viikateangle - 10)
CloneObjectPosition viikate,ukko
RotateObject viikate, viikateangle + objectangle(ukko)
UpdateGame
CloneCameraPosition ukko
'Ammu-systeemi. Vain, jos ase on ladattu
If MouseHit (1) And reload<0
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
newbullet\dmg=powupg
newbullet\speed=speedupg
CloneObjectPosition newBullet\obj,ukko
CloneObjectOrientation newbullet\obj,ukko
MoveObject newBullet\obj,24
reload=15
SetupCollision newbullet\obj,kartta,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,ukko) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
If iupg\hp<0 Then'jos tuhotaan tavara
If iupg\id=1 Then powupg+1'lisätään aseen tehoa
If iupg\id=1 Then speedupg+1'nopeutta
If iupg\id=3 Then hp+50'lisää energiaa
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.VIHOLLISET= New(VIHOLLISET)
newzombi\obj=CloneObject(vihu1)
If ObjectSight (Newzombi\obj,ukko) And reload<0
PointObject Newzombi\obj,ukko
newBullet2.BULLETS= New(BULLETS)
newBullet2\obj=CloneObject(bullet)
newbullet2\dmg=powupg
newbullet2\speed=speedupg
CloneObjectPosition newBullet2\obj,Newzombi\obj
CloneObjectOrientation newbullet2\obj,Newzombi\obj
MoveObject newBullet2\obj,24
reload=15
SetupCollision newbullet2\obj,kartta,1,4,2
EndIf
reload-1
For iBullet2.BULLETS= Each BULLETS
If CountCollisions(ibullet2\obj) Then ibullet2\hp-32
MoveObject iBullet2\obj,6'llikutetaan luotia
Next iBullet2
'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,kartta,1,4,2
luo=0
EndIf
luo+1
For izombi.VIHOLLISET= Each VIHOLLISET'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,ukko'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,ukko) 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,ukko)>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 ObjectsOverlap (viikate,izombi\obj) Then izombi\hp-1
If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
score+izombi\score
DeleteObject izombi\obj
Delete izombi
EndIf
Next izombi
EndIf
DrawGame
Text 0,0,FPS()
Color cbred
Text 40,40,Date()
Text 40,60,Time() 'kello
Text 10,15,"HP "+hp
Text 10,25,"Pisteet "+score
If hp<0 Then MakeError ("KUOLIT!")
Else
DrawGame
Text 0,0,"Paina P:tä niin pause pois"
EndIf
If KeyDown(cbkeyP) Then pause = Not pause
DrawScreen
Wend
DrawScreen
Forever
sanokaa olenko sisentänyt alkua oikein? (ainakin yritin) ja ongelmat joku ampuu näkymätön hahmo ampuu oikeiden vihujen sijasta ja kentän vaihto on mennyt pieleen kun se aukasee suoraan kartta2 1 sijaan ja onko tuo piste juttu edes oikein tehty?
koodi taitaa olla aikamoista luettavaa..