Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
Verfasst am: 03.10.2004, 16:20 Titel: Tastatur eingabe für Profis [etc.] |
|
|
1. Zitat: |
KEY <Tastennr.>, CHR$(<Tastenstatus%>) + CHR$(ScanCode%)
|
Das habe ich im Kochbuch gesehen, nur weiß ich nicht wie man das Anwendet...
Das ist soviel ich weiß dafür da, wenn man 2 tasten gleichzeitig
drückt, dass dann eine aktion "kommt"-
2.Kann ich ständige bewegungsabläufe machen,
ohne die Tastatureingabe zu behindern?, und wie?
oder gibt es sowas wie sleep (variable), ohne das
es die Tastatur eingabe behindert, und auch unter einer sekunde Funktioniert?
Bei sleep gibts ja "sleep 1","sleep 2" etc. aber ich will sowas
wie "sleep .25"! Da fährt er aber nur bei knopfdruck fort, und außerdem behindert das die Tastatureingabe!
ich habe es mit "sound 0, .25" versucht, aber das Beindert auch die Tastatureingabe!
3. "IF h2 = h3 THEN h3 = h3 + 300"
h2 und h3 sind jeweils objekte
aber was meine Frage ist:
Warum klappt des net?
woran könnte alles liegen?-
kann mir jemand helfen, indem er
mir sagt, was man bei jedem einzelnen alles beachten muss?
Das wäre sehr nett!
-Danke
mfG Neonator _________________ -NEONATOR-
http://www.info-mails.de/index.php3?V_ID=96336 |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
Verfasst am: 03.10.2004, 16:47 Titel: |
|
|
danke,
aber soweit bin ich noch net, es hilft mir nur wenn ich auch weiß was
die einzelnen Befehle heißen, deswegen wäre es mir lieber, wenn ihr mir das einzeln und sachlich erklärt! _________________ -NEONATOR-
http://www.info-mails.de/index.php3?V_ID=96336 |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
Verfasst am: 03.10.2004, 18:53 Titel: |
|
|
Naja,
ja...
aber eher en Flugsimulator...
aber da sin jede Menge BUGs,
würd des gern hinbiegen...
bei nem vorherigen Thema war
von nem wetbewerb die Rede, wo und wie und vor allem wann findet der statt? _________________ -NEONATOR-
http://www.info-mails.de/index.php3?V_ID=96336 |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 03.10.2004, 19:34 Titel: |
|
|
also zu erstens:
das ON KEY ist eigentlich nicht unbedingt so schön und soweit ich weiß, kann man damit nicht mehrere tasten auf einmal abfragen.
Besser ist es immer, wenn du in einer Schleife z.B. folgendes schreibst
Code: | do
...
a$= inkey$
if a$ = chr$(13) then ... 'für die abfrage von Enter
loop |
um aber mehrere Tasten gleichzeitig abzufragen, wird es schon etwas komplizierter. Da genügt schon nicht mehr reiner QB-Code, aber dazu schaust du am besten in die MonsterFAQ
zu 2.
wenn du kleine Pausen machen willst, aber trotzdem noch die Tastatur abfragen willst, dann musst du auch wieder eine Schleife machen und darin die Tasten abfragen, wie im obigen Beispiel. Damit eine bestimmte Zeit Pause ist, musst du noch den Timer einbauen, z.B. mit
Code: | t=timer
do until timer-t=0.25 'für eine viertel sekunde Pause
... |
zu 3. Also eigentlich müsste das klappen, vielleicht stimmt was mit dem restlichen Code nicht.
MfG, Tomtitom |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.10.2004, 08:24 Titel: |
|
|
also mal ne erklärung zu dem KEY-Gesabbel da.
1. KEY ist Schrott!
Ich hab das ganze mal für ein Snake-Spiel benutzt, ist echt lkustig des Spiel, vllt lad ich's heute mal auf Codesharinx hoch und geb dir dann den Link. Es funktioniert auch aber ich hab ein Problem: Ich weiß die Steuerung nicht mehr und bekomm sie auch nicht mehr raus da ich die KEY-Zuweisungen nicht kommentiert hab... Ich lauf immer über den halben Bildschirm und probier die Tasten alle aus und dann häng ich schon in der Wand....
2. So funktioniert KEY:
Mit der KEY-Anweisung wird eine Tastenkombination (zB STRG+"H") definiert und einer Nummer zugewiesen.
Die ON KEY-Anweisung definiert eine GOSUB-Routine, die bei einem Druck der Kombination der entwsprechenden Nummer ausgeführt wird wenn die Ereignisverfolgung aktiviert ist.
KEY n ON aktiviert die Verfolgung für Kombination n
KEY n STOP pausiert sie und
KEY n OFF schaltet sie ab.
in der QB-Onlinehilfe kannst du die Zahlen nachschauen, die du da bei den CHR$'s hinschreiben musst. meistens wirst du das für eine einzige Taste haben wollen, nicht für eine Kombination, dann schreibst du bei dem ersten CHR$ eine 0 rein. das Staffelt sich dann, 1 für Shift dazu, 2 für Strg, 4 dann für alt, 8 für ... usw, für mehrere Tasten einfach die Werte addieren. Die Tasten stimmen aber glauib ich ned, schau in die onlinehilfe, da steht welche Zahl zu welcher Taste gehört.
Da steht auch, welche Zahl für Welche Taste in des zweite CHR$ rein muss.
Eine Fertige Key-Konstruktion (bitte nagelt mich nicht mit den Zahlen fest)sähe so aus:
Code: | KEY 21, CHR$(0)+CHR$(72) 'keine Taste + die Hoch-Taste (könnte sein...)
ON KEY 21 GOSUB hoch
...
KEY 21 ON
...
KEY 21 OFF
SYSTEM
...
...
hoch:
...
RESUME 'oder RETURN, weiß ned genau, ausprobieren. |
@Tomtitom: mehrere Tasten auf einmal ist doch ganz einfach, oder?
Code: | DIM tasten(128) AS INTEGER 'Boolean wäre besser, gibts aber ned.
CONST ON=1
CONST OFF=0
DO 'Hauptschleife
PRINT "Hier am besten den Code hin"
neuTaste=inp(&H60) 'oder INP(53) müsste das glaub ich sein wenn mans ausrechnet
IF neuTaste > 128 THEN taste(neuTaste-128)=OFF else taste(neuTaste)=ON
SELECT CASE ON 'komisch, das so rum zu machen, geht aber einfach dann.
CASE taste(72) 'hochtaste galub ich
...
CASE taste(75) 'links-Taste glaub ich
...
CASE taste(77) 'müsste Rechts sein
...
CASE taste(80) 'müsste hoch sein
...
CASE taste(1) 'ist glaub ich Escape
...
CASE taste(13) 'dürfte Enter sein
...
END SELECT
PRINT "Oder hier, ist auch ok"
LOOP UNTIL INKEY$=CHR$(27) |
Achtung dabei: eine Inkey$-Abfrage in der Schleife ist wichtig, da bei Abfragen von INP(&H60) der Tastaturpuffer nicht geleert wird -> Er fängt irgendwann an zu piepsten weil der Puffer überläuft...
3. Zu deinem dritten Teil: Was geht da nicht? bekommst du einen Fehler oder wie?
wenn das ganze so aussieht:
Code: | h2=100
h3=100
IF h2=h3 then h3=h3+300 |
ist h3 am ende 400. Das geht.
wenn h3 jetzt aber ein von dir definierter Typ ist geht das nicht, dann musst du jedes Attribut einzeln vergleichen, also "IF h2.x=h3.x and h2.y=h3.y ...", dann geht allerdings die Anweisung h3=h3+300 nicht, von daher denk ich, du hast dich irgendwo vertippt oder so.
Wenn da jetzt irgendwo irgendwas nicht funktioniert: Das ist alles aus dem Kopf zusammengeschrieben, keine Gewähr dass das stimmt... _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
Verfasst am: 04.10.2004, 15:37 Titel: |
|
|
Danke @ all, nur vieles funtz net,
und... achja...
machnmors anders:
Stellt sich jemand mir zur verfügung den ich ... "Einweihen" kann?
dem schick ich die *.bas , und scherib als kommentare
was ich haben will, und er macht es, und schreibt dann dahinter kommentare was was ist etc., ich glaube so wäre mir am besten geholfen... _________________ -NEONATOR-
http://www.info-mails.de/index.php3?V_ID=96336 |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.10.2004, 18:35 Titel: |
|
|
Hm, ich schaus mir mal an. schick mir Mail. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.10.2004, 19:09 Titel: |
|
|
Da in der Fußzeile aller meiner Beiträge ist ein EMail-Button... _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Zuletzt bearbeitet von MisterD am 10.08.2007, 16:52, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 04.10.2004, 20:33 Titel: |
|
|
zur Not hättest du es auch zu mir schicken können
@ MisterD: also dein Code bezüglich der mehreren Tasten ist interessant, hab ihn auch mal getestet und er scheint zu funktionieren. Zumindest, wenn man das Select case durch ifs ersetzt, denn select case betrachtet ja nur einen Fall. Aber es klappt |
|
Nach oben |
|
|
Neonator
Anmeldungsdatum: 03.10.2004 Beiträge: 15
|
Verfasst am: 04.10.2004, 20:43 Titel: |
|
|
das mit der E-mail-button hab ich au bemerkt, aber dann kommt nen Fehler, oder besser gesagt, ich brauch ein Prog. das ich net hab... _________________ -NEONATOR-
http://www.info-mails.de/index.php3?V_ID=96336 |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 05.10.2004, 11:28 Titel: |
|
|
@tomtitom: Na gut, das kann sein, aber noch was wichtiges: Man muss NumLock ausschalten sonst "rasten" die Pfeiltasten ein...
Was man wahrscheinlich auch machen kann ist, CONST ON =-1 dann reicht nämlich einf IF taste(1) THEN...
@neonator: Dann bleib einfach mit der Maus auf dem Link, dann steht unten in der Statusleiste die zeile "mailto:usw" da kann man dann die Adresse ablesen _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
|