´Global´ can only appear in main programm

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

ekk1998

Betreff: ´Global´ can only appear in main programm

BeitragSo, Okt 23, 2011 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja eigentlich selbsterkärend ,aber ich hab keine Lust die ganzen Globals vom Spiel ins Hauptmenü zu kopieren. Gibt es da einen Trick ?

Hauptmenücode:

Code: [AUSKLAPPEN]
Graphics 800, 600
SetBuffer BackBuffer()

Print "1 = Spiel starten"
Print "2 = Optionen"
Print "3 = Credits"
Print "4 = Beenden"

.a

Wahl$ = Input ()

If Wahl = "1" Then 
  Include "Spiel.bb"

ElseIf Wahl = "2"
  Include "Optionen.bb"

ElseIf Wahl = "3"
  Include "Credits.bb"

ElseIf Wahl = "4"
  End

Else
  Goto a

EndIf



Danke im Vorraus !

Xeres

Moderator

BeitragSo, Okt 23, 2011 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Include verwendet man so nicht. Du includierst Funktionen am Anfang des Codes - man lagert nicht beliebigen Code einfach so aus.
GoTo kannst du dir auch gleich abgewöhnen, das beides führt nur zu unnützem Code den Niemand versteht.

Benutz Funktionen & richtige Schleifen.
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)

Midimaster

BeitragMo, Okt 24, 2011 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit INCLUDE fügst Du ganz oben in deinem Programm weitere Texte dem Original-Script an. Dies macht man nur, um nicht zu viel Text auf der Hauptseite des Programm stehen zu haben.

Innerhalb des eigentlichen Programms darfst Du INCLUDE gar nicht mehr verwenden.

Mein Tipps:

1.
Solange Dein Code unter 500 Zeilen hat, hältst Du ihn auf einer Seite.


2.
Das Hauptprogram ist eine REPEAT/UNTIL-Schleife, das in die Unterrogramme verzweigt.


3.
Verwende IMMER dieses Grundgerüst:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()
MyTimer=CreateTimer(60)
Repeat
Cls
; dein code
Flip 0
WaitTimer MyTimer
Until KeyHit(1)


4.
Wenn Du nun in verschiedene Unterpgramme verzweigen willst, dann machst Du die Abfrage nicht auch in diese REPEAT-Schleife, sondern die ist schon ein eigenes Unterpgramm:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()
Global Wahl%
MyTimer=CreateTimer(60)
Repeat
Cls
Select Wahl
Case 0
Menu
Case 1
Spiel
Case 2
Optionen
Case 3
Credits
Case 4
End
EndSelect
Flip 0
WaitTimer MyTimer
Until KeyHit(1)


Function Menu()
Wahl=Input()
End Function


Da Wahl% am Anfang 0 ist wird automatisch in das Unterprogramm MENU() gesprungen. Wenn du dort rauskommst ist Wahl nicht mehr 0 und dadurch wird jetzt eines der andern Unterpgramme angesprungen.

Als Beispiel für eines der anderen Unterprogramme zeige ich dir CREDITS().
BlitzBasic: [AUSKLAPPEN]
Function Credits()
Repeat
Cls
; dein code
Flip 0
WaitTimer MyTimer
Until KeyHit(1)
Wahl=0
End Function

CREDITS() ist wieder eine REPEAT-Schleife (Die andern werden mich dafür schlachten, aber machs am Anfang ruhig mal so), die mit ESC verlassen werden kann. Der Witz ist, das es am Ende die Variable Wahl% wieder auf 0 stellt und dadurch das Hauptprogramm wieder nach MENU verzweigen wird.

Ich rate Dir dringend mal die ersten Kapitel aus diesen beiden Tutorials zu lesen:

https://www.blitzforum.de/foru...hp?t=34436

https://www.blitzforum.de/foru...hp?t=33584
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Xeres

Moderator

BeitragMo, Okt 24, 2011 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wozu immer wieder CLS, Flip usw. in jede Funktion packen? Die Funktionen liegen doch schon wunderbar an der richtigen Stelle.
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)

Midimaster

BeitragMo, Okt 24, 2011 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@xeres
weil das wahrscheinlich jetzt gleich mal auf den Restcode passt, den er sowieso schon hat! Ich bin überzeugt, dass ihm der Lernschritt von mir für heute erst mal reicht!
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

BaseTH

BeitragMo, Okt 24, 2011 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich was verpasst?

Ich finde die Frage von Xeres sehr berechtigt.

Es reicht doch in der Hauptschleife CLS und Flip. Alles andere ist doch überflüssiger Code oder sehe ich das falsch?

Gruß,
BaseTH

BladeRunner

Moderator

BeitragMo, Okt 24, 2011 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich halte es für mehr als bedenklich User an die Benutzung mehrerer CLS und Flip zu gewöhnen, da sich in der Vergangenheitz gezeigt hast dass viele BeginnerProbleme mit "flackernden Bildschirmen" oder "Hilfe meine Grafik wird nicht gezeichnet" genau daher rührten.
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group