![](images/chestnut/misc/left.gif) |
FAQ Туториалы и часто задаваемые вопросы |
20.03.2013, 13:13
|
#16
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: ввод текста в ксорсе
Сообщение от ProGamer
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 переход на новую строку
|
А теперь попробуй понажимать стрелочки и посмотри, что получится. Надо сделать фильтрацию ввода от непропечатываемых символов.
|
(Offline)
|
|
20.03.2013, 15:47
|
#17
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: ввод текста в ксорсе
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 нажать не сложно, зато потом ошибки искать в разы легче.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.03.2013, 20:18
|
#18
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: ввод текста в ксорсе
IgorOK,
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 150 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
|
(Offline)
|
|
21.03.2013, 01:10
|
#19
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: ввод текста в ксорсе
Сообщение от Кирпи4
IgorOK,
*** скрытый текст ***
|
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 700 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо IgorOK за это полезное сообщение:
|
|
21.03.2013, 04:01
|
#20
|
ПроЭктировщик
Регистрация: 24.07.2009
Сообщений: 142
Написано 52 полезных сообщений (для 103 пользователей)
|
Ответ: ввод текста в ксорсе
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5000000 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
__________________
|
(Offline)
|
|
21.03.2013, 09:03
|
#21
|
ПроЭктировщик
Регистрация: 08.05.2011
Сообщений: 143
Написано 46 полезных сообщений (для 219 пользователей)
|
Ответ: ввод текста в ксорсе
ты меня очень напугал своим кодом, ну и идеями..
вот держи простой код для консоли
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
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.03.2013, 11:11
|
#22
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: ввод текста в ксорсе
Владислав, пример кода от IgorOK более правильный ИМХО, потому что у него напечатаются только цифры/буквы/символы. И никаких спецсимволов. В Вашем коде нет ограничения на это. Но, у него нет ограничения на стирание символов. Так что, для более-менее полноценного результата, ваши коды нужно сложить ![:)](images/smilies/smile.gif)
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.03.2013, 18:11
|
#23
|
ПроЭктировщик
Регистрация: 08.05.2011
Сообщений: 143
Написано 46 полезных сообщений (для 219 пользователей)
|
Ответ: ввод текста в ксорсе
Я не скажу что он менее или более правильный, он проще.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:26.
|