Menü Problem!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

SonGoku

Betreff: Menü Problem!

BeitragDi, März 22, 2005 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal hallo,
Also, ich wollte ein Menü für mein Spiel erstellen und
kann nicht mehr weiter Sad
Seit 2 Tagen versuche ich das Problem zu lösen. Aber ohne Erfolg...
Wenn man die 1 drückt, soll das Spiel gestartet werden (funktioniert)
Wenn man die 2 drückt soll man die Credits anschauen können (klappt nicht)
Wenn man die 3 drückt soll das Spiel Beendet werden (funktioniert auch)
Das Problem ist, dass man nicht in die Credits gelangen kann. Da hängt
das Spiel und ich musste mein PC jedesmal resetten.

Kann mir einer weiterhelfen ?
Hier der Quellcode :

BlitzBasic: [AUSKLAPPEN]

Menu = 1
Credits = 0
;Hauptschleife
Repeat
Cls
While Menu = 1 ;Wenn Hauptmenü = An
DrawImage Menu_HG,0,0 ;Hintergrund laden
If KeyHit(2) Then ;Wenn taste 1 gedrückt wurde, dann...
Menu = 0 ;Menu Aus (Spiel Starten)
Else If KeyHit(3) Then
Credits = 1
EndIf
If KeyHit(4) Then End
Wend
If Credits = 1 Then DrawImage Credits_HG,0,0
... ;... steht für etc...
... ; \"\" \"\" \"\" \"\"
Flip
Until KeyHit(1)


Danke im Voraus!
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!
  • Zuletzt bearbeitet von SonGoku am Di, März 22, 2005 0:19, insgesamt 2-mal bearbeitet

diGGa

GruppenKaspar

BeitragDi, März 22, 2005 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
naja fehlt n end if?

SonGoku

BeitragDi, März 22, 2005 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, da fehlt kein EndIf Confused
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!

diGGa

GruppenKaspar

BeitragDi, März 22, 2005 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
acsho ne logisch xD ne ka warums nich geht

maximilian

BeitragDi, März 22, 2005 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Verstehe das ganze nicht so richtig. Mache es so:

BlitzBasic: [AUSKLAPPEN]


DrawImage background, 0, 0

Print \"1.) Spiel starten\"
Print \"2.) Credits\"
Print \"3.) Ende\"

Flip

If KeyHit(2) Then game()
If KeyHit(3) Then credits()
If KeyHit(4) Then End



So eine Hauptschleife für die du Repeat-Forever benutzt sollte wirklich nur
spielspezifische Sachen enthalten. Die Funktion game() würde dann so aussehen:

BlitzBasic: [AUSKLAPPEN]

Function game()

While Not KeyHit(1)
bla()
Flip
Wend

End Function
Variety is the spice of life. One day ignore people, next day annoy them.

SonGoku

BeitragDi, März 22, 2005 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab es ausprobiert. Jetzt kommt eine Fehlermeldung Confused :
"Memory access violation"

Mein neuer Quellcode (nur das menü) :
BlitzBasic: [AUSKLAPPEN]

Repeat
Cls
DrawImage Menu_HG,0,0
If KeyHit(2) Then game()
Flip
Until KeyHit(1)
End

Function Game()
DrawImage ...,0,0
...
...
End Function
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 22, 2005 1:09
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Global tollesbild = LoadImage(...);<<<<<<<<<<<<<
Repeat
Cls
DrawImage Menu_HG,0,0
If KeyHit(2) Then game()
Flip
Until KeyHit(1)
End

Function Game()
DrawImage tollesbild,0,0 ;<<<<<<<<<<<<<
...
...
End Function

Alle Variablen innerhalb einer Function sind local, das heißt sie werden beim Aufruf der function erstellt und nach verlassen wieder gelöscht!
Sollte aber eine Variable aus dem Hauptprogramm auch in der Function benutzt werden, dann muß diese entweder Global gesetzt werden oder mittels Übergabe Parametern an die Function übergeben werden!
[BB2D | BB3D | BB+]

SonGoku

BeitragDi, März 22, 2005 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm...danke, aber wenn ich jetzt die 1 für "Neues Spiel" drücke,
wird es beendet... Confused

So, jetzt poste ich aber mehr Quellcode :

BlitzBasic: [AUSKLAPPEN]

;///////////////////////////////////Initialisierungen////////////////////////////////////////////////////////////////////////////////
Graphics 640,480,0,2
AppTitle \"BlitzPong\"

SetBuffer BackBuffer()
;Variablen
Global Balken = LoadImage(\"Balken.bmp\") ;Schläger var.
MaskImage Balken,0,0,255
Global Ball = LoadImage(\"Ball.bmp\") ;Ball var.
MaskImage Ball, 0,0,255

Global Wand = LoadImage(\"Wand.bmp\") ;Wand var.
Global HG = LoadImage(\"hg.jpg\") ;Spiel Hintergrund var.
ResizeImage HG,640,480 ;Bild anpassen
Menu_HG = LoadImage(\"Hauptmenue.png\") ;Hauptmenü Hintergrund var.
Credits_HG = LoadImage(\"Credits.png\")

balkenx = 20 ;Schläger : breite
balkeny = 110 ;Schläger : länge

ballx = 60 ;Ball : breite
bally = 110 ;Ball : länge

bewegenx = 5 ;Ball speed x
bewegeny = 5 ;Ball speed y

Punkte = 0

;//////////////////////////////////////Hauptschleife/////////////////////////////////////////////////////////////////////////////////
Repeat
Cls
DrawImage Menu_HG,0,0
If KeyHit(2) Then game()
Flip
Until KeyHit(1)
End

;///////////////////////////////////////Functionen///////////////////////////////////////////////////////////////////////////////////
Function Game()
Text 10,0,\"Punkt(e): \"+Punkte
DrawImage HG,0,0
DrawImage Wand,0,0 ;Wand(Wand.bmp) zeichnen
DrawImage Balken,Balkenx,Balkeny ;Schläger(Balken.bmp) zeichnen und die länge,breite (balkenx,y) zuweisen
DrawImage Ball,ballx,bally ;Ball(Ball.bmp) zeichnen und die länge,breite (ballx,y) zuweisen
If KeyDown(200) Then balkeny = balkeny-2
If KeyDown(208) Then balkeny = balkeny+2
;...
;...
End Function
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!

diGGa

GruppenKaspar

BeitragDi, März 22, 2005 1:27
Antworten mit Zitat
Benutzer-Profile anzeigen
mach lieber

If KeyHit(2) Then game_status = game

if game_status = game then
game()
endif


https://www.blitzforum.de/viewtopic.php?t=6780

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 22, 2005 1:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ganz beenden dürfte das Spiel nicht sondern nur in das Hauptmenue springen!
BlitzBasic: [AUSKLAPPEN]
Function Game ()

Repeat
Cls
Text 10 ,0,\"Punkt(e): \" + Punkte
;
;..
If KeyDown (200) Then balkeny = balkeny - 2
If KeyDown (208) Then balkeny = balkeny + 2
;...
If gameover Then Exit ; sringt zum Hauptmenue
Flip
Forever

End Function
fehlt bei dir diese oder ähnliche Schleife?
[BB2D | BB3D | BB+]

SonGoku

BeitragDi, März 22, 2005 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, ich hab das mit dem KeyHit() ,... in einer function.

Hier mein ganzer Quellcode :
BlitzBasic: [AUSKLAPPEN]

;Start
;///////////////////////////////////Initialisierungen////////////////////////////////////////////////////////////////////////////////
Graphics 640,480,0,2
AppTitle \"BlitzPong\"

SetBuffer BackBuffer()
;Variablen
Global Balken = LoadImage(\"Balken.bmp\") ;Schläger var.
MaskImage Balken,0,0,255
Global Ball = LoadImage(\"Ball.bmp\") ;Ball var.
MaskImage Ball, 0,0,255

Global Wand = LoadImage(\"Wand.bmp\") ;Wand var.
Global HG = LoadImage(\"hg.jpg\") ;Spiel Hintergrund var.
ResizeImage HG,640,480 ;Bild anpassen
Menu_HG = LoadImage(\"Hauptmenue.png\") ;Hauptmenü Hintergrund var.
Credits_HG = LoadImage(\"Credits.png\")

balkenx = 20 ;Schläger : breite
balkeny = 110 ;Schläger : länge

ballx = 60 ;Ball : breite
bally = 110 ;Ball : länge

bewegenx = 5 ;Ball speed x
bewegeny = 5 ;Ball speed y

Punkte = 0

;//////////////////////////////////////Hauptschleife/////////////////////////////////////////////////////////////////////////////////
Repeat
Cls
DrawImage Menu_HG,0,0
If KeyHit(2) Then Game()
Flip
Until KeyHit(1)
End

;///////////////////////////////////////Functionen///////////////////////////////////////////////////////////////////////////////////
Function Game()
Text 10,0,\"Punkt(e): \"+Punkte
DrawImage HG,0,0
DrawImage Wand,0,0 ;Wand(Wand.bmp) zeichnen
DrawImage Balken,Balkenx,Balkeny ;Schläger(Balken.bmp) zeichnen und die länge,breite (balkenx,y) zuweisen
DrawImage Ball,ballx,bally ;Ball(Ball.bmp) zeichnen und die länge,breite (ballx,y) zuweisen
If KeyDown(200) Then balkeny = balkeny-2 ;Wenn Taste (nach oben) gedrückt wird, dann den Schläger nach oben bewegen.
If KeyDown(208) Then balkeny = balkeny+2 ;Wenn Taste (nach unten) gedrückt wird, dann den Schläger nach unten bewegen.
If balkeny = 4 Then balkeny = 8 ;Wenn der Schläger oben ist, dann nicht mehr weiter
If balkeny = 346 Then balkeny = 342 ;Wenn der Schläger unten ist, dann nicht mehr weiter
ballx = ballx+bewegenx ;Ball nach links/rechts bewegen
bally = bally+bewegeny ;Ball nach oben/unten bewegen
If bally > 480-30 Then bewegeny = -5 ;Ball kollision (rechte Wandberührung)
If bally < 0 Then bewegeny = +5 ;Ball kollision (obere Wandberührung)
If ballx > 640-30 Then bewegenx = -5 ;Ball kollision (untere Wandberührung)
If ImagesCollide(Ball,ballx,bally,0,Balken,balkenx,balkeny,0) Then ;Kollision zwischen Ball und Schläger
bewegenx = +5
Punkte = Punkte+1
EndIf
If ballx = 0 Then End ;Wenn der Ball den Außenwand berührt dann Ende
End Function
;Ende


Also, entweder hab ich da ein fehler oder das Programm hat ein Bug!
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 22, 2005 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;Start
;///////////////////////////////////Initialisierungen////////////////////////////////////////////////////////////////////////////////
Graphics 640 ,480,0,2
AppTitle \"BlitzPong\"
SetBuffer BackBuffer ()
;Variablen
Global Balken = LoadImage (\"Balken.bmp\") ;Schläger var.
MaskImage Balken,0,0,255
Global Ball = LoadImage (\"Ball.bmp\") ;Ball var.
MaskImage Ball, 0 ,0,255
Global Wand = LoadImage (\"Wand.bmp\") ;Wand var.
Global HG = LoadImage (\"hg.jpg\") ;Spiel Hintergrund var.
ResizeImage HG,640,480 ;Bild anpassen
Menu_HG = LoadImage (\"Hauptmenue.png\") ;Hauptmenü Hintergrund var.
Credits_HG = LoadImage (\"Credits.png\")
Global Punkte = 0
;//////////////////////////////////////Hauptschleife/////////////////////////////////////////////////////////////////////////////////

Repeat
Cls
DrawImage Menu_HG,0,0
If KeyHit (2) Then Game ()
Flip
Until KeyHit (1)

End
;///////////////////////////////////////Functionen///////////////////////////////////////////////////////////////////////////////////

Function Game ()
balkenx = 20 ;Schläger : breite
balkeny = 110 ;Schläger : länge
ballx = 60 ;Ball : breite
bally = 110 ;Ball : länge
bewegenx = 5 ;Ball speed x
bewegeny = 5 ;Ball speed y

Repeat
Text 10 ,0,\"Punkt(e): \" + Punkte
DrawImage HG,0,0
DrawImage Wand,0,0 ;Wand(Wand.bmp) zeichnen
DrawImage Balken,Balkenx,Balkeny ;Schläger(Balken.bmp) zeichnen und die länge,breite (balkenx,y) zuweisen
DrawImage Ball,ballx,bally ;Ball(Ball.bmp) zeichnen und die länge,breite (ballx,y) zuweisen
If KeyDown (200) Then balkeny = balkeny - 2 ;Wenn Taste (nach oben) gedrückt wird, dann den Schläger nach oben bewegen.
If KeyDown (208) Then balkeny = balkeny + 2 ;Wenn Taste (nach unten) gedrückt wird, dann den Schläger nach unten bewegen.
If balkeny = 4 Then balkeny = 8 ;Wenn der Schläger oben ist, dann nicht mehr weiter
If balkeny = 346 Then balkeny = 342 ;Wenn der Schläger unten ist, dann nicht mehr weiter
ballx = ballx + bewegenx ;Ball nach links/rechts bewegen
bally = bally + bewegeny ;Ball nach oben/unten bewegen
If bally > 480 - 30 Then bewegeny = -5 ;Ball kollision (rechte Wandberührung)
If bally < 0 Then bewegeny = + 5 ;Ball kollision (obere Wandberührung)
If ballx > 640 - 30 Then bewegenx = -5 ;Ball kollision (untere Wandberührung)
If ImagesCollide (Ball,ballx,bally,0,Balken,balkenx,balkeny,0) Then ;Kollision zwischen Ball und Schläger
bewegenx = + 5
Punkte = Punkte + 1
EndIf
Flip
Until ballx = 0 ;Wenn der Ball den Außenwand berührt dann Ende

End Function

habe Kleinigkeit geändert, aber das siehts du schon
mehr konnt ich auf Anhib nicht finden
[BB2D | BB3D | BB+]

SonGoku

BeitragDi, März 22, 2005 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, danke ^^ jetzt klappt alles wunderbar.
Ich wusste nicht, dass man 2x Repeat und Flip benutzen darf.
Hab was dazugelernt Very Happy

Danke vielmals!

Greetings
SonGoku
Projekt "BlitzPong" --> 100%

BRL Account mit Blitz3D und BlitzMax für nur 67€!!!
Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group