forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Как создать консоль? (http://forum.boolean.name/showthread.php?t=4788)

Trilliput 17.10.2007 15:40

Как создать консоль?
 
Как создать консоль?
Проблема только в том что команда input все портит, у меня не получается выйти из консоли.
Код:

while cons=true
if keyhit(59) then cons=false
command$=input(":>")
select command
case "test"
print "ok"
end select
wend


H@NON 17.10.2007 15:47

Re: Как создать консоль?
 
пиши свой инпут. Пользуйся командой getkey(), тока помни что она возвращает код ASCII!

Trilliput 17.10.2007 15:53

Re: Как создать консоль?
 
Вспомнил что где то на форуме видел туториал по консоли, или ошибаюсь?

Как сопоставить аски код и букву?
Function Input(ascii)
select ascii
case 1
return ('a')
case 2
return ('b')
и д
end select
end function

write Input(getKey)

moka 17.10.2007 16:39

Re: Как создать консоль?
 
Юзай GetKey она возвращает сразу ASCII код значка.

gKey=GetKey()
vLine$=vLine+Chr(gKey)
Text 10,10,vLine

В общем, есть таблица ASCII кода. Заметь что заглавные отличаються от прописных, но есть у них радиус, от опр до опр номера - буквы, в общем в справке там есть таблица.
Chr - Возвращает символ из ASCII списка.
GetKey - Получает ASCII код нажатой клавишы.
Варриант подходит для консоли, тем что не застаивает приложение.
input здесь никак не идёт.

Trilliput 17.10.2007 16:57

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


moka 17.10.2007 17:11

Re: Как создать консоль?
 
Ещё для реализации консоли, советую сделать какбы систему базы данных, с классом комманд, и сразу параметрами, и прописывать на каждую комманду действия.
Тоесть:
1. Все заглавные заменяем на прописные (бывает что заглавными ктото написал).
2. Функцией Mid находим пробел, и отделяем левую и правую части.
3. Далее перебираем массив перменных\комманд, и действуем по типу переменной: просто изменяет значение опр переменной/совершает какое либо действие.
Для каждой нужно писать выполнение.
Таким образом будет несложно редактируемый интерфэйс.
Я помню делал связку с xml, было удобно что-либо добовлять новое. Но к сожелению это не С++, где добавление новых, можно реализовать полностью динамично. По крайней мере нужны скрипты, если их к блицу прикрутить (например луа), то будет уже лучше, но всё равно хз, полной динамики с огромными возможностями жобться думаю не удастся.

Данил 17.10.2007 17:15

Re: Как создать консоль?
 
Trilliput, используй тег [blitz]. Так будет круче выглядеть, если еще форматирование созраняешь)))

dimanche13 17.10.2007 17:17

Re: Как создать консоль?
 
А в журнале есть такая статья...
http://blitzetcetera.org/index.php/О...ольным_методом

Trilliput 17.10.2007 17:24

Re: Как создать консоль?
 
использовать while..wend даже удобнее, ненужно отслеживать что ты сейчас находишся в консоли. А то полцчается что набирая некотрые команды у меня герои в игре наинают туда сюда бегать.

Вопрос: как обрабатывать введеную команду? всмысле как доставать параметры из команды? Например CreateEnemy 10,10,10,boll. Так понимаю что надо сначала узнать что это за команда, прочитав до символа пробела, а потом читать параметры через зпт, блин но как это сделать?

moka 17.10.2007 19:01

Re: Как создать консоль?
 
Trilliput, юзай Mid функцию, она возвращает порядковый номер найденого символа.
Насчёт Нормального консоля, пауза нерулит. Прикинь у тебя будет такая ситуация: на тебе облучка, ты делаешь ждать тут получаються потери во времени, переборы, могут возникать большое колличество багов. В общем имхо: не советую. Делай динамику, я проверял намного лучше будет.

Trilliput 17.10.2007 23:05

Re: Как создать консоль?
 
Проблем спаузой в моей программе нет, не та сложность. Наоборот получается даже лучше, мне не нужно следить за "паузой" в игре или за тем что бы клавиши нажатые в консоли не влияли на игру. Ну крутиться себе цикл и пусть крутиться, выполняется же только он!
Ну а вобще пока у меня такой вариант (реалтайм :mda: ):
Код:

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


Trilliput 17.10.2007 23:14

Re: Как создать консоль?
 
Цитата:

Сообщение от dimanche13
А в журнале есть такая статья...
http://blitzetcetera.org/index.php/О...ольным_методом

Я вот эту статью и искал, но после повторного просмотра понял что способ из журнала неподходит. Даже способ ввода команд, хотелось бы несколько за раз и тп.

dimanche13 17.10.2007 23:26

Re: Как создать консоль?
 
Цитата:

Сообщение от Trilliput
Даже способ ввода команд, хотелось бы несколько за раз и тп.

да ты не консоль, а транслятор языка чтоли пишешь? минимум команд и всё
debug=[true,false]
savelog=[file]
do [???]
help
...

вобщем 5-10 команд вполне хватит.

Trilliput 17.10.2007 23:35

Re: Как создать консоль?
 
Мне нужно прсто менять за раз несколько параметров, иначе в игре хаос начинается. Ну и свой способ всегда понятнее и лучше.
Проблема в том как строку разбирать на элементы.

moka 18.10.2007 01:30

Re: Как создать консоль?
 
Ой забыл! Сори напутал, не Mid а Instr юзай ;) Крч, указываешь стринг в кором искать, далее стринг (символы), которые искать и далее порядковый номер буквы, начиная с которой искать. Возвращает номер порковый номер первого же совпадения который обнаружит.


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

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