Wie versteht man die < > "Operatoren" Besser
Verfasst: 28.07.2007 19:15
Hi, also ich habe ein Problem ich Arbeite gerade ja das ein oder andere Tutorial ab um PureBasic endlich zu können
. Und jetzt stecke ich bei einer stelle fest und zwar bei der --->
Also das ">" bedeutet ja größer oder gleich und das bedeutet "<" kleiner oder gleich ne? So und jetzt frage ich mich wen ich später selber mal ein Game oder ein Programm Coden möchte woher ich selber weis in welche richtung die "<", ">" zeigen müssen. Weil wen man den Code da oben mal als Satz sich vorstellt dan ergibt das irgend wie keinen sin: Wen FassExist() existiert setze auf 1 und MausX() "Größer"?... Hoffe mir kann das jemand erklären das ich das besser verstehe...
Ach das Tutorial womit ich noch übe ist von www.purebasic.de
Der Komplette Source Code:
Man warum ist aller Anfang so schwer?


Code: Alles auswählen
If FassExist(x) = 1 And MouseX() > FassX(x) And MouseX() < FassX(x) + 20 And MouseY() > FassY(x) And MouseY() < FassY(x) + 20
Ach das Tutorial womit ich noch übe ist von www.purebasic.de
Der Komplette Source Code:
Code: Alles auswählen
InitSprite() ; Iniziert DirectX
InitKeyboard() ; Die Tastatur befehle sollen verwendet werden
InitMouse() ; Die Maus Befehle sollen verwendet werden
OpenScreen(640,480,16,"Beispiel 10_1") ; Öffnet ein Fenster im Vollbild Modus
#Max_Fass = 20 ; Eine Konstante die die Anzahl der Maximalen Fässer speichert
Dim FassX.w(#Max_Fass) ; Die X Position der Fässer
Dim FassY.w(#Max_Fass) ; Die Y Position der Fässer
Dim FassExist.w(#Max_Fass) ; Gibt es das Fass oder nicht ?
Dim FassAnim.w(#Max_Fass) ; Die Animationsphase in der sich das Fass befindet
Global Level.w ; Das Level in dem sich der Spieler befindet
Global Maus_Knopf.w ; Speichert nach einem Schuss ab, das die Maustaste bereits gedrückt wurde
Global Punkte.w ; Die Anzahl der Punkte die der Spieler errungen hat
Global FassCount.w ; Zählt die Fässer um prüfen zu können ob für das Level genug da sind
Global Durchgefallen.w ; Zählt die Anzahl der Fässer die bereits durchgefallen sind.
Level = 1 ; Setzt das Anfangslevel
LoadSprite(0,"GFX\NeuKreuz.bmp",0) ; Lädt unsere neue und schönere Kreuzgrafik
TransparentSpriteColor(0,255+256*0+256*256*255) ; Setzt die transparent Farbe für das Kreuz
LoadSprite(1,"GFX\Back.bmp" ,0) ; Lädt Den Hintergrund
For x = 1 To 10 ; Schleife für das laden der Fassanimation
LoadSprite(10+x,"GFX\Fass" + Str(x) + ".bmp",0) ; Alle 10 Animationsstufen des Fasses laden
TransparentSpriteColor(10+x,255+256*0+256*256*255) ; Und die Transparentsfarbe setzen
Next
Repeat
ExamineMouse() ; Neue Mausdaten einlesen
ExamineKeyboard() ; Neue Tastaturdaten einlesen
If MouseButton(1) And Maus_Knopf = 0 ; Wenn die Maustaste gedrückt wurde
Maus_Knopf = 1 ; Jetzt kann nicht mehr gefeuert werden, bis die Taste losgelassen wird
For x = 1 To #Max_Fass ; Für alle Fässer
If FassExist(x) = 1 And MouseX() > FassX(x) And MouseX() < FassX(x) + 20 And MouseY() > FassY(x) And MouseY() < FassY(x) + 20
; Check ob das Fass existiert und man mit der Maus drauf zeigt.
FassExist(x) = 2 ; Exist 2 bedeutet, das Fass ist gerade am auseinanderfallen
Punkte = Punkte + 10 ; Punkt dazurechnen
EndIf
Next
EndIf
If MouseButton(1) = 0 ; Wenn die nicht Maustaste gedrückt ist
Maus_Knopf = 0 ; darf man wieder feuern
EndIf
DisplaySprite(1,0,0) ; den Hintergrund setzen (ohne MaskColor, er soll ja alles abdecken)
For x = 1 To #Max_Fass ; Für alle Fässer (mal wieder)
If FassExist(x) > 0 ; Wenn das Fass existiert
DisplayTransparentSprite(10+FassAnim(x)/3,FassX(x),FassY(x)) ; setze die aktuelle Animationphase auf den Bildschirm
EndIf
Next
DisplayTransparentSprite(0,MouseX()-32,MouseY()-32) ; Das Ziel Kreuz setzen
StartDrawing(ScreenOutput()) ; Für Schrift brauchen wir dann doch nocht 2D Drawing
DrawingMode(1) ; Den Hintergrund der Schrift auf durchsichtig stellen
FrontColor(0+256*0+256*256*255) ; In blau
DrawText(0,0,"Punkte:" + Str(Punkte)) ; Und da sind Sie auch schon
FrontColor(255+256*0+256*256*0) ; In rot
DrawText(530,0,"Durchgefallen:" + Str(Durchgefallen)) ; ...
StopDrawing() ; Damit ist der 2D Kram erledigt
FlipBuffers() ; Bildschirmseiten tauschen
FassCount = 0 ; Die gezählten Fässer sind am Anfang Null
For x = 1 To #Max_Fass ; Mal wieder für alle Fässer
If FassExist(x) > 0 ; gibt es das Fass
FassCount = FassCount + 1 ; Dann die gezählten Fässer um 1 erhöhen
If FassExist(x) < 3 ; Wenn das Fass nicht gerade auf dem Boden zerschellt
FassY(x) = FassY(x) + 1 ; Es weiter nach unten bewegen
EndIf
If FassExist(x) > 1 ; Nur Für FassExist 2 und 3, da diese Animatier sind
FassAnim(x) = FassAnim(x) + 1 ; Die Animation um 1 erhöhen
If FassAnim(x) > 30 ; Wenn die Animation beim Ende Angekommen
FassExist(x) = 0 ; dann existiert das Fass ab jetzt nicht mehr
EndIf
EndIf
If FassExist(x) = 1 And FassY(x) > 460 ; Wenn das Fass Existiert (nicht gerade kaputt geht) und auf den Boden fällt
Durchgefallen = Durchgefallen + 1 ; Ist eins mehr durchgefallen
FassExist(x) = 3 ; Und das Fass zerschellt am Boden
EndIf
EndIf
Next
If FassCount < Level ; Wenn es weniger Fässer im Bild gibt
For x = 1 To #Max_Fass ; Für alle Fässer
If FassExist(x) = 0 ; Wenn es das Fass nicht gibt
FassExist(x) = 1 ; Wird aus Ihm ein neues
FassAnim(x) = 3 ; Die Animation wird auf den Anfang zurück geschaubt
FassY(x) = -40 ; Das Fass kommt ganz nach oben
FassX(x) = Random(620) ; Auf eine zufällige X Position
x = #Max_Fass+1 ; Und die Schleife wird beendet
EndIf
Next
EndIf
If (Punkte / 100) + 1 > Level ; Alle 100 Punkte
Level = Level + 1 ; Wird das Level um 1 erhöht
EndIf
Until KeyboardPushed(1) Or Durchgefallen > 9 ; Und es wird solange gespielt bis 10 Fässer durchgefallen sind oder Escape gedrückt wird
Delay(1000) ; Kurze Pause
CloseScreen() ; Das Fenster schliessen
MessageRequester("Game Over", "Du hast " + Str(Punkte) + " Punkte erreicht",0) ; Und noch einmal die Punkte anzeigen

