Re: Tyhmät kysymykset
Posted: Wed May 07, 2008 7:23 am
Goto-komentoa ei voi käyttää muuttujien kanssa. Laita Goto y$:n tilalle pelkkä Goto net niin pitäisi toimia.
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Eipä tahdo toimia vieläkään. Kun painan enteriä, mitään ei tapahdu.Harakka wrote:Goto-komentoa ei voi käyttää muuttujien kanssa. Laita Goto y$:n tilalle pelkkä Goto net niin pitäisi toimia.
Aseta se piirtoväriksi Color 0,0,-GetPixelArvo ja käytä getRGB():tätuhoojabotti wrote:kuinka saisin laskettua rgb arvot GetPixel komennosta? en keksiny...
Code: Select all
R = RoundDown(pix Shr 16)
gb = pix - R Shl 16
G = RoundDown(gb Shr 8)
B = gb - G Shl 8
Vaikea sanoa, kun ei tiedä miten oot hommat toteuttanu, mutta onko paljon pikselikomentoja? Ne hidastaa. Entäs paljon sisäkkäisiä luuppeja?KoviZZ wrote:Mitä tehdä kun peli muuttuu liian raskaaksi? Eli fps laskee väkisin jonnekkin 20 paikkeille ja se pitäisi saada pysymään ainakin n. 35:ssä.
Pelissäni tällä hetkellä parikymmentä vihulaista ampuu toisiaan ja kun joku tuhoutuu niin soitetaan räjähdysefektiä ja kaikki tämä laskee fps:n n. 20:n.
Vaikka koodi onkin melko purkkaista niin ei kai senkään pitäisi aiheuttaa noin suurta fps:n putoamista näin vähillä objecteilla.
Olisiko siis mitään neuvoja tehdä pelistä vähemmän raskasta.
Code: Select all
Type AMMUS
Field id
Field obj
End Type
Type VIHUT2
Field obj2
End Type
FrameLimit 60
SCREEN 800,600,16,cbzisable
tausta=MakeObjectFloor()
kuva=LoadImage("media\grass.bmp")
PaintObject tausta,kuva
oma=LoadObject("media\guy.bmp")
ShowObject oma,OFF
master=CloneObject(oma)
PositionObject master,-300,0
vihulainen=LoadObject("media\soldier.bmp",2)
ShowObject vihulainen,OFF
vihulainen2=LoadAnimObject("media\cow.bmp",2)
ShowObject vihulainen2,OFF
pati=LoadObject("media\bullet.bmp")
ShowObject pati,OFF
elkku=100
vihukuoli=0
pisteet=0
taustanopeus#=6
ASE=0
Gosub kontrollit
Gosub aseet
Gosub vihuäly
Gosub törmäykset
Gosub tekstit
Repeat
kontrollit:
vauhti#=0
If UpKey() Then
vauhti=5
MoveObject master,0,-vauhti
EndIf
If DownKey() Then
vauhti=5
MoveObject master,0,vauhti
EndIf
If LeftKey() Then
vauhti=5
MoveObject master,-vauhti,0
EndIf
If RightKey() Then
vauhti=5
MoveObject master,vauhti,0
EndIf
If KeyDown(17) Then
vauhti=10
MoveObject master,vauhti,0
ElseIf KeyDown(157) And RightKey() Then
vauhti=5
MoveObject master,vauhti,0
Else
vauhti=0
MoveObject master,vauhti,vauhti
EndIf
If ObjectX(master)<-400 Then PositionObject master,-400,ObjectY(master)
If ObjectX(master)>400 Then PositionObject master,400,ObjectY(master)
If ObjectY(master)<-300 Then PositionObject master,ObjectX(master),-300
If ObjectY(master)>300 Then PositionObject master,ObjectX(master),300
Return
aseet:
If KeyHit(16) And ASE=0 Then
ASE=1
ElseIf KeyHit(16) And ASE=1 Then
ASE=2
ElseIf KeyHit(16) And ASE=2 Then
ASE=0
EndIf
If KeyDown(cbkeyspace) And reload=0 Then
Select ASE
Case 0
luoti.AMMUS=New(AMMUS)
luoti\id=0
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,13,0
TurnObject luoti\obj,Rand(1,-1)
reload=10
Case 1
luoti.AMMUS=New(AMMUS)
luoti\id=1
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,10,-19
TurnObject luoti\obj,Rand(1,-1)
luoti.AMMUS=New(AMMUS)
luoti\id=1
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,10,19
TurnObject luoti\obj,Rand(1,-1)
reload=6
Case 2
luoti.AMMUS=New(AMMUS)
luoti\id=2
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,10,-19
TurnObject luoti\obj,8
luoti.AMMUS=New(AMMUS)
luoti\id=2
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,10,19
TurnObject luoti\obj,-8
luoti.AMMUS=New(AMMUS)
luoti\id=2
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,master
MoveObject luoti\obj,13,0
TurnObject luoti\obj,Rand(1,-1)
reload=8
EndSelect
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS=Each AMMUS
Select luoti\id
Case 0
MoveObject luoti\obj,15
If Distance2(luoti\obj,master)>700 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 1
MoveObject luoti\obj,18
If Distance2(luoti\obj,master)>700 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 2
MoveObject luoti\obj,18
If Distance2(luoti\obj,master)>700 Then
DeleteObject luoti\obj
Delete luoti
EndIf
EndSelect
Next luoti
Return
vihuäly:
MoveObject tausta,taustanopeus
If Timer()>aika2+7000 Then
vihu2.VIHUT2 = New(VIHUT2)
vihu2\obj2 = CloneObject(vihulainen2)
RotateObject vihu2\obj2,180
RotateObject vihu2\obj2,180
PositionObject vihu2\obj2,500,100
vihu2.VIHUT2 = New(VIHUT2)
vihu2\obj2 = CloneObject(vihulainen2)
RotateObject vihu2\obj2,180
PositionObject vihu2\obj2,500,-100
aika2=Timer()
EndIf
For vihu2.VIHUT2 = Each VIHUT2
nopeus3#=Rand(0.5,1.0)
MoveObject vihu2\obj2,nopeus3
PaintObject vihu2\obj2,vihulainen2
PlayObject vihu2\obj2,0,2,0.5
If Distance2(vihu2\obj2,master)<200 Then
PointObject vihu2\obj2,master
Else
RotateObject vihu2\obj2,180
MoveObject vihu2\obj2,nopeus3
EndIf
If ObjectX(vihu2\obj2)<-500 Then
DeleteObject vihu2\obj2
Delete vihu2
EndIf
Next vihu2
Return
törmäykset:
For luoti.AMMUS=Each AMMUS
For vihu2.VIHUT2=Each VIHUT2
If ObjectsOverlap(luoti\obj,vihu2\obj2) Then
vihukuoli+1
DeleteObject luoti\obj
Delete luoti
DeleteObject vihu2\obj2
Delete vihu2
EndIf
Next vihu2
Next luoti
Return
tekstit:
DrawGame
Color cbyellow
Text 10,5,"FPS: "+FPS()
Text 10,25,"Energia: "+elkku
Text 10,45,"Tapot: "+vihukuoli
Text 10,65,"Pisteet: "+pisteet
Return
DrawScreen
Until KeyHit(1)
Code: Select all
törmäykset:
For luoti.AMMUS=Each AMMUS
For vihu2.VIHUT2=Each VIHUT2
If ObjectsOverlap(luoti\obj,vihu2\obj2) Then
vihukuoli+1
DeleteObject luoti\obj
Delete luoti
DeleteObject vihu2\obj2
Delete vihu2
EndIf
Next vihu2
Next luoti
Return
Kokeile kuvapiste komentoja. Eli luet vain kuvan pikseleiden värit ja sitten piirrät haluamiisi paikkoihin samat pikselit hieman erivärisenä. Eli voit esimerkiksi laskea miltä pikseli näyttäisi kun siihen sekoitetaan tietyn kuvan kohtaa tietyn kuvan kohtaan. Liiasta nopeudesta ei kannata edes haaveilla :Dcheeshelmet.jr wrote:itselläni tuo ghostimage ei ole toiminut
Code: Select all
ukko = LoadObject( "media\guy.bmp", 72 )
pyöreys = 10
Repeat
kulma# = GetAngle( ObjectX( ukko ), -ObjectY( ukko ), MouseWX(), -MouseWY() )
RotateObject ukko, CurveAngle( kulma, ObjectAngle( ukko ), pyöreys )
DrawScreen
Forever