Anfänger Tutorial für einen Pong-Klon

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

gigi

Betreff: Anfänger Tutorial für einen Pong-Klon

BeitragSo, Dez 02, 2007 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun auch überarbeitet und eingerückt.

Code: [AUSKLAPPEN]
;_____________________________________________________________________________________________________________________
;---------------------------------------------------------------------------------------------------------------------
;------------------------Anfänger-Tutorial für einen 2D-Pong Klon-----------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------
;_____________________________________________________________________________________________________________________
;Mit diesem Tutorial will ich versuchen euch die Grundzüge eines 2D-Spiels und des Programmierens mit BB(Blitzbasic)
;näher zu bringen.Ich werde versuchen alles so gut wie nur möglich zu erklären, sodass es auch jemand versteht der
;wenig mit dem Computer zu tun hat. Wenn ihr dieses Tutorial gemacht habt solltet ihr:
;-wissen was Variablen sind und was man mit ihnen machen kann
;-wissen was und wozu die Hauptschleife da ist
;-wissen warum sich bei diesem Spiel etwas bewegt
;-wissen wie man Tastenabfragen macht.
;Vielleicht lernt ihr auch mehr!


;Fangen wir an.Jedes Spiel in dem Formen,Farben und andere grafische Dinge angezeigt werden sollen beginnen mit dem
;Graphics- Befehl. Die Zahlen dahinter stehen für:800=Entfernung horizental vom Anfang des Fensters bis zum Ende.
;auch x-Achse genannt.600=Entfernung vertikal vom Fensteranfang bis zum Ende,die y-Achse.Zusammen ergeben sie die
;Auflösung,also die gesamte Bildpunktanzahl(hier:800 mal 600=480000 einzelne Bildpunkte).32=die Farb-Bits.2=der
;Fenstermodus.(1=Vollbild,2=großes Fenster,3=skalierbares Fenster). Spiele doch einmal mit diesen Werten rum und siehe was
;passiert. 
Graphics 800,600,32,2
;Setbuffer setzt den(erkläre ich gleich)Backbuffer.Den Buffer kann man sich vorstellen wie ein Blatt Papier.
;Mal wird die Vorderseite,mal die Rückseite gezeigt.Backbuffer ist sozusagen die Rückseite und Frontbuffer die
;vordere.Nun wird als erstes auf den Backbuffer gemalt.Der Backbuffer wird zum Frontbuffer und der Frontbuffer zum
;Backbuffer.Nun wird im Hintergrund der neue Backbuffer gemalt(also die ehemalige Vorderseite des Papiers) und der
;neue Frontbuffer(die ehemalige Rückseite) gezeigt.Dann wird das ganze wieder getauscht.Der Frontbuffer wird
;Backbuffer und der Backbuffer Frontbuffer.Der Inhalt des Backbuffers wird gelöscht und er wird neu bemalt.Der
;Frontbuffer wird gezeigt.Und so läuft es immer weiter.Das ganze dient zur Beschleunigung.
;Der Tausch von Front-und Backbuffer geschieht mit Flip, welches in der Hauptschleife(erkläre ich gleich) stehen muss.
SetBuffer BackBuffer()
;Kommen wir zu den Variablen.Man kann sie sich wie Schubladen vorstellen, welche entweder Texte,Kommazahen oder ganze
;Zahlen speichern können.Die Variablennamen stehen hier vor dem Gleichzeichen, die Werte dahinter. Will man Text
;in einer Variable speichern setzt man ein $-Zeichen hinter den Variablennamen. Als Variablennamen kann man alles
;nehmen.Will man Kommazahlen speichern setzt man ein #-Zeichen hinter den Namen.Bei ganzen Zahlen muss nichts
;gesetzt werden.   
y1=280
y2=280
x=783
y=305
rx=-5
ry=0
;Mit While wird die Hauptschleife eingeleitet. Dahinter steht dann eine Bedingung, hier heißt es dann frei übersetzt:
;Solange nicht die Taste mit dem TASTENCODE(die Nummer die jede Taste hat, einfach mal im Internet nach TASTENCODES
;suchen) 1 gedrückt wird. Weiter unten steht dann der Befehl Wend,welcher wieder bis zu diesem Punkt "zurückspult".
;Was also in der Hauptschleife steht wird immer wiederholt.   
While Not KeyHit(1)
;Cls löscht den gesamten Bildschirminhalt,enorm wichtig bei 2D-Spielen damit sich die versichdenen Sachen nicht
;übermalen oder einen Schweif hinter sich herziehen.   
Cls
;Line malt eine Linie,welche von einem zu einem anderem Punkt gezogen wird. Diese Punkte legt man mit den jeweils
;ersten und zweiten Stellen(für Punkt 1) sowie den dritten und vierten Stellen(für Punkt 2) hinter dem Befehl
;fest.
Line 10,y1,10,y1+50
Line 790,y2,790,y2+50
;Oval zeichnet einen Kreis.Die ersten beiden stellen legen die Position des Mittelpunktes fest, die anderen beiden
;die x- und y-Ausdehnung des Kreises.
Oval x,y,5,5
;Rect zeichnet ein Rechteck.Die ersten beiden Stellen legen die erste x- und y-Position fest, die nächsten beiden die
;zweite. Die letzte Zahl steht für 1=gefülltes Rechteck 2=leeres Rechteck.
Rect 2,2,798,598,0
;Jetzt wird es spannend, die If-Abfragen kommen.If +Bedingung +Then wird geschrieben.Zu Deutsch soviel wie "Wenn
;Bedingung erfüllt dann:".Hier ist die Bedingung das eine bestimmte Taste gedrückt wird(Pfeil nach unten) und(=And)
;das die Variable y1 den Wert 540 hat oder kleiner ist.Wenn das der Fall ist dann wird y1 um 4 erhöht.Mit Endif
;wird die If-Abfrage beendet.!!!!!!!!!!!!!!!Auf keinen Fall endif vergessen, ansonsten läuft das Programm nicht!!!!!!!   
If KeyDown(208) And y1=<540 Then
     y1=y1+4
EndIf
If KeyDown(200) And y1=>10 Then
     y1=y1-4
EndIf


If x<=10 Then
    If y1+25=y Then
       rx=7
    EndIf
    If y1+25>y And y1=<y Then
       rx=6
       ry=ry-1
    EndIf
    If y1+25<y And y1+50>y Then
       rx=6
       ry=ry+1
    EndIf
EndIf

If x>=790 Then
    If y2+25=y Then
       rx=-7
    EndIf
    If y2+25>y And y2=<y Then
       rx=-6
       ry=ry-1
    EndIf
    If y2+25<y And y2+50>y Then
       rx=-6
       ry=ry+1
    EndIf
EndIf

If y>y2+25 And rx>0 Then
  y2=y2+4
EndIf
If y<y2+25 And rx>0 Then
  y2=y2-4
EndIf

If x<=0 Then
  p2=p2+1
  x=790
  ry=0
  y=y2+25
EndIf
If x=>800 Then
  p1=p1+1
  x=10
  ry=0
  y=y1+25
EndIf

If y<=2 Then
  ry=+1
EndIf
If y>=598 Then
  ry=-1
EndIf
;Bis hier kanntet ihr alles.Hier steht auch kein Rätsel.In jedem Schleifendurchlauf wird die Varaible x um rx erhöht.
x=x+rx
y=y+ry
;Mit dem Befehl Text wird wird geschrieben.Erst wird die x-,dann die y-Position angegeben.Danach der Text,welcher in
;Anführungszeichen stehen muss("dein text").
Text 300,20,p1+" : "+p2
;Mit Flip wird Front- zum Backbuffer und Back- zum Frontbuffer.
Flip
;Mit Wend springt das Programm wieder zurück nach While(also zum Anfang der Hauptschleife).
Wend
;End beendet das Programm.
End


;Natürlich gibt es noch mehr Befehle, diese könnt ihr auf blitzbase.de ansehen.

;Viel Spaß mit Blizbasic wünscht euch euer GIGI
;---------------------------------------------------------------------------------------------------------------------
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;                                 FERTIG!!!                   
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;---------------------------------------------------------------------------------------------------------------------
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185
  • Zuletzt bearbeitet von gigi am So, Dez 02, 2007 21:50, insgesamt 3-mal bearbeitet

kriD

BeitragSo, Dez 02, 2007 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ist es normal, dass sich der schläger nach unten bewegt, wenn man nach oben drückt??

MfG kriD
Wenn ich du wäre, wäre ich lieber ich!
 

gigi

BeitragSo, Dez 02, 2007 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
offenbar ja, hab mich beim proggen dran gewöhnt^^. Für den Tut-Text hab ich komischerweise länger gebraucht als für das Spiel an sich. Wie findet ihr es denn? Könnte ein Anfänger daraus schlauer werden?
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

Xeres

Moderator

BeitragSo, Dez 02, 2007 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Pff... warum für einen Befehl nach THEN ne neue Zeile beginnen und wieder mit ENDIF abschließen? Kann man doch gleich kürzer belassen. Und wenn, sollte man doch auch gleich den Code einrücken.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Eingeproggt

BeitragSo, Dez 02, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code ist eingerückt, wenn man sich ihn rauskopiert in nen Editor.
Ich finde aber, dass du ql:Graphics etwas schlecht erklärst.
1.) "Entfernung" würde ich die Fenstergröße nicht nennen
2.) Es gibt noch anderes als 32Bit Farbtiefe, allerdings nur im Vollbildmodus
3.) Der Modus 3 ist nicht "kleines Fenster", sondern skalierbares Fenster

Und die Sache mit rauf-runter ist nicht normal Smile

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

BladeRunner

Moderator

BeitragSo, Dez 02, 2007 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei mir ist da nichts eingerückt...

Ach ja, Gigi, kürze bitte deine Signatur. Die ist so viel zu lang.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Eingeproggt

BeitragSo, Dez 02, 2007 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
sry, stimmt. Das war das Automatisch-Einrücken von meiner IDE Very Happy

So gesehen solltest du das Tutorial wohl oder übel nochmal überarbeiten, gigi.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

BladeRunner

Moderator

BeitragSo, Dez 02, 2007 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
... und du solltest es recht rasch überarbeiten, weil ich es sonst hier entferne.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

gigi

BeitragSo, Dez 02, 2007 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nun eingerückt. Das mit "Entfernung" soll eher veranschaulichen.Rauf-Runter ist geändert.
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185
  • Zuletzt bearbeitet von gigi am So, Dez 02, 2007 21:49, insgesamt einmal bearbeitet

Noobody

BeitragSo, Dez 02, 2007 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
... und trotzdem gehe ich nach unten, wenn ich nach oben drücke ...
Ich würde ausserdem noch eine Framebremse mit Flip 0 einbauen, damit ein Pong nicht 95% CPU frisst.
Ausserdem die If - Abfrage für die zukünftige Position ausführen und nicht für die momentane Position, da der Ball sonst erst abprallt, wenn er bereits hinter der Linie ist.
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
 

Bassmaster

BeitragMi, Jan 23, 2008 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht nice aus :>

Aber der Bot ist zu gut der kriegt JEDE Kugel ^^
 

Johann der 2.

Betreff: Danke

BeitragMo, Nov 10, 2008 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nja mich hat es ein bisschen weiter gebracht ich weiß nähmlich jetzt welchen Fehler ich gemacht hab.
 

KaDuZa

BeitragMi, Dez 03, 2008 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest die ganzen if schleifen etwas genauer kommentieren also sagen was jeder einzelnder if sagt , wäre für anfänger ansprechbarer, aber geiles ding

ozzi789

BeitragMi, Dez 03, 2008 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt keine if schleifen Very Happy


ich find dein tut für anfänger pädagogisch wertvoll Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group