Von dem Code in den anderen Code gelangen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

GoldDave

Betreff: Von dem Code in den anderen Code gelangen?

BeitragMo, Okt 22, 2012 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

ich weiß, ich nerve wahrscheinlich schon, aber ich habe mal wieder ein (bestimmt für euch einfaches) Problem.
Ich habe ein Menü_Code geschrieben mit verschiedenen Cases.
Die ich auch alle auswählen kann.
Meine Frage: Wie kann ich von den einen Code in den anderen Code gelangen, somit mein Menü_Code mit meinem Spiel_Code verschmilzt.
Sodass, wenn das Menü startet und ich auf Starten klicke, das Spiel startet.

Meine Schleife vom Menü sieht wie folgt aus:

Code: [AUSKLAPPEN]

While Not KeyHit(1)         
   Cls

   DrawImage Hintergrund, y_H, x_H   

      Select menue

         Case 0   ;Start
            DrawImage Start_Button_gewaehlt,       200, 150
            DrawImage Anleitung_Button,          200, 260
            DrawImage Beenden_Button,             200, 370
         
         Case 1   ;Extras
            DrawImage Start_Button,             200, 150
            DrawImage Anleitung_Button_gewaehlt,    200, 260
            DrawImage Beenden_Button,             200, 370
      
         Case 2    ;Beenden
            DrawImage Start_Button,             200, 150
            DrawImage Anleitung_Button,          200, 260
            DrawImage Beenden_Button_gewaehlt,       200, 370
            
      End Select
      
      If       KeyHit(200)
               menue = menue - 1      ;navigiert hoch
      ElseIf   KeyHit(208)      
               menue = menue + 1      ;navigiert runter
      EndIf
      
      
      If menue > 2 Then menue = 0 ElseIf menue < 0 Then menue = 2

      ;Überprüfung, auf welchem Case man sich gerade befindet.
      Color 0, 0, 255
      Text 10, 10, menue

      ;Bei 'Beenden' und drücken der Eingabetaste schließt das Programm.
      If KeyHit (28) Or KeyHit (156)    And menue = 2 Then End
      
      ;If KeyHit (28) Or KeyHit (156)    And menue = 0 Then ...[b]Hier ist mein Problem ich kenne keine Funktion die das macht -.-.[/b]
      
      
   Flip   ;Buffer flippen <->
Wend
End



Ich hoffe mir kann jemand weiterhelfen.
Ich bin über jede Antwort froh und ich hoffe ihr könnt mein noch kleines Wissen erweitern.

Freundliche Grüße
GoldDave
 

Hangman

BeitragMo, Okt 22, 2012 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Packe deine einzelnen Programmteile in Funktionen.
Ich habe Berthold gebrochen.

BladeRunner

Moderator

BeitragMo, Okt 22, 2012 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ergänzend dazu lass in deinem Hauptprogramm eine Finit State Machine entscheiden wohin verzweigt wird.
Beispiele auch hier im Portal:
https://www.blitzforum.de/foru...php?t=6780
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
 

GoldDave

BeitragMo, Okt 22, 2012 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@Hangman, meinst du ich soll alle drei Code in eins machen oder wie?
@ BladeRunner, ich werde mir es mal durchlesen.

Starwar

BeitragMo, Okt 22, 2012 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat schon vorgearbeitet: https://www.blitzforum.de/foru...hp?t=33468
Siehe auch: https://www.blitzforum.de/foru...hp?t=33584
Und: Global
MFG
  • Zuletzt bearbeitet von Starwar am Mo, Okt 22, 2012 14:57, insgesamt einmal bearbeitet
 

GoldDave

BeitragMo, Okt 22, 2012 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Och Mensch, es will einfach nicht funktionieren.
Ich versuche gerade meine 3 Code, in Funktionen umzuwandeln, jedoch klappt das nicht richtig.
Gibt es vill nicht einfach ein Befehl, wie z. B. LoadData (PFAD etc)... oder sowas wodurch ich einfach nur sagen brauch

If Keyhit(Eingabetaste) or Keyhit(Enter) and menue = 1 Then LoadData(SPIEL)

BladeRunner

Moderator

BeitragMo, Okt 22, 2012 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste Deine Codes, anders wird das hier nichts.
Suchst Du unter Umständen include?
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
 

GoldDave

BeitragMo, Okt 22, 2012 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Menü_Code

Code: [AUSKLAPPEN]

Const vers$ = "v. 0.1"
AppTitle "TicTacToe Cover " + vers$
Graphics 900,600,16,2


;Variablen definieren
menue = 0
;Eingabetaste = KeyHit(28) And KeyHit(156)                                                [Test]
   
Global Start_Button             = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Start_Button.png")
Global Anleitung_Button          = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Anleitung_Button.png")
Global Beenden_Button             = LoadImage ("C:\Users\....\Desktop\Menü Projekt 1\Beenden_Button.png")

Global Start_Button_gewaehlt       = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Start_Button_gewaehlt.png")
Global Anleitung_Button_gewaehlt   = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Anleitung_Button_gewaehlt.png")
Global Beenden_Button_gewaehlt       = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Beenden_Button_gewaehlt.png")

Global Hintergrund                = LoadImage ("C:\Users\...\Desktop\Sonstiges\Hintergrund.png")

;Bilder laden

LoadImage = Start_Button
LoadImage = Anleitung_Button
LoadImage = Beenden_Button
LoadImage = Start_Button_gewaehlt
LoadImage = Anleitung_Button_gewaehlt
LoadImage = Beenden_Button_gewaehlt
LoadImage = Hintergrund


SetBuffer BackBuffer()

y_H = 0
x_H = 0

;____SCHLEIFE____;

;Schleife
While Not KeyHit(1)         
   Cls

   DrawImage Hintergrund, y_H, x_H   

      Select menue

         Case 0   ;Start
            DrawImage Start_Button_gewaehlt,       200, 150
            DrawImage Anleitung_Button,          200, 260
            DrawImage Beenden_Button,             200, 370
         
         Case 1   ;Extras
            DrawImage Start_Button,             200, 150
            DrawImage Anleitung_Button_gewaehlt,    200, 260
            DrawImage Beenden_Button,             200, 370
      
         Case 2    ;Beenden
            DrawImage Start_Button,             200, 150
            DrawImage Anleitung_Button,          200, 260
            DrawImage Beenden_Button_gewaehlt,       200, 370
            
      End Select
      
      If       KeyHit(200)
               menue = menue - 1      ;navigiert hoch
      ElseIf   KeyHit(208)      
               menue = menue + 1      ;navigiert runter
      EndIf
      
      
      If menue > 2 Then menue = 0 ElseIf menue < 0 Then menue = 2

      ;Überprüfung, auf welchem Case man sich gerade befindet.
      Color 0, 0, 255
      Text 10, 10, menue

      ;Bei 'Beenden' und drücken der Eingabetaste schließt das Programm.
      If KeyHit (28) Or KeyHit (156)    And menue = 2 Then End

      ;If KeyHit (28) Or KeyHit (156)    And menue = 0 Then
      
      
   Flip   ;Buffer flippen <->
Wend
End




Anleitung_Code

Code: [AUSKLAPPEN]


Const vers$ = "v. 0.1"
AppTitle "TicTacToe Cover " + vers$ + " Anleitung"
Graphics 900,600,32,2

menue = 0

Global Zurueck_Button_gewaehlt   = LoadImage ("C:\Users\...\Desktop\Menü Projekt 1\Zurueck_Button_gewaehlt.png")

Arial_gross   = LoadFont("Arial",40)
Arial_klein   = LoadFont("Arial",20)
SetFont(Arial_gross)
SetFont(Arial_klein)

LoadImage = Zurueck_Button_gewaehlt

SetBuffer BackBuffer()



While Not KeyHit(1)
   
   Cls

SetFont(Arial_gross)
   Color 127,184,255
      Text 70, 60,   "Spieler 1 (X) startet immer!"
      Text 70,100,    "Das Spielfeld ist das Ziffernblock an Ihrer Tastatur!"
      Text 70,140,    "Es spielt Spieler 1 vs. Spieler 2."
      Text 70,180,    "Ich wünsche Ihnen viel Spaß und viel Erfolg."
   
SetFont(Arial_klein)
   Color 255,215,0
      Text 10,580, "created by GoldDave"

   Select menue
   
         Case 0   ;zurück
         
            DrawImage Zurueck_Button_gewaehlt,      200, 320
            
   End Select

   If KeyHit (28) Or KeyHit (156)    And menue = 0 Then End


   Flip
Wend

FreeFont(Arial_gross)
FreeFont(Arial_klein)

WaitKey()

End


Spiel_Code

Code: [AUSKLAPPEN]

Const vers$ = "v. 0.1"
AppTitle "TicTacToe Cover " + vers$
Graphics 900,600,32,2


;Variablen definieren.(Global = überall erreichbar & veränderbar) (Local = innerhalb einer Funktion)
;x% Variable für Zahlen : x$ Variable für Zeichenketten
Global X_Bild          = LoadImage("C:\Users\....\Desktop\Sonstiges\X_Bild.png")
Global O_Bild          = LoadImage("C:\Users\...\Desktop\Sonstiges\O_Bild.png")
Global Hintergrund_Bild   = LoadImage("C:\Users\...\Desktop\Sonstiges\Hintergrund_Bild.png")

Global Spieler          = 1

Dim SpielerWechsel(2)
SpielerWechsel(1) = 2
SpielerWechsel(2) = 1

;0 = leere Felder; (1 = X_Bild; 2 = O_Bild)
Dim Feld(9)

;Wohin er malt.
Dim FeldX(9)
FeldX(1)         = 40
FeldX(2)         = 340
FeldX(3)         = 640
FeldX(4)         = 40
FeldX(5)         = 340
FeldX(6)         = 640
FeldX(7)         = 40
FeldX(8)         = 340
FeldX(9)         = 640

Dim FeldY(9)
FeldY(1)         = 400
FeldY(2)         = 400
FeldY(3)         = 400
FeldY(4)         = 200
FeldY(5)         = 200
FeldY(6)         = 200
FeldY(7)         = 0
FeldY(8)         = 0
FeldY(9)         = 0

;Laden von Bilder.

LoadImage Hintergrund_Bild
LoadImage X_Bild
LoadImage O-Bild

SetBuffer BackBuffer()

y_H = 0
x_H = 0

Repeat
   Cls
   
   ;Tastaturbelegung
   
   If KeyHit      (79) And Feld(1) = 0 Then    
      Feld(1) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (80) And Feld(2) = 0 Then   
      Feld(2) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (81) And Feld(3) = 0 Then   
      Feld(3) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (75) And Feld(4) = 0 Then   
      Feld(4) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (76) And Feld(5) = 0 Then   
      Feld(5) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (77) And Feld(6) = 0 Then   
      Feld(6) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (71) And Feld(7) = 0 Then   
      Feld(7) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (72) And Feld(8) = 0 Then   
      Feld(8) = Spieler
      Spieler = SpielerWechsel(Spieler)
   ElseIf KeyHit   (73) And Feld(9) = 0 Then   
      Feld(9) = Spieler
      Spieler = SpielerWechsel(Spieler)
   EndIf
   
   ;Unentschieden
   
   If Feld(1) = 0 Or Feld(2) = 0 Or Feld(3) = 0 Or Feld(4) = 0 Or Feld(5) = 0 Or Feld(6) = 0 Or Feld(7) = 0 Or Feld(8) = 0 Or Feld(9) = 0 Then
      
      Else   
         FlushKeys()
         Text 10,10,"Unentschieden!"
         Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
         Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
         Flip(0)
         WaitKey()
          Brettvorbereitung()
   EndIf
   
   ;Spieler 1 Sieg.
      
   If Feld(1) = 1 And Feld(2) = 1 And Feld(3) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   
   If Feld(4) = 1 And Feld(5) = 1 And Feld(6) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(7) = 1 And Feld(8) = 1 And Feld(9) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(1) = 1 And Feld(5) = 1 And Feld(9) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(3) = 1 And Feld(5) = 1 And Feld(7) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(1) = 1 And Feld(4) = 1 And Feld(7) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(2) = 1 And Feld(5) = 1 And Feld(8) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(3) = 1 And Feld(6) = 1 And Feld(9) = 1 Then
      FlushKeys()
      Text 10,10,"Spieler 1 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   
   ;Spieler 2 Sieg.
   
   If Feld(1) = 2 And Feld(2) = 2 And Feld(3) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(4) = 2 And Feld(5) = 2 And Feld(6) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(7) = 2 And Feld(8) = 2 And Feld(9) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(1) = 2 And Feld(5) = 2 And Feld(9) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(3) = 2 And Feld(5) = 2 And Feld(7) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(1) = 2 And Feld(4) = 2 And Feld(7) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(2) = 2 And Feld(5) = 2 And Feld(8) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   If Feld(3) = 2 And Feld(6) = 2 And Feld(9) = 2 Then
      FlushKeys()
      Text 10,10,"Spieler 2 hat gewonnen!"
      Text 10,40,"Druecken Sie Enter um das Spiel zu wiederholen!"
      Text 10,70,"Druecken Sie ESC um das Spiel zu Beenden!"
      Flip(0)
      WaitKey()
      Brettvorbereitung()
   EndIf
   
      

      
   DrawImage Hintergrund_Bild, x_H, y_H
   
   For Draw_durchlauf = 1 To 9
      If Feld(Draw_durchlauf) = 1 Then
         DrawImage X_Bild, FeldX(Draw_durchlauf), FeldY(Draw_durchlauf)
      ElseIf Feld(Draw_durchlauf) = 2 Then
         DrawImage O_Bild, FeldX(Draw_durchlauf), FeldY(Draw_durchlauf)
      EndIf
   Next      
   
   Flip
Until KeyHit(1)
End

Function Brettvorbereitung()
   Feld(1)         = 0          
   Feld(2)         = 0
   Feld(3)         = 0
   Feld(4)         = 0
   Feld(5)         = 0
   Feld(6)         = 0
   Feld(7)         = 0
   Feld(8)         = 0
   Feld(9)         = 0
Spieler          = 1
End Function



Ich nehme gerne Kritik an und bin euch nicht böse!
Ich lerne gerne viel neues dazu. Smile
Gruß
GoldDave

~EDITIERT~

Hab' mir mal erlaubt die überlange Kommentarzeile zu kürzen, weil die sonst das Foren-Layout zerschiesst.
mfG, Holzchopf

Addi

BeitragMo, Okt 22, 2012 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du packst deine Codes in Funktionen und dann kannst du es wie folgt machen:

BlitzBasic: [AUSKLAPPEN]
Global GameState = 0
While Not KeyHit(1)
Cls

;Gucken, in welchem Spielzustand sich das Spiel befindet
Select GameState
Case 0
Menu()
Case 1
Anleitung()
Case 2
Game()
End Select

Flip(0)
Wend

Function Menu()
;Der Code für dein Menu
End Function

Function Anleitung()
;Der Code für deine Anleitung
End Function

Function Game()
;Dein Spiel Code (das, was am meisten zählt =) )
End Function


Des Weiteren würde ich dir empfehlen Relative Pfade zu benutzen, da bei anderen Leuten der Pfad
zum Desktop anders ist und somit die Bilder dann nicht mehr geladen werden können.
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62
 

GoldDave

BeitragMo, Okt 22, 2012 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werde morgen mal dein Rat befolgen und testen, ob ich das genauso umsetzen kann, wie du es sagst. Vielen Dank schonmal.

Jedoch würde mir ein Befehl wie Include sehr weiterhelfen. Aber funktioniert hat es bei mir leider noch nicht. Ich werde morgen weiter daran experimentieren.

Xeres

Moderator

BeitragMo, Okt 22, 2012 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutzt doch um Himmels willen Konstanten!
BlitzBasic: [AUSKLAPPEN]
Const GS_Menu=0, GS_Anleitung=1, GS_Game=2
Global GameState = GS_Menu
Besser Lesbar & weniger Fehleranfällig.
Die Includes sollten dann nur Funktionen enthalten und selber kein Graphics usw. - wenn du es richtig machst (nach meiner Definition richtig) benutzt du dann nur exakt ein Mal Flip.
Durch die Auslagerung in Funktionen musst du dann wohl ein paar Dinge Global deklarieren.

Unsinn, den du Ersatzlos streichen solltest:
BlitzBasic: [AUSKLAPPEN]
LoadImage = Start_Button 
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)
 

GoldDave

BeitragDi, Okt 23, 2012 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab es so gut wie hinbekommen, jedoch versteh ich etwas nicht.

Ich habe folgendes Problem.

Wenn ich diese Befehle eingebe:
Code: [AUSKLAPPEN]

   If haupt_menue = 0 And KeyHit(28) Then gamestate = 2
         
   If haupt_menue = 1 And KeyHit(28) Then gamestate = 1
         
   If haupt_menue = 2 And KeyHit(28) Then End

Macht er nur die Erste IF-Bedingung. Die anderen 2 werden gar nicht beachtet ...
Mit Endif etc. funktioniert das auch nicht..
Was für ein Befehl, hab ich mal wieder vergessen?

Hubsi

BeitragDi, Okt 23, 2012 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Tastenanschläge werden gepuffert und beim Aufruf von KeyHit() zurückgesetzt. Heißt für Deinen Code beim ersten If bekommt er noch einen Wert, alle weiteren bekommen nur False zurück. Abhilfe schafft hier das zwischenspeichern:
BlitzBasic: [AUSKLAPPEN]
hit_enter=KeyHit(28)

If haupt_menue=0 And hit_enter Then
;bla
EndIf
If haupt_menue=1 And hit_enter Then
;bla
EndIf
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragDi, Okt 23, 2012 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Außerdem ist dies:
BlitzBasic: [AUSKLAPPEN]
If haupt_menue = 0 And KeyHit(28) Then gamestate = 2
If haupt_menue = 1 And KeyHit(28) Then gamestate = 1
If haupt_menue = 2 And KeyHit(28) Then End

Äquivalent zu
BlitzBasic: [AUSKLAPPEN]
If KeyHit(28) Then
If haupt_menue = 0 Then gamestate = 2
If haupt_menue = 1 Then gamestate = 1
If haupt_menue = 2 Then End
EndIf

Und das wiederum sollte als Select Case da stehen (mit Konstanten statt einfachen Zahlen).
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)
  • Zuletzt bearbeitet von Xeres am Di, Okt 23, 2012 20:12, insgesamt einmal bearbeitet

ZEVS

BeitragDi, Okt 23, 2012 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, ist es nicht. KeyHit liefert höchstens in der ersten Abfrage True, weil And in BlitzBasic beide Argumente auswertet.

ZEVS
 

GoldDave

BeitragMi, Okt 24, 2012 7:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank Xeres und natürlich an die anderen Helfer.
Ich hoffe ich kann mich weiterhin hier im Forum blicken lassen und Fragen stellen, da ich ziemlich motiviert bin B+ programmieren zu lernen.

Falls sich jemand genervt fühlt, einfach bescheid geben oder wegschauen.

Gruß
GoldDave

Xeres

Moderator

BeitragMi, Okt 24, 2012 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Solange du dich bemühst, deine Probleme zu lösen bist du immer gern gesehen - gerade im Beginners Corner sollte sich da Niemand aufregen. Wink
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)
 

PhillipK

BeitragMi, Okt 24, 2012 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap, xeres hat recht.

Es gibt genug trolle, die ankommen mit "ich möchte xyz machen. macht ihr das mal für mich!" - grob übersetzt.
Heißt im endeffekt, das jemand hilfe erwartet, zu einer wirklich blöde forumlierten sache, ohne eigene intention, denkansätze oder ... Sie lassen einfach nicht durchblicken, das sie es versucht haben. Und wenn, geizen sie mit code.

Also, mach dir immer brav gedanken, versuch ein paar ansätze und wenns nicht klappt, melde dich. Dann bitte mit Code, sinnig eingerückt und sei er noch so blöde programmiert - nur aus fehlern lernt man. Einfach abzuschreiben (oder noch besser: Copy + paste) bringt nichts, ausser weitere fragen.

Ergo: Wir helfen gerne bei problemen, aber lösen sie nicht vollends - aber denkanstöße und "unter die arme greifen" wirst du hier finden ^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group