|
17.10.2007, 15:40
|
#1
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Как создать консоль?
Как создать консоль?
Проблема только в том что команда input все портит, у меня не получается выйти из консоли.
while cons=true
if keyhit(59) then cons=false
command$=input(":>")
select command
case "test"
print "ok"
end select
wend
|
(Offline)
|
|
17.10.2007, 15:47
|
#2
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Как создать консоль?
пиши свой инпут. Пользуйся командой getkey(), тока помни что она возвращает код ASCII!
|
(Offline)
|
|
17.10.2007, 15:53
|
#3
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
Вспомнил что где то на форуме видел туториал по консоли, или ошибаюсь?
Как сопоставить аски код и букву?
Function Input(ascii)
select ascii
case 1
return ('a')
case 2
return ('b')
и д
end select
end function
write Input(getKey)
|
(Offline)
|
|
17.10.2007, 16:39
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как создать консоль?
Юзай GetKey она возвращает сразу ASCII код значка.
gKey=GetKey()
vLine$=vLine+Chr(gKey)
Text 10,10,vLine
В общем, есть таблица ASCII кода. Заметь что заглавные отличаються от прописных, но есть у них радиус, от опр до опр номера - буквы, в общем в справке там есть таблица.
Chr - Возвращает символ из ASCII списка.
GetKey - Получает ASCII код нажатой клавишы.
Варриант подходит для консоли, тем что не застаивает приложение.
input здесь никак не идёт.
|
(Offline)
|
|
17.10.2007, 16:57
|
#5
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
Мне вобщм то неважно работает приложение в данный момент или нет. БИГ СПС за то что напомнил функцию Chr, а то я уже хотел таюлицу символов перебивать.
Ну и надумал еще один способ создания консоли с Input():
While cons=True
If KeyHit(59) Then
cons=False
EndIf
Locate0,0
IfGetKey() Then
command$ = Input(":>")
EndIf
Rect0,0,800,300,0
RenderWorld
Text0,0,":>"
Flip
Wend
|
(Offline)
|
|
17.10.2007, 17:11
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как создать консоль?
Ещё для реализации консоли, советую сделать какбы систему базы данных, с классом комманд, и сразу параметрами, и прописывать на каждую комманду действия.
Тоесть:
1. Все заглавные заменяем на прописные (бывает что заглавными ктото написал).
2. Функцией Mid находим пробел, и отделяем левую и правую части.
3. Далее перебираем массив перменных\комманд, и действуем по типу переменной: просто изменяет значение опр переменной/совершает какое либо действие.
Для каждой нужно писать выполнение.
Таким образом будет несложно редактируемый интерфэйс.
Я помню делал связку с xml, было удобно что-либо добовлять новое. Но к сожелению это не С++, где добавление новых, можно реализовать полностью динамично. По крайней мере нужны скрипты, если их к блицу прикрутить (например луа), то будет уже лучше, но всё равно хз, полной динамики с огромными возможностями жобться думаю не удастся.
|
(Offline)
|
|
17.10.2007, 17:15
|
#7
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
Re: Как создать консоль?
Trilliput, используй тег [blitz]. Так будет круче выглядеть, если еще форматирование созраняешь)))
|
(Offline)
|
|
17.10.2007, 17:17
|
#8
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как создать консоль?
|
(Offline)
|
|
17.10.2007, 17:24
|
#9
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
использовать while..wend даже удобнее, ненужно отслеживать что ты сейчас находишся в консоли. А то полцчается что набирая некотрые команды у меня герои в игре наинают туда сюда бегать.
Вопрос: как обрабатывать введеную команду? всмысле как доставать параметры из команды? Например CreateEnemy 10,10,10,boll. Так понимаю что надо сначала узнать что это за команда, прочитав до символа пробела, а потом читать параметры через зпт, блин но как это сделать?
|
(Offline)
|
|
17.10.2007, 19:01
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как создать консоль?
Trilliput, юзай Mid функцию, она возвращает порядковый номер найденого символа.
Насчёт Нормального консоля, пауза нерулит. Прикинь у тебя будет такая ситуация: на тебе облучка, ты делаешь ждать тут получаються потери во времени, переборы, могут возникать большое колличество багов. В общем имхо: не советую. Делай динамику, я проверял намного лучше будет.
|
(Offline)
|
|
17.10.2007, 23:05
|
#11
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
Проблем спаузой в моей программе нет, не та сложность. Наоборот получается даже лучше, мне не нужно следить за "паузой" в игре или за тем что бы клавиши нажатые в консоли не влияли на игру. Ну крутиться себе цикл и пусть крутиться, выполняется же только он!
Ну а вобще пока у меня такой вариант (реалтайм ):
If cons=True
value=GetKey()
If value>=32 And value<=126 Then
command$=command+Chr(value)
value=0
EndIf
Rect 0,0,800,300,0
Text 0,0,":>"+command
If KeyHit(28) Then
For T = 1 To Len(command)
If Mid(command,t,1) = " " Exit
icom$=icom+Mid(command,t,1)
Next
Select icom
Case "powershot"
powershot=maxpowershot
End Select
command=""
icom=""
EndIf
EndIf
|
(Offline)
|
|
17.10.2007, 23:14
|
#12
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
Я вот эту статью и искал, но после повторного просмотра понял что способ из журнала неподходит. Даже способ ввода команд, хотелось бы несколько за раз и тп.
|
(Offline)
|
|
17.10.2007, 23:26
|
#13
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как создать консоль?
Сообщение от Trilliput
Даже способ ввода команд, хотелось бы несколько за раз и тп.
|
да ты не консоль, а транслятор языка чтоли пишешь? минимум команд и всё
debug=[true,false]
savelog=[file]
do [???]
help
...
вобщем 5-10 команд вполне хватит.
|
(Offline)
|
|
17.10.2007, 23:35
|
#14
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Как создать консоль?
Мне нужно прсто менять за раз несколько параметров, иначе в игре хаос начинается. Ну и свой способ всегда понятнее и лучше.
Проблема в том как строку разбирать на элементы.
|
(Offline)
|
|
18.10.2007, 01:30
|
#15
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как создать консоль?
Ой забыл! Сори напутал, не Mid а Instr юзай Крч, указываешь стринг в кором искать, далее стринг (символы), которые искать и далее порядковый номер буквы, начиная с которой искать. Возвращает номер порковый номер первого же совпадения который обнаружит.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:58.
|