Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 28.04.2010, 11:54 Titel: menü abfrage (nur wie ?) |
|
|
Hallo,
Da ich jetzt seit ungefär 4 Tage mit Free Basic arbeite und ein richtiges Spiel schreibe (dank dem Forum jetzt auch mit BMP datein, Sprites usw ) bin ich meines achtens schon recht weit gekommen.
bin ich jetzt bei am Punkt, der für mich nicht realisirbar ist:
ein Menü, welches irgentwie über Tasten abfragbar ist:
sieht mom so aus:
Code: |
Spiel Starten
-> Spiel Laden
Spiel Beenden
|
Der Pfeil lässt sich bewegen - wenn man runterdrückt und bei Spiel Beenden ist , dann springt der wieder nach spiel starten und anders rum geht das auch
ich hab das mal so gemacht:
Code: |
DIM AS STRING eingabe
Screen 18,24
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
x = 7
y = 10
Locate x,y
print "->"
DO
eingabe = INKEY
IF eingabe <> "" THEN
SELECT CASE eingabe
CASE CHR(255, 72)
x -= 1
CASE CHR(255, 80)
x += 1
CASE CHR(27)
end
END SELECT
SCREENLOCK
CLS
if x = 10 Then x = 7
if x = 6 Then x = 9
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
Locate x,y
print "->"
SCREENUNLOCK
ENDIF
SLEEP 1
LOOP
|
jetzt will ich das machen das man das irgentwie anklicken kann
- hab schon gedacht das so zu machen
Code: |
if x = 7
if CASE CHR(27)
spiel Starten
endif
|
tuts aber nicht ... noch nicht
- das ganze ist jetzt mal Textbasirt bei mit ist das halt mit sprites
(laüft aber GENAU so ) - nur halt dass ich das weder noch an "entern "
kann  |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 28.04.2010, 14:22 Titel: |
|
|
habs hinbekommen :
Code: |
DIM eingabe AS STRING
Screen 18,24
1
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
x = 7
y = 10
Locate x,y
print "->"
DO
eingabe = INKEY
if eingabe = Chr(255, 72) THEN
x -= 1
end if
if eingabe = Chr(255, 80) THEN
x += 1
end if
if eingabe = Chr(27) THEN
end
end if
if x = 7 and eingabe = Chr(13) THEN
goto spiel_laden
end if
if x = 8 and eingabe = Chr(13) THEN
goto spiel_option
end if
if x = 9 and eingabe = Chr(13) THEN
end
end if
if x = 10 Then x = 7
if x = 6 Then x = 9
SCREENLOCK
CLS
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
Locate x,y
print "->"
SCREENUNLOCK
loop until eingabe="27"
sleep
spiel_laden:
CLS
Print "Spiel Starten"
Sleep(1000)
goto 1
spiel_option:
CLS
Print "option"
Sleep(1000)
goto 1
|
_________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 28.04.2010, 16:50 Titel: |
|
|
Setzen 6!
Verwende keine Gotos, selbst wenn dein Leben davon abhängt, sonst frisst dich ein Raptor.
Versuch und Fehlschlag ist die Devise, bis es halt läuft, auch ohne Goto. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 28.04.2010, 16:51 Titel: |
|
|
Habe es jetzt nicht ausprobiert, aber:
-Kein Goto! BITTE KEIN GOTO!!!!
Schmeiß es aus dem Code raus und vergess, dass du jemals wusstest was das ist.
...
...
...
...
Bitte  |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 28.04.2010, 17:16 Titel: |
|
|
Raptoren sollten ausgestorben sein, sind sie laut dem Bild aber nicht.
Bei Goto ist es genau das gleiche. Das was du mit Goto machst kannst du viel besser und schöner mit sub und function machen. Etwa so:
Code: | DIM shared eingabe AS STRING
dim shared as integer x,y
declare sub printMenu()
declare sub mainLoop()
declare sub spiel_laden()
declare sub spiel_option()
Screen 18,24
printMenu()
sub printMenu()
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
x = 7
y = 10
Locate x,y
print "->"
mainLoop()
end sub
sub mainLoop()
DO
eingabe = INKEY
if eingabe = Chr(255, 72) THEN
x -= 1
end if
if eingabe = Chr(255, 80) THEN
x += 1
end if
if eingabe = Chr(27) THEN
end
end if
if x = 7 and eingabe = Chr(13) THEN
spiel_laden()
end if
if x = 8 and eingabe = Chr(13) THEN
spiel_option()
end if
if x = 9 and eingabe = Chr(13) THEN
end
end if
if x = 10 Then x = 7
if x = 6 Then x = 9
SCREENLOCK
CLS
print " "
print " "
print " "
print " "
print " "
print " "
print " Spiel Starten "
print " Spiel Option "
print " Spiel Beenden "
Locate x,y
print "->"
SCREENUNLOCK
loop until eingabe="27"
sleep
end sub
sub spiel_laden()
CLS
Print "Spiel Starten"
Sleep(1000)
printMenu()
end sub
sub spiel_option()
CLS
Print "option"
Sleep(1000)
printMenu()
end sub |
|
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 28.04.2010, 23:24 Titel: |
|
|
schön und gut aber mein compiler mekkert jetzt seit ich SUB
reingebaut habe folgende meldung:
Code: |
bild = IMAGECREATE(breite, hoehe) - IMPLICIT CONVERSION
BLOAD "title.bmp", bild - PASSING SCARLA AS POINTER AT PARAMETER 2
PUT(x_bmp, y_bmp), bild - EXPECTED IDENDIFIER
|
und jetzt ???
und warum ist goto so "PFUI" ? _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.04.2010, 23:33 Titel: |
|
|
Dein Fehler liegt wahrscheinlich an einem fehlenden
Code: | dim bild as any ptr |
oder zumindest ist dieser PTR nicht in der SUB bekannt. Genaueres kann ich ohne Code aber nicht sagen.
Zu GOTO liest du am besten mal die unzähligen Diskussionen im Netz. Zum Einstieg empfehle ich dies und das. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 29.04.2010, 00:15 Titel: |
|
|
also irgentiw macht das langsam kein spass mehr -
sub ist ja vool umständlich, je mehr ich da ändere jemehr fehlemeldungen bekomm ich - google spuckt nur sub aus , was das ist und so
wie bekomm ich denn jetzt ganz einfach hin, dass der ein BMP in ein SUB auanzeigt wird ???
ich brauch das halt alles für mein menü - mit goto hat alles gefuntz hier der code für bmp
code tuts nicht !!!
Code: |
DECLARE SUB zeige_bild()
DIM AS ANY PTR bild
DIM AS INTEGER breite, hoehe, x, y
DIM AS STRING eingabe
SCREEN 18, 32
breite = 25
hoehe = 25
bild = IMAGECREATE(breite, hoehe)
BLOAD "picture.bmp", bild
BLOAD "picture2.bmp", bild2
PUT(x, y), bild
zeige_bild()
SUB zeige_bild()
DO
eingabe = INKEY
IF eingabe <> "" THEN
SELECT CASE eingabe
CASE CHR(27)
IMAGEDESTROY(bild)
END
END SELCT
SCREENLOCK 'vermeidet flackern
CLS
PUT(x, y), bild
SCREENUNLOCK
SLEEP 1
LOOP
END SUB
|
danke für jede andwort die hilft dass der code ausführbar ist _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 29.04.2010, 06:22 Titel: |
|
|
Wegen Zeitmangels ungetestet:
Code: | DECLARE SUB zeige_bild()
DIM SHARED AS ANY PTR bild
DIM SHARED AS INTEGER breite, hoehe, x, y
SCREEN 18, 32
breite = 25
hoehe = 25
bild = IMAGECREATE(breite, hoehe)
BLOAD "picture.bmp", bild
BLOAD "picture2.bmp", bild2
PUT(x, y), bild
zeige_bild()
IMAGEDESTROY bild
' Programmende
SUB zeige_bild()
DIM AS STRING eingabe
DO
eingabe = INKEY
IF eingabe <> "" THEN
SELECT CASE eingabe
CASE CHR(27)
EXIT SUB
END SELECT
SCREENLOCK 'vermeidet flackern
CLS
PUT(x, y), bild
SCREENUNLOCK
END IF
SLEEP 1
LOOP
END SUB |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 29.04.2010, 09:58 Titel: |
|
|
SUPER ! der Code laüft - ich habs jetzt verstanden.
Das geilste ist ja, wenn man keine BMP datei hat dann zeigt
der ein pinkes Bild an - aber der Fehler lag bei mir
danke nochmals für alles - wusste garnicht was alles mit FB
möglich ist
so jetzt will ich erstmal nach dem bösen GOTO googeln
danke an allen Foren-mitglieder die so tolle beiträge geleistet haben _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
|