geht nicht, wieso???

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

matz

Betreff: geht nicht, wieso???

BeitragDo, Mai 27, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo!

Arrow bitte habt verständnis, für meine dumme frage!

seit 3-4 tagen beschäftige ich mich mit bb und habe jetzt ein kleines quiz geschrieben. am ende des quiz's (ist DAS richtig???) habe ich eine auswahl zwischen dem neustart oder dem beenden des programms eingebaut, welche allerdings nicht funktioniert!

könnt ihr mir sagen wieso?



Code: [AUSKLAPPEN]
.label2

ende = input("type:")   ;neu für neustart und quit für beenden!   
select ende
                   
;neustart
case neu
cls
gosub label1  ;label 1 ist weiter oben!


;beenden
case quit
gosub endpunkt

;falsche eingabe
default
cls
gosub label2

end select


.endpunkt

end


beim eingeben von quit und einer fehleingabe wird man trotzdem zu label1 weitergeleitet!
wo ist mein fehler und könnte man den code auch einfacher oder besser gestalten?

vielen dank für jede antwort/hilfe !!!

cu
matz

Ctuchik

BeitragDo, Mai 27, 2004 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ende muss mit einem $ als String_Variable deklariert werden!
Und neu und quit müssen in Anführungszeichen stehen!
Ausserdem solltest du bei diesem Sprung Goto statt Gosub benutzen!
Code: [AUSKLAPPEN]

.label2

ende$ = input("type:")   ;neu für neustart und quit für beenden!   
select ende$
                   
;neustart
case "neu"
cls
goto label1

;beenden
case "quit"
goto endpunkt

;falsche eingabe
default
cls
goto label2
end select

.endpunkt

end

Markus2

BeitragDo, Mai 27, 2004 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
GoSub ist dafür da das nach einem Return der Code nach dem
Aufruf weiter ausgeführt wirt . Sub ist also eine Unterroutine .
Wenn nicht dann Goto benutzen .

GoSub Bla
GoSub BlaBla
End
.Bla
;Mach was
return
.BlaBla
;Mach auch was
return

matz

BeitragDo, Mai 27, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank für die schnelle antwort!

hätte da noch ne frage:

wie kann ich die mit rand generierte zahl automatisch hinter goto setzen, sodass das programm zufällig zu einer sprungmarke springt?

...oder muss ich das mit if/then machen, wenn ja wie?


danke!

matz

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Mai 27, 2004 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
x= Rand(0,2)
select x
Case 0 : gosub bbla0
Case 1 : gosub bbla1
Case 2 : gosub bbla2
Case 3 : gosub bbla3

end select
[BB2D | BB3D | BB+]

matz

BeitragFr, Mai 28, 2004 7:25
Antworten mit Zitat
Benutzer-Profile anzeigen
nochmals danke!

und wie mach ich es jetzt, dass die bereits generierten zahlen nicht nocheinmal generiert werden?
...sprich, jede frage soll nur einmal drankommen...


grüße
matz

Hubsi

BeitragFr, Mai 28, 2004 8:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Speicher die Fragen in Arrays, dann ist die Zufallssache auch nicht mehr so aufwendig. Dazu noch ein zweites Array mit den Antworten zum vergleichen und schlussendlich ein drittes Array der einfach nur True oder False ist, je nachdem ob die Frage schon dran war. Ist er True neue Zufallszahl generieren. Das ganze dann als Beispiel:
Code: [AUSKLAPPEN]
Dim frage$(3),antwort$(3),gestellt(3)

frage(0)="Was kommt im Fernsehen?"
frage(1)="Wie ist das Wetter?"
frage(2)="Was machst Du gerade?"
frage(3)="Fällt Dir auch nichts mehr ein?"

antwort(0)="Nur Mist"
antwort(1)="Sonnig"
antwort(2)="Coden"
antwort(3)="Nö"

Repeat ; Alles wiederholen

 Repeat ; Hier solange wiederholen
  n=Rand(0,3)
 Until gestellt(n)=False ; bis Frage nicht gestellt wurde

 Print frage(n)
 ant$=Input$("-> ")
 If ant$=antwort(n)
  gestellt(n)=True
  Print "Schlaumann, hä?"
  zaehler=zaehler+1
 Else
  Print "Du Pflaume :P"
 EndIf
Until zaehler=4 Or KeyHit(1) ; bis 4 Fragen gekommen sind
; oder Esc gedrückt
End
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

matz

BeitragFr, Mai 28, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked danke für die verbsesserung! ...dass man sich erst garnicht so'n mist angewöhnt...

das blöde daran ist aber noch, dass das Programm zwischen GROSS- und kleinschreibung unterscheidet. kann man das auch noch abstellen?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Mai 28, 2004 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
das mit gross und klein kannste mit upper abstellen, macht dann alles auf Gross!
Lower geht natürlich auch

Beispiel:Code: [AUSKLAPPEN]
if upper(antwort) = upper (eingabe) then.....
[BB2D | BB3D | BB+]

BladeRunner

Moderator

BeitragFr, Mai 28, 2004 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
aber Vorsicht Exclamation upper() und lower() erkennen keine Sonderzeichern. auf die müsstest du gesondert prüfen !
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Mai 28, 2004 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ähnliches Problem wären Leerzeichen und Schreibfehler
[BB2D | BB3D | BB+]

matz

BeitragFr, Mai 28, 2004 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
...will mich ja nicht beschweren aber der zufall ist garnicht so zufällig!

und zwar ist ist die reihenfolge immer 2,3,1,4 , egal wie oft man das programm neu startet! woran kann das liegen?

BladeRunner

Moderator

BeitragFr, Mai 28, 2004 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
benutz zu Beginn des Programms Seedrnd(Millisecs()).
Das verändert den "Samen" für die Zufallsfunktion in Abhängigkeit von der Laufzeit deines Rechners. Sollte für "echten" Zufall genügen.

Wird aber auch in der OnlineHilfe erklärt...
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

matz

BeitragSa, Mai 29, 2004 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
danke an alle, die mir helfen konnten!

hier eine erste testversion!
EDITCode: [AUSKLAPPEN]
AppTitle("Matzes Quiz")


Graphics 900, 200 ,16,2  ;,2 für fenstermodus!
clscolor 92,0,0
cls
.start
      ; Die Musik
      doormusic = playmusic("door.mid")



      ; Die Schrift
      schrift = loadfont("Calligraphic",20,1,0,0)

      setfont schrift               ;Schrift setzten
      color 232,185,98        ;Schriftfarbe


Seedrnd Millisecs()            ; verändert den "Samen" für die Zufallsfunktion
                                          ; in Abhängigkeit von der Laufzeit des Rechners.
                                          ; Sollte für "echten" Zufall genügen.


;Fragen und Antworten
Dim frage$(3),antwort$(3),gestellt(3)

frage(0)="was heißt FTP? a) File Transfer Protocol b) Float Traffic Protocol c) FTP hat keine Bedeutung!"
frage(1)="Wovon ist Stockholm die Hauptstadt? a) Norwegen  b) Schweden oder c) Polen"
frage(2)="Wie lange dauerte der 100 jährige Krieg ? a) 323 Wochen b)52560000 Minuten  c) 365 Monate"
frage(3)="Wofür steht ALDI? a) Allgemeine durchschnitts Instanz  b) Allzweck-Discount c) Albrecht Discount"

antwort(0)="a"
antwort(1)="b"
antwort(2)="b"
antwort(3)="c"

Repeat                                  ; Alles wiederholen

 Repeat                               ; Hier solange wiederholen
  n=Rand(0,3)
 Until gestellt(n)=False       ; bis Frage nicht gestellt wurde

 print frage(n)
 ant$=Input$("a,b oder c?  Antwort:")          
 If ant$=antwort(n)                         
  gestellt(n)=True
  Print "Na geht doch!"
   Print()
   zaehler=zaehler+1
 Else
    gestellt(n)=True
    zaehlerfalsch=zaehlerfalsch+1
  Print "Altes Toastbrot! ...mehr Glück beim nächsten mal!"
   print()
 EndIf
Until zaehler=3 Or zaehlerfalsch=3 KeyHit(1) ; bis 3 Fragen gekommen sind oder Esc gedrückt



cls


text 0,0, "Du hast" text 80,0, zaehler text 100,0, "von 3 Fragen richtig beantwortet!"
text 0,30, "nochmal?"

.re1
text 0,60, "Fürs neustarten j eintippen"

locate 0,90
endmenu = Input("_")

Select endmenu
   case j
   cls
   goto start
   
   default
   cls
   gosub re1
End Select



;repeat
;Until Keyhit(1)

End
/EDIT
  • Zuletzt bearbeitet von matz am So, Mai 30, 2004 17:43, insgesamt 2-mal bearbeitet
 

dubitat

BeitragSa, Mai 29, 2004 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst ja ach 4 antworten vorgeben und dann einfach vnach 1,2,3,4 gucken welche antwort richtig ist! dann braucht der user nur 1 oider 2 oder 3 oder 4 einzutippen und du hast das problem nicht mit groß und kleinschreibung!
Erare humanum est - Irren ist Menschlich

matz

BeitragSa, Mai 29, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
jo hast recht! Smile

...machmal hat man echt nen brett vorm kopp! Rolling Eyes

matz

BeitragSo, Mai 30, 2004 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hab den code aktuallisiert!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group