Struktur im Programmablauf

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Adabi

Betreff: Struktur im Programmablauf

BeitragMi, Mai 20, 2009 9:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin

Ich habe die Nacht ein wenig mit BB experimentiert. Ich habe schon früher mal programmiert, aber das war in einem anderen Jahrhundert. Meine mir selbst gestellten Aufgaben waren folgende:

- etwas auf dem Screen mit der Tastatur bewegen (Grafik mit Tastatursteuerung bewegen).
- etwas auf dem Screen bewegen lassen (Grafik bewegt sich von A nach B).
- etwas auf dem Screen animieren (3 Grafiken laufen der Reihe nach durch in einer Schleife).

Soweit so mäßig auch gelöst. Zumindest für eine Nacht. Wink

Ich habe mir eben das Schuss-Tut von Dotterkopf durchgelesen. Daraus ergaben sich folgende Fragen:

1. Wenn ich die obigen Dinge kombinieren will, mache ich das im Grunde mit einer Schleife, die je nach Bedingung die einzelnen Programmteile (Functions?) abklappert?
Ich habe nämlich versucht das o.g. zu kombinieren (Gosub...) und habe nämlich nicht geschafft die einzelnen Programmteile so miteinander zu verwurschten, dass sich:

- eine "Kanone" horizontal bewegen lässt
- und sich gleichzeitig ein Schuss nach Tastendruck vertikal bewegt.


Vielen Dank und gute N8
A.

ozzi789

BeitragMi, Mai 20, 2009 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal eine Lösung zu deiner Aufgabe
Code: [AUSKLAPPEN]
Type schuss ; Type namens Schuss erstellen
   Field x ; schuss folgende "attribute" geben, x und y
   Field y
End Type


Global px#


Graphics 800,600,32,2 ;Graphics initialisieren

px#=400 ; die Player X position auf 400 setzen (mitte)


While Not KeyHit(1) ; Beginn der Schleife, so lange durchrattern bis ESC gedrückt wird
Cls 


keys()
schüsse_malen()

Flip 60
Wend   ; nun haben wir alles gemacht, wieder rauf zu wend !
End






Function keys() ;Hier wird alles mit der Interaktion mit der Tastatur behandelt

If KeyDown(205) px#=px#+0.7
If KeyDown(203) px#=px#-0.7
If KeyHit(57)
   s.schuss=New schuss
   s\x=px#
   s\y=0
EndIf

End Function


Function schüsse_malen() ; Hier wird jede Instanz von schuss durchgeangen und behandelt

For s.schuss = Each schuss
s\y=s\y+5 ;Nach unten bewegen
Color 80,255,80
Oval s\x,s\y,10,30 ;Zeichnen
Color 255,255,255
If s\y>600 Delete s.schuss ;Falls er vom Bildschirm rand verschwindet, löschen (Preformance!)
Next
Rect px#,10,10,10

End Function


Vermeide Gosub / Goto Wink
Schau es dir mal durch und frage nach wenns unklarheiten gibt!

hf
mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Dottakopf

BeitragMi, Mai 20, 2009 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Tipp:

Beginne mit elementareren Sachen. Auch wenn es für einen außenstehenden recht simple aussieht, was du da proggen möchtest, ist es Programiertechnisch schon recht fortgeschritten. Was hast du den schon so für Kleine mini projekte gemacht ?

Gerade beim Programieren sollte man die Grundlagen gut beherrschen, denn sonst erleidet man später einen gewaltigen Genickbruch *Klugscheiß*

Allgemeiner Programm aufbau :
( Beachte jeder Programierer programiert anders und etwickelt seinen eigenen Programierstil). Aber im groben sollte der Code immer so aufgebaut sein.


Code: [AUSKLAPPEN]

;grafik initialisieren

;variablen definieren

;arrys

;evt includes


;---------HAUPTSCHLEIFE-----------

     ; - Aufruf vierschiedener funktionen
     ;funktion1 (spieler updaten)
     ;funktion2 (Map malen)

;--------ende hauptschleife-------



;funktion 1 (  .. )
;if wert = wert then....




;funktion 2 (.....)
If wert = wert then ....






Gruß
Dottakopf
 

Adabi

BeitragMi, Mai 20, 2009 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich bin wieder wach. Danke für eure Antworten. Werde ich mir später ausführlich angucken.

Zitat:
Was hast du den schon so für Kleine mini projekte gemacht ?

Nun ja, auf dem C64 ein paar Sprites fliegen lassen und Wasteland gecrackt. Mit dbaseIV hatte ich auch mal kurz was am Hut. Das liegt zwar nicht ganz so lange zurück wie Wasteland, war aber so öde, dass ich mich wenigstens noch an die 8Bit Assembler-Befehle LDA und STA erinnere aber an dbase nicht mehr. Oh Wunder.
Kurz danach sind ja auch die Dinosaurier ausgestorben. Was zumindest aber erklärt, wieso ich auf die Idee mit Gosub gekommen bin Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group