Frage zu Programm

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

MichaelD1

Betreff: Frage zu Programm

BeitragSo, Jan 11, 2004 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics 640,480,32,2
SetBuffer BackBuffer()
;----------------------------------------------------
Dim Uebersetzung$(10)
Uebersetzung$(1)="1"
Uebersetzung$(2)="2"
Uebersetzung$(3)="3"
Uebersetzung$(4)="4"
Uebersetzung$(5)="5"
Uebersetzung$(6)="6"
Uebersetzung$(7)="7"
Uebersetzung$(8)="8"
Uebersetzung$(9)="9"
Uebersetzung$(10)="10"
KAnzahl=10
Dim gesehen(KAnzahl)
Dim KBild(KAnzahl)

For i= 1 To KAnzahl
KBild(i)=LoadImage("Kanji"+i+".bmp")
Next
Menu=True
Eingabee=False

Global wahl = Rand(KAnzahl)
gesehen(wahl) = 1


Repeat
Cls

If Menu=True Then
Gosub TrainerMenuGosub
EndIf

If KeyDown(57) Then
Menu=False
Eingabee=True
EndIf

If Eingabee=True Then
Menu=False
Gosub TrainerStart
EndIf

If KeyDown(1) Then End

;----------------------------------------------------
Until KeyDown(1)


.EingabeGosub

Text 100,100,"Name: "
A=GetKey()
If A > 31 Then Name$ = Name$+Chr$(A)
If A=8 And Len(Name$) > 0 Then Name$=Left$(Name$,Len(Name$)-1)
Text 150,100,Name$+"_"

If KeyDown(28) Then
If Uebersetzung$(wahl)=Name$ Then Text 100,300,"Richtig"
If Uebersetzung$(wahl)<>Name$ Then Text 100,300,"falsch"
EndIf
Flip
Return

.TrainerMenuGosub
Text 10,10," Leertaste um Trainer zu starten"
Text 10,20," Esc um zu Trainer zu beenden"
Flip
Return

.Trainerstart
Text 10,10,"Maus 1 um neues Kanji zu waehlen"
Text 10,20," Eingabe um Uebersetzung zu bestätigen"
Gosub EingabeGosub

DrawBlock KBild(wahl),512-ImageWidth(KBild(wahl))/2,130
If MouseHit(1) Then
wahl = 0
; sind alle Kanjis angesehen?
For i = 1 To KAnzahl
If gesehen(i) = 0 Then ; nein, denn es gibt noch eins
Repeat
wahl = Rand(KAnzahl)
If gesehen(wahl) = 1 Then
wahl = 0 ; nochmal Zufallsauswahl
Else
gesehen(wahl) = 1
EndIf
Until wahl > 0
Exit
EndIf
Next
If wahl = 0 Then ; keins mehr da
Text 10,10,"Das war das letzte. Ende: ESC, nochmal: Leertaste."
Flip
WaitKey()
For i = 1 To KAnzahl
gesehen(i) = 0
Next
; Neustart
wahl = Rand(KAnzahl)
gesehen(wahl) = 1
EndIf
EndIf
Flip
Return

Warum gibt er mir immer falsch an , obwohl die Antwort richtig sein müßte, als ich es daß erste mal geschrieben habe hat es funktioniert dann nicht mehr. Warum funktioniert diese einfache Bedingung nicht

Hubsi

BeitragSo, Jan 11, 2004 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Rücke Deinen Code bitte ein und verwende die Code-Tags. Ich habs eben mal in den Editor kopiert, aber das quält echt meine Augen Very Happy Eine etwas spezifischere Problembeschreibung würde auch schon ein Stück weiterhelfen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Slayer

BeitragSo, Jan 11, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Fehler ist hier:

Code: [AUSKLAPPEN]
Dim Uebersetzung$(10) ;<<<--------
Uebersetzung$(1)="1"
Uebersetzung$(2)="2"
Uebersetzung$(3)="3"
Uebersetzung$(4)="4"
Uebersetzung$(5)="5"
Uebersetzung$(6)="6"
Uebersetzung$(7)="7"
Uebersetzung$(="8"
Uebersetzung$(9)="9"
Uebersetzung$(10)="10"



Du erstellst ein Array mit 10 Felder, das ist soweit auch richtig.
Aber wenn Du die einzelnen einträge machst musst Du von 0 anfangen und bei 9 aufhören. (0 - 9 == 10)

Oder mach ein Dim Uebersetzung$(11) Wink
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

Hubsi

BeitragSo, Jan 11, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@Slayer: Hä? Möglich das ich nicht verstehe wie Du das meinst, aber wenn ich ein Feld dimensioniere, kann ich auch auf das letzte Feld zugreifen. Beispiel:
Code: [AUSKLAPPEN]
Dim feld(10)
feld(0)=100 ; erstes Feld
feld(10)=200 ; letztes Feld
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Slayer

BeitragSo, Jan 11, 2004 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
@Slayer: Hä? Möglich das ich nicht verstehe wie Du das meinst, aber wenn ich ein Feld dimensioniere, kann ich auch auf das letzte Feld zugreifen. Beispiel:
Code: [AUSKLAPPEN]
Dim feld(10)
feld(0)=100 ; erstes Feld
feld(10)=200 ; letztes Feld




An denn Kopflangundindieeckestell.

Klar geht das, Du hast recht, war ein Denkfehler meinerseits.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

MichaelD1

BeitragMo, Jan 12, 2004 4:27
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert meins bei euch

Slayer

BeitragMo, Jan 12, 2004 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Lade mal die bilder hoch, dann kann mans testen.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

DivineDominion

BeitragMo, Jan 12, 2004 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Vorschlag:
DebugLog.
Musst Debug Mode im Menü einschalten und kannst dann im Log nachsehen,w as ausgegeben wird (BEi alten versionen mit F9 in der IDE, bei neueren Versionen kommt der Debugger als extra Fenster unten).

Prüf' damit mal den Wert von "Wahl", den Inhalt von "Name$" und "Uebersetzung$(wahl)". Vielleicht findest du irgendwelche Fehler, z.B. dieses "Chr$(A)", was ich nicht verstehe Wink
 

MichaelD1

BeitragMo, Jan 12, 2004 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich mit Text schon gemacht , der wert war immer der richtige. Auch wenn ich ein reines textbasiertes Abfragesystem schreibe funktioniert diese Zeile nicht if Vokabeln$(wahl)=Abgefragt$
 

MichaelD1

BeitragMo, Jan 12, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
nehmt doch anstelle der Bilder kleine BMP 50 mal 50 die unterschiedlich aussehen
 

Gerhard

BeitragDi, Jan 13, 2004 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist folgendes:

Dein Startbuchstabe (blank) aus der Aufforderung: 'zum Starten Leertaste drücken' wird durch das folgende A=Getkey() in deine Variable Name$ übernommen.

Im Namen steht also immer vorne eine Leerstelle. Das siehst du wenn du erst ein Backspace machst und dann deine Eingabe.

Mit deinen gosubs und diversen Flips flackerts bei mir übrigens.
 

MichaelD1

BeitragDi, Jan 13, 2004 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir flakerts auch
 

Gerhard

BeitragMi, Jan 14, 2004 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wirf alle Flip raus und mach nur ein einziges Flip in deiner Hauptschleife vor Until Keydown(1).

Und mach nach: if mousehit(1) then... noch den Namen wieder leer: Name$ = ""
 

MichaelD1

BeitragMi, Jan 14, 2004 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke es funktioniert jetzt
 

Gerhard

BeitragMi, Jan 14, 2004 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Seedrnd Millisecs() am Anfang kommt nach dem Programmstart immer die gleiche Zufallsfolge. Das fehlt noch...
 

MichaelD1

BeitragDo, Jan 15, 2004 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
habs mir schon gedacht das was fehlt, danke

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group