Problm mit Menü

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Lifetec

Betreff: Problm mit Menü

BeitragMi, Feb 01, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich will ein Zins errechner Bauen und habe jetzt eine Konstruktion mit Menü Button doch seit ich Input reingeschrieben habe wird der Bildschirm schwarz wenn ich es starte und nach dem Eingeben kommt erst das Bild.
Code: [AUSKLAPPEN]
; HAUPTMENU.BB
Graphics 1024,768, 16,1
hinter = LoadImage ("c:\Zinsen\Menu.bmp")
B1 = LoadImage("c:\Zinsen\B1.bmp")
tiles = LoadImage ("c:\blocks1.bmp")
maus = LoadImage ("c:\pointer.bmp")
font = LoadFont("Times New Roman", 40, 1, 0, 0)
WP = LoadImage("c:\Zinsen\WP.bmp")
SetFont font

; Graphik für Menüpunkt erzeugen

stein = CreateImage(32,32)
SetBuffer ImageBuffer(stein)
DrawImageRect tiles, 0, 0, 444, 308, 32, 32
ScaleImage stein, 8, 2

; Graphik für aktiven Spielstein erzeugen

aktivstein = CreateImage(32,32)
SetBuffer ImageBuffer(aktivstein)
DrawImageRect tiles, 0, 0, 2, 342, 32, 32
ScaleImage aktivstein, 8, 2

; Menü definieren
Print CurrentTime()

Dim MenuZeile(3) : Dim MenuName$(3)
MenuZeile(1) = 100 : MenuName$(1) = "Neu"
MenuZeile(2) = 200 : MenuName$(2) = "Hilfe"
MenuZeile(3) = 300 : MenuName$(3) = "Ende"



;
; Hauptmenü-Schleife
;
SetBuffer BackBuffer()
Repeat
 TileBlock hinter
 Menu = 0
 X = MouseX()
 Y = MouseY()
   
   
 For I=1 To 3


DrawImage B1, 575, 100                                         ;rein proggen
DrawImage WP, 575, 300
Locate 600,335 : Input()




  If ImageRectOverlap (maus, X, Y, 192, 100*I, 256, 64) Then
   DrawImage aktivstein, 192, I * 100
   Menu = I
  Else
   DrawImage stein, 192, I * 100
  EndIf
  Text (640 - StringWidth( MenuName$(I) )) / 2, I*100 + 12, MenuName$(I)
 Next

 DrawImage maus, X,Y
 Flip

 If MouseHit(1) Then
  If Menu = 1 Then Start()
  If Menu = 2 Then Einstellungen()
  If Menu = 3 Then Ende()
 EndIf
 
 Until KeyHit(1)
End

;
; Funktionen für Menüpunkte
;

Function Start()
 Repeat
  Cls
  Text 100,100, "Spielstart"
  Flip
 Until KeyHit(1)
End Function

Function Einstellungen()
 Repeat
  Cls
 
  Flip
 Until KeyHit(1)
End Function

Function Ende()
 Repeat
 Cls
 Locate 100,100 Print "ESC drücken !"
 Flip
 Until KeyHit(1)
 End

End Function




Was mach ich falsch ????

5k41

BeitragMi, Feb 01, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Du machst nichts falsch!
Der Befehl Input ist halt so, dass das Programm an der Stelle wo der Befehl auftaucht anhält und wartet bis du was Eingegeben hast und enter gedrückt hast!
Wenn dir das nicht passt musst du dir eine eigene Input-Routine schreiben per Getkey() und Chr ...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Dreamora

BeitragMi, Feb 01, 2006 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, dass Input leider den Programmfluss stoppt, bis die eingabe beendet ist.
Wenn du etwas entsprechendes mit deinem selbstgemachten GUI willst, musst du dir eigene eingabefunktionen schreiben, die das neuzeichnen etc nicht blockieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lifetec

BeitragMi, Feb 01, 2006 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin ja totaler anfanger wie geht denn das so ein Programm zu schreiben was denn Bfehlsfluss nicht aufhält kann mir jemand das zeigen. Damit ich weiß wie so etwas aussieht ???

Lifetec

BeitragMi, Feb 01, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt festgestellt das wenn ich das Programm starte, der Befehl Input nicht mehr aufhort also das es immer wieder in einer neuen Zeile losgeht.

Wie kann ich das verhinder ????

5k41

BeitragMi, Feb 01, 2006 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Das liegt daran, dass du den Input Befehl jeden Schleifendurchlauf ausführen lässt....
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Lifetec

BeitragMi, Feb 01, 2006 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was kann ich dagegen machen ???

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 01, 2006 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du entfernst dein Input-Befehl aus der Schleife. Setzt es irgendwo an einer anderen Stelle vor der Schleife, wenn nur einmal eine Eingabe erfolgen soll. Soll im Menü immer wieder darauf zugegriffen werden können, dann musst du dir deine eigene Routine dafür schreiben...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group