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 юзай ;) Крч, указываешь стринг в кором искать, далее стринг (символы), которые искать и далее порядковый номер буквы, начиная с которой искать. Возвращает номер порковый номер первого же совпадения который обнаружит.

HolyDel 18.10.2007 08:42

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

Сори напутал, не Mid а Instr юзай
а я уже хотел идти ругаться.

юзай динамический вариант.
юзай массивы, чтобы посмотреть на несколько предыдущих команд и заюзать одну из них
юзай клавиши управления курсором для перемещения курсора и line для его отрисовки
юзай KeyDown(14) - backspace и KeyDown(211) - Del для зачистки

юзай еще много чего, и напиши отличную консоль. консоль ето главное в игре, пусть в ней не будет геймплея, графики, звуков, а тока один белый квадрат ездющий вверх и вниз, но если в игре будет отличная консоль - успех ей обеспечен ;)

ЛысыЙ_Чук-Иванчук 18.10.2007 09:40

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

юзай еще много чего, и напиши отличную консоль. консоль ето главное в игре, пусть в ней не будет геймплея, графики, звуков, а тока один белый квадрат ездющий вверх и вниз, но если в игре будет отличная консоль - успех ей обеспечен
Щя сяду консольку писать:)

Trilliput 18.10.2007 16:45

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

Сообщение от HolyDel
но если в игре будет отличная консоль - успех ей обеспечен ;)

Кто знает может "консольные" игры станут популярными ... :-D

... может еще что скажеш? ... я понимаю что человек создавший вартэк может позволить себе поязвить, но смысла я в этом невижу ...

moka 18.10.2007 17:05

Re: Как создать консоль?
 
Trilliput, невидишь, а зря :) Опыт - вот что важно. А лень - погубит.

IGR 18.10.2007 20:56

Re: Как создать консоль?
 
а ты консолб в отдельном окне собираешся делать ??
ил так просто на экране ??

просто интересно !! :)

Trilliput 18.10.2007 22:08

Re: Как создать консоль?
 
Немного не так выразился, вобщем каждому свое.
Консоль просто на экране будет + еще дебаг-окно, в нем будут отображаться разные переменные.

HolyDel 18.10.2007 23:16

Re: Как создать консоль?
 
Trilliput, ты угадал, я язвил, простите грешного, но сухо говорить уже достало.

если чисто фактами - то простой инпут, без всяких getkey, без всего выше мною перечисленное, ето все - что надо для небольшой игры, по крайней мере на этапе разработки.
насчет определения команды - лучше всего парсить по пробелам и запятой(для отделения параметров).
потом select command
case: "fuckthemall": kill_all_bots()
case: "health":en=en+param(1)
end select
в param(1..n) - будуит хранится n отпарсенных парметров.
На все про все - 20 строк.

Leito 19.10.2007 00:56

Re: Как создать консоль?
 
скачай код логова и зацени функцию GameScript
в нутри собственно (additem, removeitem)
и будит тебе счастье.
код логова находится в соответствующей теме из раздела проекты на этапе разработки

Trilliput 19.10.2007 18:12

Re: Как создать консоль?
 
[quote=HolyDel]Trilliput, ты угадал, я язвил, простите грешного, но сухо говорить уже достало.[/QUOTE]
Если я никогда не делал консоль хочется перебрать много вариантов. Иначе это все похоже на выбор авто по советам, типа по длине двигателя.
:mda:

avel 14.01.2008 21:44

Ответ: Как создать консоль?
 
через инпут самый оптимальный вариант! остальное - это буржуйские излишки... консоль она на то и консоль, чтобы юзать во время разработки... ну, или там режим бога перед знакомыми поставить... :)

IGR 15.01.2008 01:00

Ответ: Как создать консоль?
 
Цитата:

ну, или там режим бога перед знакомыми поставить
для этого каментим строчку:
if BOT_attack() then playerLIFE = playerLIFE - 1 :-)

Цитата:

еще дебаг-окно, в нем будут отображаться разные переменные
ну можно дебагер включить !! там тоже они отображаются, но если свое родней, то никто же не запрещяет !!

jimon 15.01.2008 01:19

Ответ: Как создать консоль?
 

Код:

if BOT_attack() then playerLIFE = playerLIFE - 1
омг ето какой архитектурой должна обладать игра
чтобы там были такиееее строчки O_o

HolyDel 15.01.2008 04:22

Ответ: Как создать консоль?
 
нет. через инпут ето не самый оптимальный вариант. игра должна продолжаться даже при вызванной консоли.


jimon, ты еще представь сколько йаду нужно компилятору, чтобы закоментить строчку в рантайм ;)
чо еще можно сказать? it's IGR style.

avel 15.01.2008 05:15

Ответ: Как создать консоль?
 
Цитата:

it's IGR style.
прикольно... :)
HolyDel а нафиг во время консоли игре продолжаться, по моему наоборот должна быть пауза... хотя ХЗ... это, конечно, кому как удобнее...

moka 15.01.2008 08:53

Ответ: Как создать консоль?
 
Дык, дай право выбора: жмёшь паузу и открываешь консоль :)

jimon 15.01.2008 09:01

Ответ: Как создать консоль?
 
avel
ну стрелялки все имеют архитектуру Клиент - Сервер
тоесть даже если оно запускается на одном компе
то там есть клиент и сервер (без выхода в сеть правда .. логически просто)

так вот работают они в разных потоках и консоль
изначально просто посылает некоторые команды в сервер :)
да и сама консоль обычно не ставит на паузу клиент

avel 15.01.2008 20:45

Ответ: Как создать консоль?
 
Цитата:

Дык, дай право выбора: жмёшь паузу и открываешь консоль
действительно!
jimon
Цитата:

ну стрелялки все имеют архитектуру Клиент - Сервер
не все.

jimon 15.01.2008 21:32

Ответ: Как создать консоль?
 
avel
через попу написаные - не все ...
а правильные стрелялки с расчетом на пьяную фантазию геймдизайнера в большой относительно компании имхо рациональней всего писать с клиент-сервер архитектурой

банально даже сохранения так проще делать, не говоря даже о других плюсах етой архитектуры
(паралельная разработка, возможность представления ии как полноценого игрока, сразу можно воплотить сетевую игру и тд и тп)

из минусов : нужны мозги и правильная архитектура базовых интерфейсов

ну конечно может даже и взрослые игры не все так написаны :)
я не могу отвечать за всех и вся ... но ето мое имхо :)

avel 15.01.2008 23:33

Ответ: Как создать консоль?
 
jimon ну, а то, что было выше - это мое ИМХО... :)
Цитата:

нужны мозги и правильная архитектура базовых интерфейсов
так вот то-то и оно, что с архитектурой интерфейсов могут быть несостыковки...

jimon 16.01.2008 00:10

Ответ: Как создать консоль?
 
avel
потому на работу нанимают только опытный народ
как в одной конторе мне сказали :
нам нужны опытные программисты, чтобы они пришли
и просто копировали свои наработки из старых проектов

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

avel 16.01.2008 00:57

Ответ: Как создать консоль?
 
jimon ну, так затем мы здесь все и собрались, чтобы коллекционировать наброски... :) а в споре, как известно, рождается истина!


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

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