Eigenartige frage..:P

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Flameskull

Betreff: Eigenartige frage..:P

BeitragFr, Mai 02, 2008 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
also... ich möchte, dass das programm, wenn es kollidiert, nach dem endif weitermacht.. ich weiß aber nicht wie. kann mir wer helfen?








Code: [AUSKLAPPEN]

Graphics 800, 600
SetBuffer BackBuffer()




bg = LoadImage("bg.bmp")
a = LoadImage("smiley.bmp")
b = LoadImage("balkenlang.bmp")
c = LoadImage("balkenquer.bmp")
d = LoadImage("balkenlang.bmp")
e = LoadImage("balkenlang.bmp")
f = LoadImage("balkenlang.bmp")
g = LoadImage("balkenquer.bmp")
lseite1 = LoadImage("balkenlangseiten.bmp")
lseite2 = LoadImage("balkenlangseiten.bmp")
qseite1 = LoadImage("balkenquerseiten.bmp")
qseite2 = LoadImage("balkenquerseiten.bmp")
finish = LoadImage("finish.bmp")
MaskImage a, 255, 255, 255
MaskImage finish, 255,255,255

ClsColor 70,70,70

x=50
y=40
bx = 300
by = 0
cx = 30
cy= 180
dx = 250
dy = 215
ex = 400
ey = 215
fx = 250
fy = 422
gx = 440
gy = 450
lseite1x = 0
lseite1y = 0
lseite2x = 765
lseite2y = 0
qseite1x = 0
qseite1y = 0
qseite2x = 0
qseite2y = 571
finishx = 693
finishy = 30

dirbx = -1
dircy = -1
dirdx = -1
direx = -1
dirfx = -1
dirgx = -1
dirgy = -1

Repeat
Cls



TileImage bg, 0, 0
DrawImage a, x, y
DrawImage b, bx,by
DrawImage c, cx,cy
DrawImage d, dx,dy
DrawImage e, ex,dy
DrawImage f, fx, fy
DrawImage g, gx, gy
DrawImage lseite1, lseite1x, lseite1y
DrawImage lseite2, lseite2x, lseite2y
DrawImage qseite1, qseite1x, qseite1y
DrawImage qseite2, qseite2x, qseite2y
DrawImage finish, finishx, finishy
bx =bx +dirbx

cy =cy+dircy

dx =dx+dirdx

ex =ex+direx

fx = fx+dirfx

gy = gy+dirgy


                                                 ; Bewegungsbedingungen für die Balken
If bx < 290 Then dirbx = 1
If cy < 100 Then dircy =1
If bx > 450 Then dirbx = -1
If cy > 180 Then dircy = -1
If dx < 200 Then dirdx = 1
If dx > 250 Then dirdx = -1
If ex < 350 Then direx = 1
If ex > 400 Then direx = -1
If fx < 200 Then dirfx = 1
If fx > 250 Then dirfx = -1
If gy < 300 Then dirgy =10
If gy > 500 Then dirgy =-1



If ImagesCollide(a, x, y, frame1, b, bx, by, frame2)            ; Kollisionsabfrage
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, c, cx, cy, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, d, dx, dy, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, e, ex, ey, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, f, fx, fy, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, g, gx, gy, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, lseite1, lseite1x, lseite1y, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, lseite2, lseite2x, lseite2y, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, qseite1, qseite1x, qseite1y, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, qseite2, qseite2x, qseite2y, frame2)   
Text 280, 240, "GAME OVER"
WaitMouse
End
ElseIf ImagesCollide(a, x, y, frame1, finish, finishx, finishy, frame2)   
Text 650, 100, "LEVEL PASSED!"

ElseIf KeyDown(17) And KeyDown(30)                              ; Ab hier: W A S D
y=y-2                                                           
x=x-2
ElseIf KeyDown(17) And KeyDown(32)
y=y-2
x=x+2
ElseIf KeyDown(31) And KeyDown(30)
y=y+2
x=x-2
ElseIf KeyDown(31) And KeyDown(32)
y=y+2
x=x+2
ElseIf KeyDown(17)
y=y-2
ElseIf KeyDown(31)
y=y+2
ElseIf KeyDown(30)
x=x-2
ElseIf KeyDown(32)
x=x+2

EndIf



Flip
Cls


Forever
  • Zuletzt bearbeitet von Flameskull am Fr, Mai 02, 2008 18:54, insgesamt einmal bearbeitet

Eingeproggt

BeitragFr, Mai 02, 2008 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach alle "End's" raus Smile
 

Flameskull

BeitragFr, Mai 02, 2008 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
nee... das klappt nicht.. weil das programm dann nicht nach dem endif weiter macht, sondern immer noch die elseifs ausführt.. die ends sind sozusagen eine temporäre notlösung^^

Eingeproggt

BeitragFr, Mai 02, 2008 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä? Also nur mal rein von der Logik her.. Vlt lern cih auch ncoh mal was neues...
Wenn man das hat:

Code: [AUSKLAPPEN]

a=True
b=True
If a Then
  Debuglog "A"
Elseif b Then
  Debuglog "B"
Endif
WaitKey()


Dann wird nur "A" angezeigt. Das programm hüpft nicht in "B". Es macht nach Endif weiter. Oder was meinst du?

mfG, Christoph.
 

Flameskull

BeitragFr, Mai 02, 2008 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs jetzt selber verstanden.. ich dachte das programm führt nur dieses if zeug aus und zwar solange, biss es bis zum endif kommt. alles was dadrunter ist wird nicht ausgeführt.. (hab ich zumindest gedacht).
hab grad rausbekommen dass es nicht so ist^^.. glaub ich Razz

jetzt stellt sich noch ne frage.. wenn ich

WaitKey
End

mit

Cls

ersetze, dann wird zwar der bildschirm gelöscht, aber im "unsichtbaren" laufen die figuren in meinem programm trotzdem weiter. und wenn die nicht mehr kollidieren, ist das bild nicht mehr gelöscht.. wie kann ich das bild komplett löschen?=

ProggerOrk

BeitragFr, Mai 02, 2008 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;Hier werden Grafiken geladen und alles was halt so gebraucht wird

SetBuffer BackBuffer()
Repeat
cls


;Hier kommt alles rein was gezeichnet werden soll und was bewegt werden soll

flip
until keyhit(1)
end


Rolling Eyes
Aktuelles Spiel: Treasure Miner
Mehr Informationen unter:
http://www.pucupo-games.de
 

Flameskull

BeitragFr, Mai 02, 2008 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub du has das faslch verstanden...

waitkey und end, ich meine damit das, was bei

Code: [AUSKLAPPEN]

ElseIf ImagesCollide(a, x, y, frame1, c, cx, cy, frame2)   
Text 280, 240, "GAME OVER"
WaitKey
End
ElseIf ImagesCollide(a, x, y, frame1, d, dx, dy, frame2)   
Text 280, 240, "GAME OVER"
 


steht

ProggerOrk

BeitragFr, Mai 02, 2008 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
er löscht den bildschirm doch nur , wenn eine IF Anweisung zutrifft.. oder sehe ich das falsch= Und warum so oft "cls"?
Aktuelles Spiel: Treasure Miner
Mehr Informationen unter:
http://www.pucupo-games.de
  • Zuletzt bearbeitet von ProggerOrk am Fr, Mai 02, 2008 19:35, insgesamt einmal bearbeitet

Eingeproggt

BeitragFr, Mai 02, 2008 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum willst due WaitKey und End durch Cls ersetzen? ProggerOrk hat dir ein Schema gezeigt, wie man sein Programm aufbauen sollte. Und das Cls ist dort genau an der richtigen Stelle. Wonanders wirst du es kaum brauchen Wink
 

Flameskull

BeitragSa, Mai 03, 2008 2:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möchte halt, dass wenn die kollision eintrifft, dass der bildschirm komplett schwarz wird.. also dass alle images und so verschwinden.. ich dachte das geht mit cls

ProggerOrk

BeitragSa, Mai 03, 2008 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber nimm doch dafür extra eine Variable... und zwar in etwa so :

Code: [AUSKLAPPEN]
global kollision = 0

SetBuffer BackBuffer()
Repeat
cls


;Hier kommt alles rein was gezeichnet werden soll und was bewegt werden soll



;Hier überprüft er ob Kollisionen vorhanden sind
if imagescollide(....) then
      kollision = 1
end if




;In den Bereich zeichnet er deine Grafiken oder was auch immer

if kollision = 0 then

        ;Zeichne alles was gezeichnet werden soll
end if

flip

kollision = 0
until keyhit(1)
end



Also dadurch das irgendetwas kollidiert , springt die Variable "kollision " auf 1 und unten wird nur gezeichnet , solange "Kollision" auf 0 steht, ansonsten bleibt der Bildschirm leer...

Sieht doch so wesentlich schöner aus oder nicht?

EDIT: Wichtig ist dann aber auch das die Variable ganz unten, wie im Code bestehnd auf "0" gesetzt wird..
Aktuelles Spiel: Treasure Miner
Mehr Informationen unter:
http://www.pucupo-games.de
 

Flameskull

BeitragSa, Mai 03, 2008 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
super idee danke!
bin halt neu in blitz basic (2 tage).. bin ned drauf gekommen Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group