Mulla on pieni ongelma tämän ensimmäisen 'pelini' kanssa, ammukset eivät oikein lähde piipusta. (Olen "koodannut" tämän copy-pastettamalla mukana tulevista lessoneista.)
Code: Select all
FrameLimit 40
SCREEN 550,400 'näyttö
SetWindow "Game"
DrawToWorld ON
'Print ""
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään ''obj'
End Type
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
ääniAmmu = LoadSound ("Media\Blaster.wav")
musa = PlaySound ("Media\SK_Battle2.mp3")
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject("Media\guy.bmp",360)
'lataa vihulainen
vihu = LoadObject ("Media\guy.bmp",72)
ObjectPickable vihu, 2 'aseta se poimittavaksi
PositionObject vihu, 32,150 'sijoita ylemmäs
ObjectPickable kartta, ON 'aseta se poimittavaksi
SetupCollision ukko, kartta, 1, 4, 2
Color cbred
AddText "Voit ohjata nuolilla.Voit poistaa tämän tekstin painamalla enter."
Color cbRed
Text X,325,"moi"
Plusx=1
SetupCollision ukko, vihu, 2, 2, 2
Repeat 'silmukka
If KeyHit(28) Then
ClearText
EndIf
x = x + plusx
If x<0 Or x>200 Then plusx= -plusx
'DrawImage kuva,40,20
ClsColor cbblack 'Taustan väri
'kakkos ukon alku asento
'RotateObject ukko2,180
'koodin pätkä voit lisätä ukkelin tai kameran.
'If KeyDown(cbKeyA) Then
'If KeyDown(cbKeyD) Then
'If KeyDown(cbKeyW) Then
'If KeyDown(cbKeyS) Then
'Tällä liikutetaan ukkelia
If LeftKey() Then TurnObject ukko, 5
If RightKey() Then TurnObject ukko, -5
If UpKey() Then MoveObject ukko, 2
If DownKey() Then MoveObject ukko, -2
'Älä päästä ukkelia rajojen ulkopuolelle
'If ObjectX(ukko)<-200 Then PositionObject ukko,-200,ObjectY(ukko)
'If ObjectX(ukko)>200 Then PositionObject ukko,200,ObjectY(ukko)
'If ObjectY(ukko)<-150 Then PositionObject ukko,ObjectX(ukko),-150
'If ObjectY(ukko)>150 Then PositionObject ukko,ObjectX(ukko),150
'Älä päästä ukkelia rajojen ulkopuolelle
'If ObjectX(ukko2)<-150 Then PositionObject ukko2,-200,ObjectY(ukko2)
'If ObjectX(ukko2)>150 Then PositionObject ukko2,200,ObjectY(ukko2)
'If ObjectY(ukko2)<-100 Then PositionObject ukko2,ObjectX(ukko2),-150
'If ObjectY(ukko2)>100 Then PositionObject ukko2,ObjectX(ukko2),150
'Aktivoi jos on kaksi pelaajaa käytössä
'SetupCollision ukko,ukko2,2,2,2
'SetupCollision ukko2,ukko,2,2,2
'Color cbRed
'Text X,325,""
UpdateGame 'päevitä peli
CloneCameraPosition ukko 'cameera ja U.K.K.Eli
DrawGame
'Voidaanko ampua
If KeyDown(cbkeyspace) And reload=0 Then
PlaySound ääniAmmu,50
reload=10 'lataa 1/4 sekunnissa (koska framelimit 40)
EndIf
'lataaminen
If reload>0 Then reload-1
If SoundPlaying(musa)=0 Then
musa = PlaySound ("Media\SK_Battle2.mp3")
If Rand(1,2)=1 Then
SetSound musa,0,100,-100 'vasen kajari
Else
SetSound musa,0,100,100 'oikea kajari
EndIf
EndIf
'Ammu-systeemi. Vain, jos ase on ladattu
'If KeyDown(cbkeyspace) And reload=0 Then
' Gosub LisääAmmus
'EndIf
'päivitä aseen lataaminen
' If reload>0 Then reload=reload-1
Gosub PäivitäAmmukset
'If reload>0 Then reload=reload-1
'
' ObjectPick ukko
' e=PickedObject()
' If e=vihu Then
'Color cbMagenta
'Circle PickedX()-4,PickedY()+4,8,OFF
'EndIf
DrawScreen 'piirtää ruudun
Until EscapeKey()
End
If KeyDown(cbkeyspace) And reload=0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ukko
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ukko
reload=5 'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reloa
'vapaa paikka löytyi, luodaan pati
'AMMUS_ELOSSA(i)=ON
'AMMUS_OBJ(i)=CloneObject(pati)
'asetetaan pati samaan paikkaan
'CloneObjectPosition AMMUS_OBJ(i),ukko
'käännetään pati samaan suuntaan
'CloneObjectOrientation AMMUS_OBJ(i),ukko
'reload=5 ''aseen lataus
'enempää paikka-tarkistuksia ei tarvita,
'joten voimme paeta silmukasta
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If ObjectX(luoti\obj)<-480 Or ObjectX(luoti\obj)>300 Or ObjectY(luoti\obj)<-400 Or ObjectY(luoti\obj)>300 Then
'ammus ylittää rajan -> tuhoa se
DeleteObject luoti\obj ''poista objekti
Delete luoti ''poista luoti kokonaan
EndIf
Next luoti
Return
PäivitäAmmukset:
'liikutetaan kaikkia ammuksia, ja katsotaan
'törmäävätkö ne oransseihin seiniin. Jos
'törmäävät, niin ne poistetaan ammuslistasta,
'ja paikka vapautuu uudelle ammukselle.
'käydään KAIKKI läpi
For i=1 To 100
If AMMUS_ELOSSA(i) Then
MoveObject AMMUS_OBJ(i),6
'tämä on inhottavan pitkä rivi-------------> -------------> -------------> -------------> ------------->
'voit kuitenkin pilkkoa sen mielessäsi
'OR:n erottamiin osiin...
If ObjectX(AMMUS_OBJ(i))<-180 Or ObjectX(AMMUS_OBJ(i))>180 Or ObjectY(AMMUS_OBJ(i))<-130 Or ObjectY(AMMUS_OBJ(i))>130 Then
'ammus ylittää rajan -> tuhoa se
DeleteObject AMMUS_OBJ(i)
'vapauta paikka tyhjäksi
AMMUS_ELOSSA(i)=OFF
EndIf
EndIf
Next i
'
Return 'palaa takaisin pääsilmukkaan