Zu doof für Blitzbasic ?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Mike84

Betreff: Zu doof für Blitzbasic ?

BeitragFr, Jun 17, 2005 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh Gott....
Ich wollte doch nur 2 zahlen auf dem Bildschirm die ich ändern kann.
Die erste Zahl läst sich auch wunderbar ändern aber zahl2 reagiert überhaupt nicht. Warum ? Crying or Very sad

Hier mein Code:
Code: [AUSKLAPPEN]

Graphics 640,480,16
SetBuffer BackBuffer()

Global zahl1 = 0
Global zahl2 = 0
Global Auswahl = 1


Repeat

Cls

If KeyHit(205) Then Auswahl = Auswahl + 1
If KeyHit(203) Then Auswahl = Auswahl - 1

If Auswahl = 1 And KeyHit(200) Then zahl1 = zahl1 + 1
If Auswahl = 1 And KeyHit(208) Then zahl1 = zahl1 - 1
If Auswahl = 2 And KeyHit(200) Then zahl2 = zahl2 + 1
If Auswahl = 2 And KeyHit(208) Then zahl2 = zahl2 - 1

If Auswahl > 2 Then Auswahl = 1
If Auswahl < 1 Then Auswahl = 2
If zahl1 > 9 Then zahl1 = 0
If zahl1 < 0 Then zahl1 = 9
If zahl2 > 9 Then zahl2 = 0
If zahl2 < 0 Then zahl2 = 9

Text 20,20,"zahl1 " + zahl1
Text 20,40,"zahl2 " + zahl2
Text 20,60,"Auswahl " + Auswahl

Flip

Until KeyDown(1)


mach ich irgendwas grundliegendes falsch ?
ich hoffe ihr helft mir weiter.... Danke Smile

flexo

BeitragFr, Jun 17, 2005 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 640,480,16
SetBuffer BackBuffer()

Global zahl1 = 0
Global zahl2 = 0
Global Auswahl = 2


Repeat

Cls

If KeyHit(205) Then Auswahl = Auswahl + 1
If KeyHit(203) Then Auswahl = Auswahl - 1

Select auswahl
   Case 2
   If KeyHit(200)=1 Then zahl2=zahl2+1
   If KeyHit(208)=1 Then zahl2=zahl2-1
   Case 1
   If KeyHit(200)=1 Then zahl1=zahl1+1
   If KeyHit(208)=1 Then zahl1=zahl1-1
End Select

If Auswahl > 2 Then Auswahl = 1
If Auswahl < 1 Then Auswahl = 2
If zahl1 > 9 Then zahl1 = 0
If zahl1 < 0 Then zahl1 = 9
If zahl2 > 9 Then zahl2 = 0
If zahl2 < 0 Then zahl2 = 9

Text 20,20,"zahl1 " + zahl1
Text 20,40,"zahl2 " + zahl2
Text 20,60,"Auswahl " + Auswahl

Flip

Until KeyDown(1)

versuchs mal damit Wink
If... hat probleme gemacht; schau noch worans lag Smile
auf alle fälle funzt alles wenn dus mit select machst ...
und geht schneller (minimal aber nya) Wink

mfg, flexo
Du bist eizigartig - genau wie jeder andere auch.

Hip Teen

BeitragFr, Jun 17, 2005 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach, du rufst Keyhit 2 mit dem gleichen Parameter auf. In der Onlinehilfe steht dazu:
Zitat:
Diese Funktion ermittelt, wie oft eine bestimmte Taste seit dem letzten Aufruf gedrückt wurde.

nehmen wir jetzt den entsprechenden Code:
BlitzBasic: [AUSKLAPPEN]

If Auswahl = 1 And KeyHit(200) Then zahl1 = zahl1 + 1
If Auswahl = 1 And KeyHit(208) Then zahl1 = zahl1 - 1
If Auswahl = 2 And KeyHit(200) Then zahl2 = zahl2 + 1
If Auswahl = 2 And KeyHit(208) Then zahl2 = zahl2 - 1

mit
If Auswahl = 1 And KeyHit(200) Then zahl1 = zahl1 + 1
fragst du ja schon ab, wie viel mal die Pfeiltaste seit dem letzten mal gedrückt wurde. Bei
If Auswahl = 2 And KeyHit(200) Then zahl2 = zahl2 + 1
wurde in der Zwischenzeit nicht mehr drückt, sind ja nur nanosekunden seit der letzten Keyhit Abfrage. Du musst es also umstrukturieren. Du fragst erst ab, ob die Pfeiltaste gedrückt wurde, also so:
If KeyHit(200) Then
und dann fragst du ab, ob auswahl 1 oder 2 ist. Sieht dann z.B. so aus:

BlitzBasic: [AUSKLAPPEN]

If KeyHit(200) Then
If Auswahl = 1 Then
zahl1 = zahl1 + 1
Else
zahl2 = zahl2 + 1
End If
End If


Hoffe du verstehst es Wink


@der über mir
du hast das Problem zwar gelöst, nur nicht das Übel an der Wurzel gefasst. So weiß unser lieber Anfänger jetzt, wo das Problem war Wink

flexo

BeitragFr, Jun 17, 2005 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ja @der über mir Wink

ich habs grad auch gefunden in der on hilfe Smile
wollt grad posten aber du warst schneller ^^

ja, also keyhit(X) fragt ab ob der key X seit dem letzten aufrufen der funktion keyhit(X) gedrükt wurde..
da du oben stehn hast
Code: [AUSKLAPPEN]

If Auswahl = 1 And KeyHit(200) Then zahl1 = zahl1 + 1
If Auswahl = 1 And KeyHit(208) Then zahl1 = zahl1 - 1
If Auswahl = 2 And KeyHit(200) Then zahl2 = zahl2 + 1
If Auswahl = 2 And KeyHit(208) Then zahl2 = zahl2 - 1

fragt er ab ob der key(200) zwischen dem ersten abfragen [if auswahl=1 and keyhit(200) ...] und dem 2ten abfragen [if auswahl=2 and keyhit(200)...] gedrückt wurde

also rein therorethisch funktioniert sein progamm Wink
(man muss nur den richtigen zeitpunkt treffen, was die sache ein bisschen schwieriger macht Laughing )

mfg, flexo
Du bist eizigartig - genau wie jeder andere auch.
 

Mike84

BeitragFr, Jun 17, 2005 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke euch beiden,
Hip Teen hat es super erklärt sogar ich habe es verstanden Very Happy
 

Dödel

BeitragFr, Jun 17, 2005 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleiner Tipp:
Für derartiges wäre wohl KeyDown angebracht...
Schau in der OH.

Das fragt ab, ob eine Taste zur Zeit der Abfrage gedrückt wird.

mfg
Dödel

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group