forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   ввод текста в ксорсе (http://forum.boolean.name/showthread.php?t=18003)

IgorOK 20.03.2013 13:13

Ответ: ввод текста в ксорсе
 
Цитата:

Сообщение от ProGamer (Сообщение 255287)
Код:

y=0
num=1
Dim old$(10000)
Repeat
k%=GetKey()
If k<>0
t$=Chr$(k)
t2$=t2$+t$
EndIf         
If KeyHit(28)
num=num+1
old$(num)=t2$
t2$=""
y=y+12
EndIf
For i=1 To num
Text 0,y-(12*(i-2)),old$(i)
Next
Text 0,0,t2$
Flip
Cls
Until KeyHit(1)
End

код стал короче,регистр меняется при удерживании shift,при нажатии enter переход на новую строку

А теперь попробуй понажимать стрелочки и посмотри, что получится. Надо сделать фильтрацию ввода от непропечатываемых символов.

IgorOK 20.03.2013 15:47

Ответ: ввод текста в ксорсе
 
Код:

Dim TextLine$(100)        ; массив строк

Global LineIndex=0 ;индекс текущей строки в массиве
Global TextHeight=10 ;высота строки
Global Enter ;переменная равна 1 если был нажат Enter

FlushKeys()

Function UpdateInput(X, Y)
        Local Key=GetKey()
       
        Enter=False
       
        If Key        ; Key>0

                If Key=13        ;        enter
                        LineIndex=LineIndex+1
                        Enter=True
                       
                Else If Key=8        ;        backspace
                        TextLine(LineIndex)=Left(TextLine(LineIndex), Len(TextLine(LineIndex))-1)
                       
                Else If Key>=32 And Code=<126
                        TextLine(LineIndex)=TextLine(LineIndex)+Chr(Key)
                EndIf
        EndIf
       
        For Index=0 To LineIndex
                Text X, Y+Index*TextHeight, TextLine(Index)
        Next
End Function

Graphics 1024, 768, 32, 1
SetBuffer BackBuffer()

While Not KeyHit(1)
        UpdateInput(100, 100)
        Flip
        Cls
Wend

Вот так примерно лучше сделать.

P.S. Ещё рекомендую ставить отступы в коде. Лишний раз Tab нажать не сложно, зато потом ошибки искать в разы легче.

Кирпи4 20.03.2013 20:18

Ответ: ввод текста в ксорсе
 
IgorOK,

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 150 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

IgorOK 21.03.2013 01:10

Ответ: ввод текста в ксорсе
 
Цитата:

Сообщение от Кирпи4 (Сообщение 255392)
IgorOK,

*** скрытый текст ***

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 700 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Arles 21.03.2013 04:01

Ответ: ввод текста в ксорсе
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5000000 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Владислав 21.03.2013 09:03

Ответ: ввод текста в ксорсе
 
ты меня очень напугал своим кодом, ну и идеями..

вот держи простой код для консоли

Код:

Global CON_ENTERED$

Function DrawConsole()
        If CON_VISIBLE Char$ = xGetKey()
                       
                If xKeyDown(14); backspace
                        If Not CON_ENTERED = "" CON_ENTERED = Left(CON_ENTERED, Len(CON_ENTERED) - 1)
                        Return False
                End If
       
                If xKeyHit(28); enter
                        execute(CON_ENTERED)
                        CON_ENTERED = ""
                        Return False
                End If
       
                If Char CON_ENTERED = CON_ENTERED + Chr(Char)
       
                xText 10, 10, ">: " + CON_ENTERED
               
        End If
End Function

Function execute(command$)
        ; Тут с помощью select command
End Function


St_AnGer 21.03.2013 11:11

Ответ: ввод текста в ксорсе
 
Владислав, пример кода от IgorOK более правильный ИМХО, потому что у него напечатаются только цифры/буквы/символы. И никаких спецсимволов. В Вашем коде нет ограничения на это. Но, у него нет ограничения на стирание символов. Так что, для более-менее полноценного результата, ваши коды нужно сложить :)

Владислав 21.03.2013 18:11

Ответ: ввод текста в ксорсе
 
Я не скажу что он менее или более правильный, он проще.


Часовой пояс GMT +4, время: 15:06.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot