Ball von einer Wand apprallen lassen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

NoneX

Betreff: Ball von einer Wand apprallen lassen

BeitragDo, März 11, 2010 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt vor 3 Tagen angefangen mich ein bischen mit Blitz auseinander zu setztn. Jetzt wollte ich ein kleines game schreiben. Man kann ein UFO steuern und muss einer Kugel ausweichen. Klappt auch soweit alles, bis auf das Apprallen von der Wand.

Bin mir ziemlich sicher das der Fehler hier irgendwo liegt, da wenn ich den Code lösche alles funktioniert

BlitzBasic: [AUSKLAPPEN]
If xKugel<20 xKugel=20 Then winkel=180-winkel*2 
EndIf
If xKugel>490 xKugel=490 Then winkel=180-winkel*2
EndIf
If yKugel<-10 yKugel=-10 Then winkel=180-winkel*2
EndIf
If yKugel>365 yKugel=365 Then winkel=180-winkel*2
EndIf


ganzer Code:

BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,3
Global frametimer = CreateTimer(60)

Print "Gib deinen Spielernamen ein (max.7): " ; Beginn
Spielername$ = Input()

Global UFO=LoadImage("GFX\UFO.bmp")


Global Wand=LoadImage("GFX\Wand.bmp")

Global Kugel=LoadImage("GFX\Kugel.bmp")

Global xkugel# ;X-Pos. der Kugel als Kommazahl
Global ykugel# ;Y-Pos. der Kugel als Kommazahl
Global winkel ;gibt den Flugwinkel der Kugel an


Repeat
Cls
DrawImage UFO, x, y
DrawImage Wand, 0, 0
DrawImage Kugel, xkugel, ykugel
If KeyDown(205) Then x=x+1
If KeyDown(203) Then x=x-1
If KeyDown(200) Then y=y-1
If KeyDown(208) Then y=y+1
Flip


If x<20 x=20
If x>490 x=490
If y<-10 y=-10
If y>365 y=365

ykugel=ykugel-Sin(winkel)
xkugel=xkugel+Cos(winkel)


If xKugel<20 xKugel=20 Then winkel=180-winkel*2
EndIf
If xKugel>490 xKugel=490 Then winkel=180-winkel*2
EndIf
If yKugel<-10 yKugel=-10 Then winkel=180-winkel*2
EndIf
If yKugel>365 yKugel=365 Then winkel=180-winkel*2
EndIf


If ImagesCollide(UFO, x, y, frame1, Kugel, xkugel, ykugel, frame2) Then End

Until KeyHit(1)
End


vielen Dank schonmal im vorraus
Lg NoneX

M0rgenstern

BeitragDo, März 11, 2010 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, was du hier bezwecken willst kann man nur ahnen:

Code: [AUSKLAPPEN]
If x<20 x=20
If x>490 x=490
If y<-10 y=-10
If y>365 y=365


Und:

Code: [AUSKLAPPEN]
If xKugel<20 xKugel=20 Then winkel=180-winkel*2
EndIf
If xKugel>490 xKugel=490 Then winkel=180-winkel*2
EndIf
If yKugel<-10 yKugel=-10 Then winkel=180-winkel*2
EndIf
If yKugel>365 yKugel=365 Then winkel=180-winkel*2
EndIf


Ich würde sagen, dass bei dem ersten in jeder Zeile ein "then" fehlt und beim zweiten in jeder Zeile mit "if" Die Zuweisung hinter das then gehört.

Außerdem wäre es schön, wenn du dein Problem genauer beschreibst als "es funktioniert nicht".
Ich kann dir sagen, dass der Code da oben erst gar nicht ausgeführt wird.
Aber ansonsten... hmmmm.
Also: bitte mal ne genaue beschreibung.

Und mach dich doch bitte zuerst mit Grundlegenden Dingen wie "if" vertraut bevor du dich wirklich an ein Spiel wagst.

Lg, M0rgenstern

ozzi789

BeitragDo, März 11, 2010 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If xKugel<20 xKugel=20 Then winkel=180-winkel*2
EndIf


If verlangt einen Angabe, oder meher welche mit and or oder so weiter zusammen gehängt werden.
Du hast lediglich das then falsch gesetzt

Code: [AUSKLAPPEN]
If xKugel<20 then xKugel=20: winkel=180-winkel*2

Ausserdem benötigt es kein Endif wenn du alles auf einer Zeile macht
Das ":" sagt BB das noch ein Befehl kommt

Oder du schreibst es so
Code: [AUSKLAPPEN]
If xKugel<20
    xKugel=20
    winkel=180-winkel*2
EndIf


Ansonsten lies doch das -> If mal genau durch, sollte helfen Smile


mfg und viel Spass mit BB, ozzi




edit: mist etwas zu spät
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

NoneX

BeitragDo, März 11, 2010 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
M0rgenstern hat Folgendes geschrieben:
Also, was du hier bezwecken willst kann man nur ahnen:

Code: [AUSKLAPPEN]
If x<20 x=20
If x>490 x=490
If y<-10 y=-10
If y>365 y=365


[/code]


Das sollte nur bezwecken das der Spieler nicht aus dem Fenster geht,
Danke euch zwei les mir das dann mal durch

lg NoneX

M0rgenstern

BeitragDo, März 11, 2010 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist im Prinzip klar, aber entweder hast du ein then vergessen oder ein and oder ein or und wenn du eins von den letzten beiden vergessen hast, dann hast du ne Anweisung mit then vergessen.
Das wollte ich damit sagen.
 

NoneX

BeitragDo, März 11, 2010 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Funktioniert aber ?

Xeres

Moderator

BeitragDo, März 11, 2010 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic meckert nicht, wenn man bei einem Einzeiler das Then weg lässt... Aber Blitz meckert auch nicht, wenn Variablen nicht deklariert: Ich würde nicht empfehlen, sich so was an zu gewöhnen.
Was denn Winkel angeht würde ich folgendes vorschlagen:
BlitzBasic: [AUSKLAPPEN]
winkel = (winkel+180) Mod 360
Modulo begrenzt den Winkel dabei auf Werte Zwischen 0 und 359.
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)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group