zufällig Punkte Zeichnen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

KaDuZa

Betreff: zufällig Punkte Zeichnen

BeitragSo, Mai 03, 2009 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,
Ich bin gerade bei einen kleinen mini projekt was ich aus langeweile mache Very Happy
So die extreme simple engine steht ja auch schon fast aber ich habe ein Problem.
Auf den ganzen Bildschirm sollen 10 zufällige punkte gezeichnet werden.
Das läst sich ja auch leicht umsetzen aber ich habe keine ahnung, wo ich das im code schreiben sollte,
in der hauptschleife zeichnet er sie immer anders, was nicht der sinn ist, und auch noch unschön aussieht,
vor der hauptschleife geht es auch ned da in der hauptschleife das cls steht^^

Wäre froh wenn mir jemand sagen könne wie ich das am besten machen könnte.
Damit die Problemlösung etwas schneller und angenehmer geht habe ich meinen Code auskommentiert.

Code: [AUSKLAPPEN]
AppTitle "Test game"
Graphics 640,480,16,1
SetBuffer BackBuffer()
Include "keys.bb"






;Varibeln
myx=0
myy=0
p2x=605
p2y=445



;timer
cpu = CreateTimer (60)


;bilder
;Spieler
my=LoadImage("gfx\my.bmp")
MaskImage my ,255,255,255
p2=LoadImage("gfx\p2.bmp")
MaskImage p2 ,255,255,255
;Punkte
bullet=LoadImage("gfx\bullet.bmp")
MaskImage bullet ,255,255,255
;Punkte zeichnen
For i = 1 To 10
DrawImage bullet ,Rand(605),Rand(445)
Next

;Hauptschleife
Repeat
Cls
DrawImage my , myx,myy
DrawImage p2, p2x,p2y
;if abfragen(Bewegung, my)
If KeyDown(key_left) Then myx=myx - 2
If KeyDown(key_right) Then myx=myx + 2
If KeyDown(key_up) Then myy=myy - 2
If KeyDown(key_down) Then myy=myy + 2
If myx < 0 Then myx=0
If myx > 605 Then myx=605
If myy < 0 Then myy=0
If myy > 445 Then myy = 445
;if abfragen(bewegung p2)
If KeyDown(key_a) Then p2x=p2x - 2
If KeyDown(key_d) Then p2x=p2x + 2
If KeyDown(key_w) Then p2y=p2y - 2
If KeyDown(key_s) Then p2y=p2y + 2
If p2x < 0 Then p2x=0
If p2x > 605 Then p2x=605
If p2y < 0 Then p2y=0
If p2y > 445 Then p2y = 445





WaitTimer cpu
Flip 0
Until KeyHit(1)
End


MFG
 

da_poller

BeitragSo, Mai 03, 2009 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Function generate_plots(sx,sy,ex,ey)

For i=0 To 9
plotfield(i,0)=Rand(sx,ex)
plotfield(i,1)=Rand(sy,ey)
Next

End Function
 

KaDuZa

BeitragSo, Mai 03, 2009 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werde es wohl eher mit types lösen versuche gerade es umzusetzen^^
 

KaDuZa

BeitragSo, Mai 03, 2009 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich bin weiter gekommen Very Happy
jetz sollen aber wenn my (player 1) oder p2(player2) mit einen punkt kollidiert diesen auch löschen.
bei player 2 funkt alles tadellos aber bei player 1 kommt die fehler meldung, objekt doesent exist.
wäre dankbar für eine fehlerbehebung in meinen code weil ich einfach nicht weiterkomme

Code: [AUSKLAPPEN]
AppTitle "Test game"
Graphics 640,480,16,1
SetBuffer BackBuffer()
Include "keys.bb"


Type punkte
Field bx
Field by
End Type 


;Varibeln
myx=0
myy=0
myp=0
p2x=605
p2y=445



;timer
cpu = CreateTimer (60)


;bilder
;Spieler
my=LoadImage("gfx\my.bmp")
MaskImage my ,255,255,255
p2=LoadImage("gfx\p2.bmp")
MaskImage p2 ,255,255,255
;Punkte
bullet=LoadImage("gfx\bullet.bmp")
MaskImage bullet ,255,255,255

For i =1 To 50
info.punkte = New punkte
info\bx = Rand(0,605)
info\by = Rand(0,445)
Next
 


;Hauptschleife
Repeat
Cls
Text myp,605/2,0
For info.punkte = Each punkte
DrawImage bullet ,info\bx,info\by
If ImagesCollide(my, myx,myy,0, bullet, info\bx,info\by,0) Then
Delete info.punkte
myp=myp+1
EndIf
If ImagesCollide(p2, p2x,p2y,0, bullet, info\bx,info\by,0) Then
Delete info.punkte
p2p=p2p+1
EndIf


Next



DrawImage my , myx,myy
DrawImage p2, p2x,p2y
;if abfragen(Bewegung, my)
If KeyDown(key_left) Then myx=myx - 2
If KeyDown(key_right) Then myx=myx + 2
If KeyDown(key_up) Then myy=myy - 2
If KeyDown(key_down) Then myy=myy + 2
If myx < 0 Then myx=0
If myx > 605 Then myx=605
If myy < 0 Then myy=0
If myy > 445 Then myy = 445
;if abfragen(bewegung p2)
If KeyDown(key_a) Then p2x=p2x - 2
If KeyDown(key_d) Then p2x=p2x + 2
If KeyDown(key_w) Then p2y=p2y - 2
If KeyDown(key_s) Then p2y=p2y + 2
If p2x < 0 Then p2x=0
If p2x > 605 Then p2x=605
If p2y < 0 Then p2y=0
If p2y > 445 Then p2y = 445


;kollisions abfrage



WaitTimer cpu
Flip 0
Until KeyHit(1)
End

Blackside

BeitragSo, Mai 03, 2009 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, das du nachdem der Punkt bei Spieler 1 gelöscht wird, du bei der nächsten Abfrage nochmals versuchst auf den Punkt zuzugreifen. Ein einfaches Exit hinter "myp=myp+1" sollte das Problem lösen.

Mfg Blackside[/code]
Hier sollte eigentlich eine Signatur stehen!
 

da_poller

BeitragSo, Mai 03, 2009 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
besser wäre es wenn du nicht bei jedem problem dein komplettes "projekt" postest und auf antwort wartest.. grenz den fehler ein(debugger?) versuch das problem zu lösen und sollte es dann selbst nach der suchfunktion nutzung nicht klappen kannst du den fehlerhaften code posten.

und ps: doppelposts sind hier ungern gesehen es gibt hier nen edit button(an deine beiträgen oben rechts)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group