Seite 1 von 2

Frage zu Beispielcode(kleines Squash-Spiel)

Verfasst: 27.06.2006 00:08
von vomDorf
Hallo, ich stelle jetzt meine erste Frage hier in diesem Forum.
folgenden Beispiel-Code habe ich soweit verstanden, bis auf den Abschnitt ;4. Bewegung des Balles.

Repeat
; 2. Grafik setzen
ClearScreen(0,120,0)
StartDrawing(ScreenOutput())
FrontColor(0,255,255)
Box(0,0,20,480)
Box(0,0,640,20)
Box(0,460,640,20)
Box(SchlaegerX,SchlaegerY,10,30)
Box(BallX-1,BallY-1,3,3)
StopDrawing()
FlipBuffers()

; 3. Abfrage der Benutzer Eingaben
ExamineKeyboard()
If KeyboardPushed(200)
SchlaegerY - 1
EndIf
If KeyboardPushed(208)
SchlaegerY + 1
EndIf

If SchlaegerY < 21
SchlaegerY = 20
ElseIf SchlaegerY > 460 - 30
SchlaegerY = 460 - 30
EndIf

; 4. Bewegung des Balles
BallX + BewegX
BallY + BewegY

; 5. Kollision
If BallX < 20
BewegX = 1
EndIf
If BallY < 20
BewegY = 1
EndIf
If BallY > 460
BewegY = -1
EndIf

If BallX > SchlaegerX And BallX < SchlaegerX + 10 And BallY > SchlaegerY And BallY < SchlaegerY + 30
BewegX = -1
EndIf :?

Until KeyboardPushed(1) Or BallX > 640


Warum funktioniert das so?
Ich würde schreiben: BallX = BallX + BewegX
und BallY = BallY + BewegY
Im Beispielcode wird doch BallX bzw. BallY nicht verändert oder kein anderer Wert zugewiesen.
Warscheinlich ganz einfach zu erklären. Wo liegt mein Denkfehler?

Verfasst: 27.06.2006 00:33
von MVXA
Die Antwort liegt bei 4 und dem letzten Teil.

Verfasst: 27.06.2006 00:37
von PMV

Code: Alles auswählen

BallX + BewegX 
BallY + BewegY
hat in PureBasic die selbe bedeutung wie

Code: Alles auswählen

BallX = BallX + BewegX
BallY = BallY + BewegX
Warum?
Ganz einfach, um schreibarbeit zu ersparen :wink:
Wenn es dir aber lieber ist kannst du natürlich die längere Möglichkeit
wählen, zwingt dich ja keiner zu ersterem.

Aber z.B. ich bevorzuge die erste Variante, weils einfach weniger
Tipparbeit ist :D

MFG PMV

Verfasst: 27.06.2006 00:56
von vomDorf
Ich erkläre gerade mal, wie ich den Code verstehe:
Die Box(BallX-1,BallY-1,3,3) wird gezeichnet, beim nächsten Schleifendurchlauf müßte BallX einen um mindestens 1 niedrigeren Wert erhalten, deshalb meine Folgerung :
Code:
BallX = BallX + BewegungX
BallX und BewegungX wurden als globale Variablen festgelegt.
Ohne "BallX = " kann doch BallX kein anderer Wert zugewiesen werden, oder?
Wie geschieht das denn?

Verfasst: 27.06.2006 01:03
von vomDorf
Hatte die letzte Nachricht noch nicht gelesen. Jetzt ist mir alles klar.
Hab' wohl noch nicht genug Tutorials etc gelesen.
Vielen Dank, bin echt begeistert wie schnell man hier geholfen kriegt; habe den ganzen Tag daran rumgerätselt.

Verfasst: 27.06.2006 14:10
von AND51
Ja, hier wird einem echt gut geholfen, das muss man schon sagen. Also frag ruhig weiter, wenn du Fragen hast.

By the way, schön dich an PureBoard zu haben, willkommen :wink:

Verfasst: 06.07.2006 23:32
von vomDorf
Vielen Dank für die tolle Begrüßung. Bin immer mehr überzeugt, mit PureBasic die richtige Wahl getroffen zu haben.
Habe mit VBA einiges gemacht. Der Umstieg zu VB schien mir trotzdem zu kompliziert und vor allen Dingen zu teuer!!
Mit PB kann man für kleines Geld und gerade als Anfänger gut vorankommen. Villeicht noch zum Schluß an die "Absolute Beginners":
mit ganz kleinen, einfachen Codebeispielen anfangen und die Lektüre des PDF - Handbuches ist echt Pflicht!! Ich hab's mir ausgedruckt, da kann man immer mal wieder zwischendurch reingucken (ohne PC).
:allright:

Verfasst: 07.07.2006 06:38
von Kaeru Gaman
auch von mir ein herzliches willkommen.

> mit ganz kleinen, einfachen Codebeispielen anfangen und die Lektüre des PDF - Handbuches ist echt Pflicht!!

schön dass du's so siehst, damit wirst du auch erfolg haben.

trotzdem gibt es immer mal wieder anfänger, die gleichzeitig ins kalte wasser springen wollen und mit dem kopf durch die wand, deren erfolg steht von anfang an in frage.


PS:
was ist eigentlich der unterschied zwischen VBA und VB?

Verfasst: 07.07.2006 07:25
von Green Snake
@Kaeru

Der Hauptunterschied besteht wohl daran, dass VB eine Compiler-Sprache ist, VBA wird jedoch interpretiert.

Hier kannst du noch genaueres nachlesen:
http://de.wikipedia.org/wiki/Visual_Bas ... plications

Verfasst: 07.07.2006 09:57
von Kiffi
> was ist eigentlich der unterschied zwischen VBA und VB?

VBA ist in den MS-Office-Produkten eingebaut und hat dadurch einen sehr
engen Bezug zu den dort vorhandenen Objekten. Mit VBA ist es z.B. relativ
einfach, auf Tabellen, Abfragen und Formulare innerhalb von Access
zuzugreifen. VBA wird auch immer in die jeweilige Office-Datei (*.mbd,
*.doc, *.xls) integriert und wird (wie Green Snake korrekt geschrieben hat)
zur Laufzeit interpretiert.

VB hingegen ist eine von Office unabhängige und demzufolge viel flexiblere
Programmiersprache und kann im Gegensatz zu VBA auch zu einer EXE
kompiliert werden.

Grüße ... Kiffi