Noniin pitkän coolbasic tauon jälkeen aloitin taas uudelleen, aika nopeasti muistui perusteet mieleen.
Teen ylhäältä kuvattua räiskintää, ja tähän mennessä toimii ukon liikkuminen, hiirellä tähtääminen, ampuminen, aseen vaihto näppäimistöltä, panosten ja lippaiden laskeminen. Lisäksi sain toimimaan vihollisten miinojen räjähtämisen ja random sijainnin, sekä kökön tekoälyn. Ongelmani on se, että luodin osuessa vihuun tulee heti MAV. Olen yrittänyt muuttaa koodia, vaikka miten, mutta ei onnistu.
Tässä on melkein 300 riviä koodia, muutin kaiken grafiikan coolbasicin alkuperäistiedostoiksi, jotta toimisi kaikilla. Kiitos niille, jotka voisivat auttaa!
Code: Select all
Type VIHUT
Field obj
Field healtti
Field dmg
End Type
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään 'obj'
Field nopeus 'kenttä luodin nopeudelle
Field dmg
End Type
Type MIINAT
Field obj
Field dmg
End Type
Type VIHUMIINAT
Field obj
Field dmg
End Type
Type Räjähdykset
Field partikkeli
End Type
FrameLimit 40
SCREEN 800, 600
imgPoks=LoadAnimImage("Media\bang.bmp",32,32,0,8)
apuobj=LoadObject("Media\particle.bmp")
ShowObject apuobj, OFF
ukko=LoadObject("Media\soldier.bmp",90)
vihu=LoadObject("Media\soldier.bmp",90)
ShowObject vihu, OFF
pistolman=LoadObject("Media\soldier.bmp",90)
ShowObject pistolman, OFF
rifleman=LoadObject("Media\soldier.bmp",90)
ShowObject rifleman, OFF
shotgunman=LoadObject("Media\soldier.bmp",90)
ShowObject shotgunman, OFF
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
mine=LoadObject("Media\fireball.bmp")
ShowObject mine, OFF
mine_vihu=LoadObject("Media\cursor.bmp")
ShowObject mine_vihu, OFF
tähtäin=LoadObject("Media\target.bmp")
pistolpam=LoadSound("Media\Gun 1.wav")
riflepam=LoadSound("Media\Gun 7.wav")
reloadsound=LoadSound("Media\Pistol reload.wav")
noMoreAmmo=LoadSound("Media\Button 1.wav")
minepam=LoadSound("Media\Boom 1.wav")
landmine=LoadSound("Media\Whip.wav")
elkku=100
pistooliammukset=100
pistoolilipas=7
konekivääriammukset=60
konekiväärilipas=20
haulikkoammukset=30
miinoja=3
ase=1
For i = 0 To 3
pahis.VIHUT = New(VIHUT)
pahis\obj = CloneObject(vihu)
SetupCollision pahis\obj, ukko, 2, 2, 2
PositionObject pahis\obj,Rand(-400, 400), Rand(-300, 300) //Sijoitetaan viholliset satunnaisiin kohtiin ruudulla.
Next i
For pahis.VIHUT = Each VIHUT
For pahis2.VIHUT = Each VIHUT
If pahis <> pahis2 Then SetupCollision pahis\obj, pahis2\obj, 2,2,2
Next pahis2
Next pahis
For i = 0 To 4
miina2.VIHUMIINAT = New(VIHUMIINAT)
miina2\obj=CloneObject(mine_vihu)
PositionObject miina2\obj, Rand(-400,400), Rand(-300,300)
miina2\dmg = 40
Next i
Repeat
CloneObjectPosition ukko, apuobj
PositionObject tähtäin,MouseWX(),MouseWY()
ShowMouse OFF
PointObject ukko,tähtäin
If KeyDown(17) Then MoveObject apuobj,0, -5
If KeyDown(31) Then MoveObject apuobj,0, 5
If KeyDown(32) Then MoveObject apuobj,5
If KeyDown(30) Then MoveObject apuobj,-5
If KeyHit(2) Then ase=1: PaintObject ukko, pistolman: reload=10
If KeyHit(3) Then ase=2: PaintObject ukko, rifleman: reload=10
If KeyHit(4) Then ase=3: PaintObject ukko, shotgunman: reload=10
If KeyHit(5) Then ase=4: PaintObject ukko, pistolman: reload=10
If MouseDown(1) And reload=0 Then
Select ase
Case 1 'pistooli
If pistooliammukset>0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
luoti\nopeus=15
luoti\dmg=25
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 5
TurnObject luoti\obj, Rand(-3,3)
reload=15
pistooliammukset = pistooliammukset-1
pistoolilipas = pistoolilipas-1
PlaySound pistolpam
If pistoolilipas = 0 And pistooliammukset>0 Then
PlaySound reloadsound
pistoolilipas = 7
reload = 60
EndIf
Else
PlaySound noMoreAmmo, 10
EndIf
Case 2 'konekivääri
If konekivääriammukset>0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 10
TurnObject luoti\obj, Rand(-3,3)
luoti\nopeus=17
luoti\dmg=20
reload=5
konekivääriammukset = konekivääriammukset-1
konekiväärilipas = konekiväärilipas-1
PlaySound riflepam
If konekiväärilipas = 0 And konekivääriammukset>0 Then
PlaySound reloadsound
konekiväärilipas = 20
reload = 80
EndIf
Else
PlaySound noMoreAmmo, 10
EndIf
Case 3 'haulikko
If haulikkoammukset>0 Then
haulikkoammukset = haulikkoammukset-1
For i = 0 To 4
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 10
TurnObject luoti\obj,Rand(-7,7)
luoti\nopeus=10
luoti\dmg=10
reload=17
PlaySound pistolpam, 20
Next i
ElseIf haulikkoammukset=0 Then
haulikkoammukset = 0
PlaySound noMoreAmmo, 10
EndIf
Case 4 'miinat
If miinoja>0 Then
miinoja = miinoja-1
miina.MIINAT = New(MIINAT)
miina\obj=CloneObject(mine)
miina\dmg=100
CloneObjectPosition miina\obj,ukko
CloneObjectOrientation miina\obj,ukko
ObjectOrder miina\obj,-1
MoveObject miina\obj,50,-2
reload=100
PlaySound landmine
Else
PlaySound noMoreAmmo, 10
EndIf
EndSelect
EndIf
If reload>0 Then reload=reload-1
For pahis.VIHUT = Each VIHUT
PointObject pahis\obj, ukko
MoveObject pahis\obj, 1
pahis\healtti = 100
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj, luoti\nopeus
If ObjectsOverlap(luoti\obj, pahis\obj, 2) Then
DeleteObject luoti\obj
DeleteObject pahis\obj
Delete luoti
Delete pahis
EndIf
Next luoti
Next Pahis
For miina2.VIHUMIINAT = Each VIHUMIINAT
If ObjectsOverlap(ukko, miina2\obj, 2) Then
poks.RÄJÄHDYKSET = New(RÄJÄHDYKSET)
poks\partikkeli = MakeEmitter(imgPoks, 10)
PlaySound minepam
CloneObjectPosition poks\partikkeli,miina2\obj
ObjectLife poks\partikkeli,11
'aseta partikkelilähteen ominaisuudet
ParticleMovement poks\partikkeli,0,0
ParticleEmission poks\partikkeli,2,1,1
'8 animaatio-framea
ParticleAnimation poks\partikkeli,7
DeleteObject miina2\obj 'poista objekti
Delete miina2 'poista luoti kokonaan
elkku = elkku-miina2\dmg
EndIf
Next miina2
If elkku<=0 Then MakeError "Kuolit!"
DrawGame 'Näytetään tietoja ruudulla
Color cbwhite
If ase = 1 Then
Text 10,10, "Ase: Pistooli"
Text 10,30, "Ammuksia: " + pistooliammukset
Text 10,50, "lipas: " + pistoolilipas
ElseIf ase = 2 Then
Text 10,10, "Ase: Konekivääri"
Text 10,30, "Ammuksia: " + konekivääriammukset
Text 10,50, "Lipas: " + konekiväärilipas
ElseIf ase = 3 Then
Text 10,10, "Ase: Haulikko"
Text 10,30, "Ammuksia: " + haulikkoammukset
ElseIf ase = 4 Then
Text 10,10, "Ase: Miina"
Text 10,30, "Ammuksia: " + miinoja
EndIf
Color cbred
Text 700,580, "Energia: " + elkku
DrawScreen
Until EscapeKey()