Probleme beim Menu Switch

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ReLeNtLeSS

Betreff: Probleme beim Menu Switch

BeitragMo, Okt 29, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho,

normalerweise müsste mein Stück Code hier prächtig funzen, allerdings gibt es einige Probleme beim Switchen zwischen den Menüs...

Das Menü bleibt quasi "stecken"...

Der Code:
Code: [AUSKLAPPEN]

;Hautpschleife



Repeat

If menu=1 Then
menu()
EndIf

If game=1 Then
 If time_timer=1 Then
 time1=MilliSecs()
 time_timer=0
 EndIf

landscape()
auto()
create_autos()
autos_bewegen()
create_camels()
camels_bewegen()

time2=MilliSecs()
time3=time2-time1
time4=time3/600

kollisionen()

Color(255,0,0)
Text 0,0,"Aktuelle Punktzahl: "+points
Text 0,30,"Aktuelle Spielzeit: "+time4+" Secs"
Text 0,60,"Bisherige Crashes: "+crashcount
Color(255,255,255)
EndIf

If crashcount>=3 Then
the_end()
EndIf

If menusetting=1 Then
menu_settings()
EndIf

If credits=1 Then
credits()
EndIf

Flip
Cls
Until KeyHit(1)

;Functions

Function menu()

DrawImage bg,0,0
DrawImage button1,220,200
DrawImage button2,220,400
DrawImage button3,220,600

If ImagesOverlap(button1,220,200,maus,MouseX(),MouseY()) Then DrawImage button1_a,220,200
If ImagesOverlap(button2,220,400,maus,MouseX(),MouseY()) Then DrawImage button2_a,220,400
If ImagesOverlap(button3,220,600,maus,MouseX(),MouseY()) Then DrawImage button3_a,220,600

If ImagesOverlap(button1,220,200,maus,MouseX(),MouseY()) And MouseDown(1)=True Then
menu=0
game=1
EndIf

If ImagesOverlap(button2,220,400,maus,MouseX(),MouseY()) And MouseDown(1)=True Then
menu=0
menusetting=1
EndIf

If ImagesOverlap(button3,220,600,maus,MouseX(),MouseY()) And MouseDown(1)=True Then
menu=0
credits=1
EndIf

DrawImage maus,MouseX(),MouseY()
End Function

;--

Function menu_settings()

Text 400,400,"Not available yet."

WaitKey()

menusetting=0
menu=1

End Function

;--

Function credits()
Cls

DrawImage bg,0,0
Text 200,400,"Game Design and Programming by Dominik van Megchelen. CLOSED BETA 1"

Delay 3000

End

End Function

;__________________


Wer den Fehler findet, vielen Dank!


/EDIT: Meine Globals Wink

Code: [AUSKLAPPEN]

Global y1=100
Global y11=400
Global y21=700

Global autox=750
Global autoy=950

Global counter=0
Global points=0
Global counter_spielzeit=0
Global punkte_timer=0

Global camelcounter=0

Global aut_timer=0

Global by1=-20
Global by2=-180
Global by3=-350
Global by4=0
Global by5=-250
Global by6=-450

Global crashcount=0

Global points_check=0
Global points_camel=0

Global cameldeath=0

Global time4

Global menu=1
Global game=0
Global menusetting=0
Global credits=0

Global time_timer=1

Global ende=0
 

Shark

BeitragMo, Okt 29, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du vielleicht dein Problem näher erläutern?
Was meinst du beim switchen vom Menü?
Vom Spiel zum Menü oder wie?

mfg Shark

ReLeNtLeSS

BeitragDi, Okt 30, 2007 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich im Hauptmenu ins Einstellungen menu will, geht gar nixm her..... alles bleibt stehn

Firstdeathmaker

BeitragDi, Okt 30, 2007 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm lieber nur eine einzige Variabel für die Menüstates, so etwas wie

Code: [AUSKLAPPEN]

MENUESTATE%



Wenn du verschiedene nimmst ist die Gefahr, dass du zwei zur gleichen Zeit oder gar keinen aktiv hast gegeben. Im code könnte mein Beispiel so aussehen:


Code: [AUSKLAPPEN]
repeat
cls
select MENUESTATE
 case 1 Hauptmenue_run() ;Hauptmenü
 case 2 Game_run();Game
 case 3 Highscores_run();Highscores
end select
flip
until MENUESTATE = 0
end
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

BladeRunner

Moderator

BeitragDi, Okt 30, 2007 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Rücke deinen Code ein. Sonst werden die meisten hier die Mithilfe verweigern, denn was sich schon liesst wie Buchstabensuppe macht unheimlich Lust drauf zu helfen.
2. Warum 35+x Variaben wo Du grade hinverzweigen willst? Da ist es kein Wunder dass Du vergisst einige wieder auf 0 zu setzen. EINE Varable in der der aktuelle Gamestate (Menu, Einstellungen, etc.) anhand eines Wertes gespeichert ist reicht vollkommen.
Dann kannst Du die auch alle in einer feinen select-case abarbeiten und ersparst Dir den unseligen if-Wald.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ReLeNtLeSS

BeitragDi, Okt 30, 2007 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@Firstdeathmaker

Danke, so teste ich das gleich mal aus, melde mich zurück!
/EDIT: Hab da doch ein Problem. Woher soll das Prog denn wissen welches Bild sich mit welchem Bild bei MENUSTATE CASE 1 überschneidet?

@bladerunner

ich finde, der code is eingerückt.... was sollte man da noch einrücken?

BladeRunner

Moderator

BeitragDi, Okt 30, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
if a = 3454
    for a = 1 to 10
        ;hier ist ein eingerückter block
        print blub
    next
endif

Das ist eingerückt. Was Du machst ist Abstände lassen.
Einrücken (per Tab) ist extremst förderlich für die Übersicht, denn man erkennt auf einen Blick die logischen Blöcke im Code.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ReLeNtLeSS

BeitragDo, Nov 01, 2007 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Hauptcode is eingerückt, nur das was ihr hier seht nich, weil es ein CODEAUSSCHNITT ist.

Ausserdem, habe ich jetz das Problem das wenn ich auf Settings klicke nur schwarzer Bildschirm kommt...
 

Marek

BeitragDo, Nov 01, 2007 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbst wenn es nur ein Codeausschnitt ist, kannst du ihn doch wohl einrücken oder nicht?

~Edit~

In deiner Funktion steht sowas wie

Text x,y,txt$

Waitkey()

Hier ist auch schon der Fehler,ein syímples Flip dazwischen sollte das Problem auch schon lösen...
Am besten du schaust dier nocmal die Doppel-Buffering-Tutorials durch..
MfG Marek
Wer lesen kann ist klar im Vorteil...

ReLeNtLeSS

BeitragDo, Nov 01, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@Marek

ich versteh schon, ich habe aber einfach die delays rausgenommen damit er das flip der hauptschleife nimmt... ich hab endlich den sinn von flip etc verstanden^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group