ukkeli wrote:teen räiskintä peliä mutta tulee mav voitteko auttaa
ja kiitos etukäteen tässä koodi
1. Tervetuloa foorumeille!
2. Käytähän Code-tageja.
Code: Select all
Type AMMUS
Field obj
End Type
Type vihut
Field obj
End Type
FrameLimit 60
ukko=LoadObject("Media\soldier.bmp",370)
SetupCollision ukko,map ,1,4,2
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
ammo=LoadSound("media\gun 7.wav")
enemy=LoadObject("Media\guy.bmp",370)
Repeat
CloneCameraPosition ukko
If LeftKey() Then TurnObject ukko, 4
If RightKey() Then TurnObject ukko, -4
If UpKey() Then MoveObject ukko, 5
If DownKey() Then MoveObject ukko, -5
If KeyDown(cbkeyspace) And reload=0 Then
PlaySound ammo
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
reload=6
End If
If reroad>0 Then reload=reload-1
MoveObject luoti\obj,10
For luoti.AMMUS = Each AMMUS
Next luoti
If Timer() = aik=0 Then
vihu.vihut = New(vihut)
vihu\obj=CloneObject (enemy)
PositionObject vihu\obj,Rand(0,100),Rand(0,100)
End If
PointObject vihu\obj,ukko
MoveObject vihu\obj,4
For vihu.vihut = Each vihut
Next vihu
If ObjectsOverlap (vihu\obj,luoti\obj) Then
DeleteObject luoti\obj
DeleteObject vihu\obj
Delete luoti
Delete vihu
End If
DrawScreen
Forever
Noin, koodi vie paljon vähemmän tilaa ja on pr0silver-teemassa helppo valita kokonaan painamalla Valitse kaikki.
3. Olet selvästi yrittänyt tehdä koodin itse sen sijaan, että copypastaisit esimerkeistä. Hienoa! Pari hommaa on kuitenkin vähän hassusti:
- Jos käyttäisit sisennyksiä, ongelma olisi paljon helpompi etsiä.
- Se on EndIf, ei End If. Jossain päin manuaalia tai esimerkkejä muistaakseni lukee, että oikea muoto olisi End If, mutta tämä info on virheellistä.
- En käsitä, mitä If Timer() = aik = 0 tarkoittaa, mutta oletan sen tarkoittavan jonkinsorttista ajastinta (joka kannattaa muuten yleensä toteuttaa mielummin randomilla kuin ajastimella).
- Jos tyyppien jäseniä yritetään käyttää For-looppien ulkopuolella, ohjelma MAVittaa, koska ei tajua niiden olevan tyyppien jäseniä - ja tässäpä se varsinainen ongelma olikin.
Tosin, vaikka olenkin saanut kaikki ongelmat korjattua, kuvioihin astui Beta kympin eeppisin feature: MysteeriMAV! SetWindow "Toimii" eri kohdissa kertoi, että koodirivi, joka aikaisemmin toimi, ei toiminutkaan enää myöhemmin. Jos olisi vielä jotain hyötyä (olen tätä ongelmaa jo varmaan puoli tuntia selvitellyt, vähän ketuttaa jos siitä ei ollutkaan apua), niin tässä olisi tekemäni kaksinpelattavan räiskintäpelin sorsat:
Code: Select all
Type AMMUKSET
Field obj
EndType
Type VIHUT
Field obj
Field Health
EndType
SCREEN 640, 480, 0, 0
kenttä = LoadObject ("Media\kentta.png") 'mikä tahansa 640*480 kuva käy
ukko = LoadObject ("Media\soldier.bmp", 135)
ukko2 = LoadObject ("Media\soldier.bmp", 135)
pati = LoadObject ("Media\bullet2.bmp", 135) 'mikä tahansa pieni kuva käy
ShowObject pati, OFF
vihu = LoadObject ("Media\cow.bmp", 72)
ShowObject vihu, OFF
fontti = LoadFont ("Arial", 20, ON)
SetFont fontti
isofontti = LoadFont ("arial", 60, ON)
Level = 1
healt1 = 500
healt2 = 500
Randomize Timer()
FrameLimit 50
exists1 = 1
exists2 = 1
Repeat
If exists1 And KeyDown (cbkeyup) Then MoveObject ukko, 4
If exists1 And KeyDown (cbkeydown) Then MoveObject ukko, -4
If exists1 And KeyDown (cbkeyright) Then TurnObject ukko, -8
If exists1 And KeyDown (cbkeyleft) Then TurnObject ukko, 8
If ObjectX (ukko) > 100 Then PositionObject ukko, 100, ObjectY (ukko)
If ObjectX (ukko) < -100 Then PositionObject ukko, -100, ObjectY (ukko)
If ObjectY (ukko) > 100 Then PositionObject ukko, ObjectX (ukko), 100
If ObjectY (ukko) < -100 Then PositionObject ukko, ObjectX (ukko), -100
If exists2 And KeyDown (cbkeyw) Then MoveObject ukko2, 4
If exists2 And KeyDown (cbkeys) Then MoveObject ukko2, -4
If exists2 And KeyDown (cbkeyd) Then TurnObject ukko2, -8
If exists2 And KeyDown (cbkeya) Then TurnObject ukko2, 8
If ObjectX (ukko2) > 100 Then PositionObject ukko2, 100, ObjectY (ukko2)
If ObjectX (ukko2) < -100 Then PositionObject ukko2, -100, ObjectY (ukko2)
If ObjectY (ukko2) > 100 Then PositionObject ukko2, ObjectX (ukko2), 100
If ObjectY (ukko2) < -100 Then PositionObject ukko2, ObjectX (ukko2), -100
If KeyDown (53) And reload < 1 And exists1 Then //Luodaan ammus
uusAmmus.AMMUKSET = New (AMMUKSET)
uusAmmus\obj = CloneObject (pati)
CloneObjectPosition uusAmmus\obj, ukko
CloneObjectOrientation uusAmmus\obj, ukko
MoveObject uusAmmus\obj, 24
Reload = 2
EndIf
If KeyDown (cbkey1) And reload2 < 1 And exists2 Then
uusAmmus.AMMUKSET = New (AMMUKSET)
uusAmmus\obj = CloneObject (pati)
CloneObjectPosition uusammus\obj, ukko2
CloneObjectOrientation uusammus\obj, ukko2
MoveObject uusammus\obj, 24
reload2 = 2
EndIf
If Rand (0,50-level) < 1 Then
For i = 1 To RoundUp(level/1.5)
uusVihu.VIHUT = New (VIHUT)
uusVihu\obj = CloneObject (vihu)
PositionObject uusVihu\obj, Rand (-320,320), Rand (-240,240)
PointObject uusVihu\obj, ukko
uusVihu\Health = Rand (1,2)
Next i
EndIf
Reload -1
reload2 -1
For iAmmus.AMMUKSET = Each AMMUKSET
MoveObject iAmmus\obj, 10
If Distance2 (iAmmus\obj, ukko) > 700 Then DeleteObject iAmmus\obj: Delete iAmmus
Next iAmmus
For iVihu.VIHUT = Each VIHUT
If exists1 Then PointObject iVihu\obj, ukko Else PointObject iVihu\obj, ukko2
MoveObject iVihu\obj, 1
If ObjectsOverlap (ivihu\obj, ukko) Then healt1 -1
If ObjectsOverlap (ivihu\obj, ukko2) Then healt2 -1
Next iVihu
For iVihu.VIHUT = Each VIHUT
tuhoa=OFF
For iAmmus.AMMUKSET = Each Ammukset
If ObjectsOverlap(iVihu\obj,iAmmus\obj) Then
If bulletmode=0 Then
DeleteObject iAmmus\obj
Delete iAmmus
EndIf
tuhoa=ON
EndIf
Next iAmmus
If tuhoa Then iVihu\Health -1
If iVihu\Health < 0 Then DeleteObject iVihu\obj: Delete ivihu: Pisteet +1
Next iVihu
If pisteet > Level*3 Then Pisteet = 0: Level +1: AddText "LEVEL "+Level
If Rand (0,80) = 0 Then ClearText
If level > 11 Then
SetFont isofontti
AddText "********PÄÄSIT LÄPI********"
EndIf
If healt1 < 1 Then ShowObject ukko, OFF: exists1 = 0
If healt2 < 1 Then ShowObject ukko2, OFF: exists2 = 0
If healt1 < 1 And healt2 < 1 Then MakeError "KUOLITASCFAWETQFER)OTJW!"
DrawScreen
Forever
Got sarnath'd by Nassi_Setä, mutta menkööt sitten vielä kuitenkin.