Eingabe

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

regaa

Betreff: Eingabe

BeitragMi, Jan 14, 2004 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Also...da der Input Befehl nicht so richtig das wahre ist, wollte ich fragen ob es noch eine andere Möglichkeit gibt, als das was ich gemacht habe?

While Not KeyDown(28)

If KeyDown(30)
letter$="a"
else if KeyDown(48)
letter$="b"
........bis hin zu z

If KeyDown(42)
ne$(letter_var)=Upper(letter$)
letter_var=letter_var+1
Else
ne$(letter_var)=Lower(letter$)
letter_var=letter_var+1
FlushKeys
EndIf


wend
wort_ges$=ne$(0)+ne$(1)+ne$(2)+ne$(3)+ne$(4)+ne$(5)+ne$(6)+ne$(7)+ne$(8)+ne$(9)+ne$(10)


Weil ich stell fest das man nicht unbedingt schnell tippen darf. :(

mfg regaa

Mr.Keks

BeitragMi, Jan 14, 2004 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal den befehl "getkey()" in der onlinehilfe an...

sowas dürfte reichen.... (einfach ein ausschnitt, aus einem kleinen guicode Wink)
Code: [AUSKLAPPEN]
key=GetKey()
      If key>31 Then txt$=txt$+Chr(key)
      If KeyHit(82) Then txt$=txt$+"0" 
        If KeyHit(79) Then txt$=txt$+"1" 
        If KeyHit(80) Then txt$=txt$+"2" 
        If KeyHit(81) Then txt$=txt$+"3" 
        If KeyHit(75) Then txt$=txt$+"4" 
        If KeyHit(76) Then txt$=txt$+"5" 
        If KeyHit(77) Then txt$=txt$+"6" 
        If KeyHit(71) Then txt$=txt$+"7" 
        If KeyHit(72) Then txt$=txt$+"8" 
        If KeyHit(73) Then txt$=txt$+"9" 
        If KeyHit(181) Then txt$=Left(txt$,Len(txt$)-1):txt$=txt$+"/" 
        If KeyHit(83) Then txt$=txt$+"," 
      If KeyHit(14) And Len(txt$)>0 Then txt$=Left(txt$,Len(txt$)-1)
MrKeks.net

regaa

BeitragMi, Jan 14, 2004 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke Smile ich ´schaus mir mal an.

Travis

BeitragMi, Jan 14, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das fand ich ja in Quick Basic gut, Da konnte man jede Taste direkt nach dem Buchstaben abfragen. So hätte ich es in QB gemacht.

Code: [AUSKLAPPEN]

Taste:
A$ = INKEY$
PRINT A$
IF A$="0" THEN END
GOTO "Taste"
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Mr.Keks

BeitragMi, Jan 14, 2004 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ich kenne inkey nicht, aber wenn ich dich richtig verstanden habe, dann reicht das:

Code: [AUSKLAPPEN]
Function InKey$()
     Return Chr$(WaitKey())
End Function


(Ungetestet, nur so im forum geschrieben)
MrKeks.net

regaa

BeitragMi, Jan 14, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal so ne Frage: ist es normal das dieses blitzcc.exe 100% cpu auslastung macht bei nem 2,26er P4?

regaa

BeitragMi, Jan 14, 2004 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, hat sich erledigt, suco-x hat mich geholft ->

startzeit=MilliSecs()
While MilliSecs()-startzeit<(1000/60)
Delay (4)
Wend

Travis

BeitragMi, Jan 14, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Inarie
Das ist ja cool. Very Happy

Code: [AUSKLAPPEN]

Graphics 400, 200, 16, 2
AppTitle "Inkey$()"

Repeat

 x = x + 10
 If x = 400 Then x = 0: y = y + 10

 Text x, y, inkey$()

Until KeyHit(1)

Function InKey$()
 Return Chr$(WaitKey())
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

regaa

BeitragMi, Jan 14, 2004 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
manchmal liegt die lösung so nahe Laughing .

Aber ich hab dann doch meine Version genommen aus performance Gründen, kann auch sein das es nur an meinem pc so ist, ka. Auf jeden Fall ist das so das wenn cih n paar mal bissen was gedrückt hab, sleept der pc und dann fängt er erst an die buchstaben zu texten. Hingegen so wie ich das gemacht hab kommt sofort, aber Nachteil ist das man nicht so schnell 2 Buchstaben nacheinander eingeben darf, weil er sonst diese nicht annimmt, aber die meisten können noch nichtmals so schnell tippen Laughing , deswegen passt das schon. Trptzdem Danke.

Hubsi

BeitragDo, Jan 15, 2004 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code oben hält allerdings das ganze Programm an. Meine Lösung dazu:
Code: [AUSKLAPPEN]
   If msecs>timeoutinput+500 drawcursor=1-drawcursor:timeoutinput=msecs
   If drawcursor Color 192,192,192:Rect 300+(StringWidth(name$)/2)+2,502,2,12,1
   eing=GetKey()
   If eing=8 And Len(name$)>0 Then name$=Left$(name$,Len(name$)-1):eing=0:zaehler=zaehler-1
   If StringWidth(name$)>=85 And eing<>13 Then eing=0
   If eing=13 eing=0:nameinput=False:x=330:y=272:FlushKeys()
   If eing>=32 And eing<=122 Or eing=223 name$=name$+Chr$(eing):eing=0:zaehler=zaehler+1
   If eing=228 Or eing=196 Or eing=214 Or eing=246 name$=name$+Chr$(eing):eing=0:zaehler=zaehler+1
   If eing=220 Or eing=252 Then name$(0)=name$(0)+Chr$(eing):eing=0:zaehler=zaehler+1

Die Variable msecs kannst Du wahlweise gegen MilliSecs() austauschen oder, der Performance zuliebe, zu Beginn der Hauptschleife msecs=MilliSecs() schreiben. Wenn Du die Eingabe auf eine bestimmte Anzahl Zeichen begrenzen willst, ändere einfach das StringWidth(name$)>=85 in Len(name$)=max_anzahl_zeichen. Die Sache mit der Geschwindigkeit liegt vermutlich daran das Dein Proggi im Fenstermodus läuft, dann ist es generell langsamer als im Vollbild. Ist allerdings nur eine Vermutung Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group