warum funktioniert waitkey nich bei num tasten?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

worschtbrot

Betreff: warum funktioniert waitkey nich bei num tasten?

BeitragSo, Jan 04, 2009 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo ich hab ein programm geschrieben das mit waitkey auf eine tastenabfrage wartet und anschließend den wert der gedrückten taste wiedergibt.doch, wenn ich eine num taste drücke reagiiert das programm nicht.allerdings wird wenn ich dann eine "normale" taste drücke der wert der zuvor gedrückten num taste ausgegeben und der wert der anderen taste ignoriert woran liegt das?

ozzi789

BeitragSo, Jan 04, 2009 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Numlock drinn? xD
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

worschtbrot

BeitragSo, Jan 04, 2009 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ja habe ich ausserdem würde er ja sonst nicht den wert der numtaste ausgeben
 

FWeinb

ehemals "ich"

BeitragSo, Jan 04, 2009 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste doch mal den Code bei welchem es nicht geht weil eigentlich kann ich mir es nicht Vorstellen das das nicht geht.

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

worschtbrot

BeitragMo, Jan 05, 2009 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
mhhh ok aber da ich diesen forumeintrag nich unnötig mit meinem quellcode zumüllen möchte ist hier nur der link zu meinem code im codearchiv
https://www.blitzforum.de/uplo...?show=1258
 

FWeinb

ehemals "ich"

BeitragMo, Jan 05, 2009 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Lade eine Datei _NIE_ in einer Schleife (damit mein ich kein OpenFile, ReadFile in einer Schleife)
2. Bitte Bitte kein Goto. Funktionen sind hier besser. (Goto = Böse)
3. Vermeide unmögliche bedingungen wie z.b.
Code: [AUSKLAPPEN]

FlushKeys() ; Hier werden alle Gedrückten Tasten aus dem Speicher entfernt
WaitKey() ; Hier wird auf einen Tastendruck gewartet

4. Wie soll das jemand schaffen:
Code: [AUSKLAPPEN]

stream = keygetter();Ruft die Funktion auf
WriteLine file,stream
Text 100,100,"Links: "+key(stream)
WaitKey()

Function keygetter() ; Geht alle Zeichen durch und Prüft ob die Taste gedrückt wurde (braucht c.a. 1ms)
   For i = 1 To 255
      If KeyHit(i) Then
         Return i
      EndIf
   Next
End Function

Function keywrite(taste) ; Funktioniert so nicht ! Schau dir mal die Zeile mit dem Write an und überlege dir wie man soetwas besser machen kann
   For i = 1 To 255
      If taste = i Then
         Write key(i)
         taste=0
      EndIf
   Next
End Function


5. Lese dir den Rob Kurs durch.
6. Erklähre mir was der Code machen soll.


mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

worschtbrot

BeitragMo, Jan 05, 2009 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
also: der code dient dazu die steuerung eines spiels vorerst mal anzuzeigen bis enter gedrückt wird.dann wird die steuerungs datei(steuerung.dat) gelöscht(somit auch alle einträge). dann müssen alle einträge neu gemacht werden also immer waitkey(), dann wird abgefragt welche taste gedrückt wurde deren scancodewert wird in die steuerungsdatei eingetragen und der name der taste angezeigt.das wird für alle aktionen gemacht.und zuguterletzt wird wieder an den anfang des programmes gesprungen.
hier ist das ganze noch mal zum ausprobieren:
http://uploaded.to/?id=houcce
so und aus der steuerungs datei bezieht mein spiel sich später die daten für die steuerung Shocked
 

FWeinb

ehemals "ich"

BeitragMo, Jan 05, 2009 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code kann aber nicht Funktionieren

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

worschtbrot

BeitragMo, Jan 05, 2009 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
lade ihn dir runter und probiere es

Silver_Knee

BeitragDi, Jan 06, 2009 1:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich kurz etwas anmerken darf:

FlushKeys
WaitKey

Macht durchaus sinn:
zunächst Werden alle Tasten gelöscht.
Das heißt ab dem Beginn von WaitKey muss der User eine Neue Taste drücken. Würde er flushkeys nicht vorher machen könnten von Waitkey evtl zuvor gedrückte Tasten angenommen werden.

Keinen Sinn würde es bei GetKey machen, wo auf jeden Fall eine taste vorher gedrückt worden sein muss, da es sonst eine null ausspuckt und nicht wie Waitkey wartet.

Ich hab den code jetzt nicht gesehen aber evtl helfen dir die 2 Funktionen, die inzwischen verstaubt im Smalltalk vegetieren:

Code: [AUSKLAPPEN]

Function WaitScan()
   Repeat
      For scan=1To 256
         If KeyHit(scan) Then Return scan
      Next
   Forever
End Function

Function GetScan()
   For scan=1To 256
      If KeyHit(scan) Then Return scan
   Next
End Function

worschtbrot

BeitragDo, Jan 08, 2009 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habs mal mit diesen funktionen probiert es liegt allerdings immer noch das problem vor,dass er die variable des tastendrucks zwar übernimmt,dennoch wird diese erst an das programm übergeben wenn eine andere taste gedrückt wird(wegen dem wait key).

TimBo

BeitragDo, Jan 08, 2009 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

wegen den Functionen, die erinnert mich an so ein Tut wie kann man 100% CPU auslastung wegmachen. Rolling Eyes

Edit: bei der Funktion Waitscan

mach da ma n timer oder delay rein.

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group