kleines prob mit types
Übersicht

EschenbachBetreff: kleines prob mit types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bin dabei, wieder BlitzBasic zu programmieren, ich benutze Blitz3d. Ich habe schon ein paar Vorkenntnisse im Bereich Programmieren und hatte auch schon mit B3d programmiert. Jetzt versuche ich wieder reinzukommen und habe dafür ein kleines Beispiel geschrieben. In diesem Beispiel wollte ich dann auch versuchen, Types zu benutzen(was ich bis jetzt noch nicht benutzt hatte). Das beispiel
ist einfach nur ein Quadrat, welches mit den Pfeiltasten über den Bildschirm bewegt wird, das war kein Problem. Ich wollte, um Types einzubeziehen, dass immer wenn ich das Quadrat bewege, kleine Kreise nach außen wegfliegen. Wenn ich den Code lese, müsste er eigentlich funktionieren, aber wenn ich ihn Ausführe kommt aber eine Fehlermeldung "Object doesn't exist". Kann einer von euch mir erklären was ich falsch gemacht habe? Leider konnte ich für das spezifische problem schlecht die sufu benutzen... Hier das Programm: Code: [AUSKLAPPEN] Graphics 640,480,16,0
SetBuffer BackBuffer() SeedRnd MilliSecs() Global rectx=50 Global recty=50 Global bewegung Type part Field x Field y Field xvel Field yvel End Type ClsColor 232,105,7 Color 63,63,63 ;#################################*+-Hauptschleife-+*################################ Repeat Cls Rect rectx,recty,50,50,1 Flip bewegung = False bewege_quadrat() If bewegung = True Then partikel() titel$ = "x: " + rectx + ", y: " + recty AppTitle titel Until KeyHit(1) End ;##################################*+-Funktionen-+*################################## Function bewege_quadrat() ;Pfeil hoch If KeyDown(200) And recty > 0 Then recty = recty-5 bewegung = True EndIf ;Pfeil runter If KeyDown(208) And recty < 430 Then recty = recty+5 bewegung = True EndIf ;Pfeil links If KeyDown(203) And rectx > 0 Then rectx = rectx-5 bewegung = True EndIf ;Pfeil rechts If KeyDown(205) And rectx < 590 Then rectx = rectx+5 bewegung = True EndIf End Function Function partikel() ;wenn das Quadrat sich bewegt, sollen neue Objekte erstellt werden, xvel und yvel ;sollen den Kreis in eine zufällige Richtung fliegen lassen If bewegung = True Then f.part = New part f\x = rectx f\y = recty f\xvel = Rnd(-5,5) f\yvel = Rnd(-5,5) EndIf ;Die Bewegung wird berechnet, außerhalb vom bildschirm sollen sie gelöscht werden, ;ansonsten wird ein Kreis gezeichnet For f.part = Each part f\x = f\x + f\xvel f\y = f\y + f\yvel Oval f\x,f\y,3,3 If f\x < 0 Or f\x > 640 Then Delete f If f\y < 0 Or f\y > 480 Then Delete f Next End Function |
||
Gruß, Eschenbach |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If f\x < 0 Or f\x > 640 Then Delete f
If f\y < 0 Or f\y > 480 Then Delete f Wenn der Type bei der ersten Abfrage gelöscht wird, so gibt es einen Fehler, wenn du die zweite Abfrage ausführst, da du versuchst, auf einen Type zuzugreifen, den du eine Zeile vorher gelöscht hast. Die zweite Abfrage darf nur ausgeführt werden, wenn die Abfrage vorher nicht zugetroffen hat. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Eschenbach |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke. ich hab das jetzt mit elseif geregelt. Die Meldung kommt jetzt nicht mehr, aber es kommen immer noch keine kreise...ich hab auch mal die bedingung weggenommen, dass nur Kreise kommen, wenn das Quadrat sich bewegt, aber es kommen trotzdem keine...
Code: [AUSKLAPPEN] Function partikel()
;wenn das Quadrat sich bewegt, sollen neue Objekte erstellt werden, xvel und yvel ;sollen den Kreis in eine zufällige Richtung fliegen lassen f.part = New part f\x = rectx f\y = recty f\xvel = Rnd(-5,5) f\yvel = Rnd(-5,5) ;Die Bewegung wird berechnet, außerhalb vom bildschirm sollen sie gelöscht werden, ;ansonsten wird ein Kreis gezeichnet For f.part = Each part f\x = f\x + f\xvel f\y = f\y + f\yvel Color 255,255,255 Oval f\x,f\y,3,3 If f\x < 0 Or f\x > 640 Then Delete f ElseIf f\y < 0 Or f\y > 480 Then Delete f EndIf Next End Function |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast ja auch das Flip falsch gesetzt.
Du löscht den Bildschirm, zeichnest den Spieler und zeigst das ganze auf dem Bildschirm - dann zeichnest du die Kreise, die gleich wieder durch Cls gelöscht werden. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein festes Framelimit würde auch nicht schaden, oder willst dass dein Spiel auf besseren Rechners schneller läuft? | ||
- Zuletzt bearbeitet von Der_Schläfer am So, Apr 13, 2008 19:10, insgesamt einmal bearbeitet
Eschenbach |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aaaah! alles klar^^ dadran hab ich gar nich gedacht. danke! | ||
Gruß, Eschenbach |
EschenbachBetreff: framelimit |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Der_Schläfer: ja das mach ich eig immer nur das soll ja wie oben beschrieben nur ein test sein, um in bb wieder reinzukommen und um types zu benutzen, trotzdem danke für deinen rat;) | ||
Gruß, Eschenbach |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group