Olen alkanut ohjelmoimaan uutta tykkipeliä, tosin tälläkertaa toteutan tekoälyn laskemalla, joten vaikeustasoa riittää
Teen myös moninpeli mahdollisuuden, joten toteutan jokaisen imagen/objectin typeillä xD Katsotaan riittääkö intoni tehdä tästä suurempaa kokonaisuutta. Tekoälyn olen saanut valmiiksi muuten, paitsi tuota tykinkulman tarkkaa laskentaa (johon tarvitsen tuota pisteen tarkistusta).
Miksi tämä ei toimi?
Tuo viiva ei saisi mennä imagen päälle...
EDIT: Sain ratkaistua ongelman, mutta tosin en tiedä, miksi tämä ei toiminut imagesta lukemalla... Toimiva koodi alhaalla, jos joku sitä tarvii
Code: Select all
SCREEN 800,600
maa=MakeImage(1000,420)
DrawToImage maa
Color cbgreen
Box 0,100,1000,120
Box 300,0,100,130
DrawToScreen
maax=0
maay=300
pnx=200
pny=340
Repeat
DrawImage maa,maax,maay
kulma=WantedAngle(pnx,pny,600,3,300)
Line2(pnx,pny,kulma,150)
Circle pnx-5,pny-5,10
Text 10,10,FPS()
DrawScreen
Forever
Function Line2(x#,y#,ang#,pituus#)
x2# = x# + Sin(ang#)*pituus#
y2# = y# - Cos(ang#)*pituus#
Line x#,y#,x2#,y2#
EndFunction
Function WantedAngle(x1#,y1#,EnemyX#,turnspeed,MaxDistance)
Repeat
If EnemyX#>x1# Then
Repeat
angle=Rand(1,89)
Until ( angle Mod turnspeed ) = 0
Else
Repeat
angle=Rand(1,89)+270
Until ( angle Mod turnspeed ) = 0
EndIf
Hits=0
Lock
For a=0 To MaxDistance
x2# = x1# + Sin(angle)*a
y2# = y1# - Cos(angle)*a
px = GetPixel2(x2#,y2#)
If px <> -16777216 Then Hits+1 : Exit
Next a
Unlock
Until Hits=0
Return angle
EndFunction