Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 27.02.2008, 23:30   #1
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Парсинг скриптов

Такая вот проблема. Думаю над системой парсинга скриптов (пока не начал реализовывать) и столкнулся с такой проблемой. Допустим, у меня есть скрипт файл, который надо отпарсить:

---------------Script.uss content----------------------
MoveEntity door, 0,.1,0
y=y+1
--------------end script--------------------------------
, где door - какойто объект, существующий в мире (заданный изнутри блица), а y - какая то переменная, заданная изнутри блица.

Как отпарсить эти строчки? Причем проблема то даже не в общем парсинге, а в парсинге entity из скрипта. Ведь entity в блице это указатель на объект, и вот как присвоить какое нибудь значение внутренней блицевской переменной из скрипта? Или сделать что нибудь с entity из скрипта? А то пока никаких идей...
(Offline)
 
Ответить с цитированием
Старый 27.02.2008, 23:42   #2
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

LD
регистрировать в скриптовой машине имя переменой и указатель на нее
так ты можешь из скрипта менять блицевские переменые
ps. это вроде идинственый простой метод
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LD (28.02.2008)
Старый 28.02.2008, 00:19   #3
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Парсинг скриптов

Мне интересны не сколько простые методы, сколько общий алгоритм действий, ведь полезнее будет знать несколько методом решения данной задачи. Но все равно спасибо )
(Offline)
 
Ответить с цитированием
Старый 28.02.2008, 00:39   #4
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

LD
к примеру еще можно регистрировать переменую после выделения ей памяти
(написать свой менеджер памяти, но тогда не очень понятно с именами переменных)
 
Ответить с цитированием
Старый 28.02.2008, 18:37   #5
Genius
Знающий
 
Аватар для Genius
 
Регистрация: 02.11.2007
Сообщений: 255
Написано 27 полезных сообщений
(для 43 пользователей)
Ответ: Парсинг скриптов

просто возьми готовый скриптовой язык для Б3Д,например есть BSE.
(Offline)
 
Ответить с цитированием
Старый 28.02.2008, 19:55   #6
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

Genius

может сразу играть в готовые игры и кушать с ложечки ?
зачем что-то делать ?
зачем жить ?
давайте убьем себя ап стену и лишим других людей от наших проблем
 
Ответить с цитированием
Старый 28.02.2008, 21:48   #7
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Парсинг скриптов

Про существование BSE я знаю, но зачем использовать готовое, когда интереснее написать свое. Так легче понять принцип работы скриптовой машины, и соответственно зная архитектуру легче ей оперировать.
(Offline)
 
Ответить с цитированием
Старый 03.03.2008, 19:41   #8
Leito
Танчики Developer
 
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений
(для 23 пользователей)
Re: Парсинг скриптов

ужас вы где таких слов понабрались, нельзя попростому)
while mid(s,i,1)<>"."
i++
wend
вот так это делается.
(Offline)
 
Ответить с цитированием
Старый 03.03.2008, 21:47   #9
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

Leito
у тебя в строке содержится "door_1"
как ты найдешь по тексту в строке переменную в блице ?
при етом строка может менятся ...

если ты мне раскажешь как найти того чего нет (имя переменых убиваются
при компиляции) то буду очень благодарен
 
Ответить с цитированием
Старый 09.06.2008, 20:33   #10
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Парсинг скриптов

А зачем обращаться именно по имени? Допустим перед началом работы передает в скрипт запрошенные им переменные (допустим пусть это будет адрес области памяти, в которой храниться значение этой переменной (относится и к ентитям также)). Но следовательно возникает две проблемы:

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

2) Как оперировать переменной зная ее адрес в памяти (как издевательство можно ассемблерной врезкой работать с регистрами проца (то есть хранить переменную не только в памяти но и в регистрах (допустим y в ах? и.т.д) и соответственно передавать в скрипт нужный регистр... Но в этом методе есть свои минусы.... Может есть какие нибудь еще варианты? Все таки интересно с памятью - надеюсь сможете помочь )
(Offline)
 
Ответить с цитированием
Старый 09.06.2008, 21:14   #11
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

LD
Почитай про http://ru.wikipedia.org/wiki/JIT
но в любом случае тебе нужно будет делать обвязку
чтобы из программы обращатся к переменным скрипта или наоборот
 
Ответить с цитированием
Старый 15.06.2008, 19:47   #12
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Парсинг скриптов

Может я конечно туплю, не бить сильно...
Но разве нельзя использовать сначала NameEntity, цикл по всем entity и сверять EntityName? В dll'ках (например в darkextension), кстати, были функции FirstEntity, LastEntity, NextEntity и т.д.
(Offline)
 
Ответить с цитированием
Старый 15.06.2008, 20:08   #13
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

Michael
; .. тут мы еще можем обратится к переменной SomeVar
Global SomeVar% = 1

;...............

; а тут напрямую НЕЛЬЗЯ обращатся к SomeVar, у нас есть только NeedVariable
Global NeedVariable$ = "SomeVar"
как ты получишь переменную SomeVar если у тебя есть только переменная NeedVariable ?

идинственый вариант это сохранить где нибудь имя и адресс переменной в первой части
а во второй уже по имени получать адресс и обращатся к переменной
 
Ответить с цитированием
Старый 15.06.2008, 20:18   #14
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Парсинг скриптов

ну так а что мешает проверить If EntityName$(entity)="NeedEntity" then ...
Ну и естественно, это только для объектов.
(Offline)
 
Ответить с цитированием
Старый 15.06.2008, 20:28   #15
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Парсинг скриптов

ну дык ето не будет работать.
у тебя то EntityName(ent) = SomeVar.

jimon, а как узнать адрес блицовой переменной? разве льзя?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека для подключения скриптов к .Net приложениям pax Visual Basic 3 30.01.2009 19:32
Нужны юзерлибы скриптов для PB 4.02 Manfred PureBasic 0 02.11.2007 13:04


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com