Page 1 of 1

### Input-funktio

Posted: Fri Nov 16, 2012 9:35 pm
Tuli tarvetta cb:n omaa inputtia pätevämmälle ratkaisulle, ja ajattelin kokeilla koodailla mielenkiinnosta oman systeemin.

Code: Select all

``````InputX(100,150,4,100)

Function InputX(x_position=0,y_position=0,tab=4,speed=100)

ClearKeys

Repeat

If Timer()>pressed+speed

If KeyDown(2)
user_input\$ = "1" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(3)
user_input\$ = "2" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(4)
user_input\$ = "3" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(5)
user_input\$ = "4" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(6)
user_input\$ = "5" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(7)
user_input\$ = "6" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(8)
user_input\$ = "7" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(9)
user_input\$ = "8" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(10)
user_input\$ = "9" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(11)
user_input\$ = "0" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(12)
user_input\$ = "-" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(13)
user_input\$ = "+" : key_pressed = True
ElseIf KeyDown(14) And Len(X_String\$) > 0
X_String\$ = StrRemove(X_String\$,Len(X_String\$),1)
pressed = Timer()
ElseIf KeyDown(15)
user_input\$ = String(" ",tab) : key_pressed = True
pressed = Timer()
ElseIf KeyDown(16)
user_input\$ = "q" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(17)
user_input\$ = "w" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(18)
user_input\$ = "e" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(19)
user_input\$ = "r" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(20)
user_input\$ = "t" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(21)
user_input\$ = "y" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(22)
user_input\$ = "u" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(23)
user_input\$ = "i" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(24)
user_input\$ = "o" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(25)
user_input\$ = "p" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(26)
user_input\$ = "[" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(27)
user_input\$ = "]" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(28)
Return X_String\$
pressed = Timer()
ElseIf KeyDown(30)
user_input\$ = "a" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(31)
user_input\$ = "s" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(32)
user_input\$ = "d" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(33)
user_input\$ = "f" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(34)
user_input\$ = "g" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(35)
user_input\$ = "h" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(36)
user_input\$ = "j" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(37)
user_input\$ = "k" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(38)
user_input\$ = "l" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(39)
user_input\$ = "ö" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(40)
user_input\$ = "ä" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(44)
user_input\$ = "z" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(45)
user_input\$ = "x" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(46)
user_input\$ = "c" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(47)
user_input\$ = "v" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(48)
user_input\$ = "b" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(49)
user_input\$ = "n" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(50)
user_input\$ = "m" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(51)
user_input\$ = "," : key_pressed = True
pressed = Timer()
ElseIf KeyDown(52)
user_input\$ = "." : key_pressed = True
pressed = Timer()
ElseIf KeyDown(53)
user_input\$ = "/" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(57)
user_input\$ = " " : key_pressed = True
pressed = Timer()
ElseIf KeyDown(71)
user_input\$ = "7" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(72)
user_input\$ = "8" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(73)
user_input\$ = "9" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(74)
user_input\$ = "-" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(75)
user_input\$ = "4" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(76)
user_input\$ = "5" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(77)
user_input\$ = "6" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(78)
user_input\$ = "+" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(79)
user_input\$ = "1" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(80)
user_input\$ = "2" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(81)
user_input\$ = "3" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(82)
user_input\$ = "0" : key_pressed = True
pressed = Timer()
ElseIf KeyDown(83)
user_input\$ = "," : key_pressed = True
pressed = Timer()
EndIf

If key_pressed = True
If KeyDown(42) Or KeyDown(54)
X_String\$ = StrInsert(X_String\$,Len(X_String\$),Upper(user_input\$)) : key_pressed = False
Else
X_String\$ = StrInsert(X_String\$,Len(X_String\$),user_input\$) : key_pressed = False
EndIf
EndIf

EndIf

Color 255,255,255
Text x_position,y_position,X_String\$

If TIMER()>record+200 Then
record=TIMER()
EndIf

Color 255,255,255
Else
Color 0,0,0
EndIf

Line TextWidth(X_String\$)+x_position,y_position,TextWidth(X_String\$)+x_position,y_position+TextHeight(X_String\$)

DrawScreen
Forever

EndFunction
``````
Koodi on rumaa, eikä ratkaisut parhaita mahdollisia, mutta kohtuu vikkelään sain tuommosen funktion kasaan.
Säätöä voi tehdä syötteen sijaintiin sekä painalluksien vastaanottotiheyteen ja sarkaimen suuruuteen. Saatan innostua vielä parantelemaan tätä, mutta mikäli tarvetta ilmenee, niin saa ihan vapaasti käyttää ja muokkailla omiin tarkoituksiin sopivaksi..
EDIT:

Niin ja shift-näppäin (kumpi vain) pohjassa kirjottaa isompaa aakkosta..

### Re: Input-funktio

Posted: Fri Nov 16, 2012 10:41 pm
GetKey olisi kyllä paikallaan. Koodi lyhenisi todella merkittävästi ja pääsisit tuosta kamalasta if-hässäkästä. cbSDK:ssa on oma viritelmänsä tätä varten, jos kiinnostaa katsoa mallia tai vaihtoehtoista ratkaisua.

### Re: Input-funktio

Posted: Fri Nov 16, 2012 11:12 pm
Latexi95 wrote:GetKey olisi kyllä paikallaan. Koodi lyhenisi todella merkittävästi ja pääsisit tuosta kamalasta if-hässäkästä. cbSDK:ssa on oma viritelmänsä tätä varten, jos kiinnostaa katsoa mallia tai vaihtoehtoista ratkaisua.
Alkuun tein GetKey:llä, jolloin rivimäärä olikin <20, mutta kokeilin sitten näinkinpäin, vaikkakin hävyttömän rumaksi se vetää tuon. Mutta ajattelin kyllä päästä eroon tuosta if-sotkusta.

### Re: Input-funktio

Posted: Sat Nov 17, 2012 6:54 pm
Coolbasicin perussääntö: ota se, joka on nopeampi.

### Re: Input-funktio

Posted: Sat Nov 17, 2012 7:32 pm
Olihan kunnon Input-syöte jo olemassa aikaisemmin...

EDIT: Juu ja onhan tuo sinun tekemäsi tosiaan näppärä . Ja hyvä että mielenkiintoa riittää. Itselläni näköjään tämän viestin kirjoittaessani ei mielenkiintoa iloisemmalle ulosannille ollut joten pahoitteluni, että olin vähän tökerö.

### Re: Input-funktio

Posted: Thu Dec 13, 2012 4:45 pm
MrMonday wrote:... ja ajattelin kokeilla koodailla mielenkiinnosta oman systeemin.
Ihmettelenpä vain mikä ihme VesQ:lla meni tässä lauseessa ohi... o_O

Ihan pätevä systeemi kyllä. Muistuttaa suuresti omatekemääni ChaosBasic:lle joskus kauan sitten. Oli siis joka näppäin samaisesti iffailtu ja niitä vastaavat merkit sitä kautta merkkijonoon.