warum funktioniert waitkey nich bei num tasten?
Übersicht

![]() |
worschtbrotBetreff: warum funktioniert waitkey nich bei num tasten? |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Numlock drinn? xD | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
worschtbrot |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja habe ich ausserdem würde er ja sonst nicht den wert der numtaste ausgeben | ||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
lade ihn dir runter und probiere es | ||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
wegen den Functionen, die erinnert mich an so ein Tut wie kann man 100% CPU auslastung wegmachen. ![]() 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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group