Eingabefeld Untersuchung

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Kabelbinder

Sieger des WM-Contest 2006

Betreff: Eingabefeld Untersuchung

BeitragSa, Okt 06, 2007 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Konsolen oder beim DVD-Player kommt man manchmal in die Situation, einen Filmtitel oder Namen auf einem Tastenfeld eingeben zu müssen, über das man einen Curser mit Pfeiltasten oder einem Joystick steuern muss.

Unser DVD Player hat das Feature, dass er immer, wenn man ein Zeichen eingegeben hat zur Zelle für das Leerzeichen zurückspringt. Mir kam dieses Feature am Anfang nervig vor und ich glaube nicht, dass ich damit Zeit (oder was auch immer) beim Eingeben spare.

Jetzt hab ich mal so ein Tastenfeld simuliert und tatsächlich: Mit dem Feature braucht man weniger Anschläge (Ich glaube, es liegt daran, dass das Leerzeichen zentral liegt). Sogar bei Titeln, mit vielen Doppelbuchstaben ist das System schneller, z.B. Bootterramm Smile .

Probiert es aus. wenn ihr die Konstante "feature" auf 1 setzt, springt er zurück (schneller) wenn ihr sie auf 0 setzt springt er nicht zurück (langsamer).
Je höher time ist, desto besser kann man's mitverfolgen und desto länger dauert's Smile .

An hits könnt ihr nachher die Anzahl der Tastendrücke am Controler, der Fernbedienung etc. ablesen.

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

Const max = 9
Const time = 30
Const feature = 0

Dim exa$(max)
For i = 1 To max
Read exa(i)
Next

Data "Independence Day"
Data "Rush Hour II"
Data "Lion King"
Data "Das grosse Krabbeln"
Data "Bela B Tag mit Schutzumschlag"
Data "Malcom Mittendrin"
Data "Southpark der Film"
Data "Stromberg Badminton"
Data "American Dad Saudi Arabien"

Global num,lnr,hits,cx,cy,titel$,sel

Dim cell$(2,8)
Data "abcdefghijklm nopqrstuvwxyz"
Read abc$
For j = 0 To 8
For i = 0 To 2
cell(i,j) = Upper(Mid(abc,j*3+i+1,1))
Next
Next

Function entry()
If num<=max Then

For j = 0 To 8
For i = 0 To 2
If Upper(Mid(exa(num),lnr,1)) = cell(i,j) Then

If cx<>i Then
cx = cx + Sgn(i-cx)
hits = hits + 1 ;(Steuern)

ElseIf cy<>j Then
 cy = cy + Sgn(j-cy)
 hits = hits + 1 ;(Steuern)

ElseIf (i = cx) And (j = cy) Then
titel = titel + cell(i,j)
hits = hits + 1 ;(Enter drücken)

If lnr = Len(exa(num)) Then
titel = titel + "-"
lnr = 1
num = num + 1
Else
lnr = lnr + 1
EndIf

;========================================
If feature = 1 Then
sel = 13
cx = sel Mod 3
cy = sel / 3
EndIf
;========================================

EndIf

sel = cy*3+cx

EndIf
Next
Next

EndIf
End Function

titel = ""
sel = 13
cx = sel Mod 3
cy = sel / 3
num = 1
lnr = 1
hits = 0

Repeat

entry()
;draw
Color 255,0,0
Rect 90+(sel Mod 3)*20,40+(sel/3)*20,20,20

Color 255,255,255
For j = 0 To 8
For i = 0 To 2
Rect 90+i*20,40+j*20,20,20,0
Text 100+i*20,50+j*20,cell(i,j),1,1
Next
Next

Text 0,0,sel

Text 0,20,"lnr: "+Str(lnr)
Text 0,30,"num: "+Str(num)
Text 0,40,"hits: "+Str(hits)

s = 0
r = 0
For i = 1 To Len(titel)
If Mid(titel,i,1)="-" Then
r = r + 1
s = 0
Else
s = s + 1
Text 50+s*10,300+r*10,Mid(titel,i,1)
EndIf
Next

If feature = 1 Then Text 300,50,"Mit Rückspringen" Else Text 300,10,"Ohne Rückspringen"

Flip
Delay time
Cls
Until KeyHit(1)
End


Also, solltet ihr mal soein Feld programmieren, denkt mal drüber nach, das feature auch zu benutzen.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

mabox

BeitragDi, Okt 23, 2007 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider geht kein ä,ö und ü.
Sonst ist es echt gut!
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group