Проекты
GameDev.ru / Проекты / Форум / Президент. Кто переложит код бейсика в ТЗ?

Президент. Кто переложит код бейсика в ТЗ?

Страницы: 1 2 Следующая »
yolkfolkПостоялецwww5 янв. 201614:38#0
Всем привет, друзья. Загорелся я идеей переписать игру "Президент" для ZX Spectrum. Вообще-то она переписана один раз для Google Play, но: во-первых, она только под Android, во-вторых, нет обновлений, так как автор посеял ключ, в третьих, автор в коде не разбирался, а писал его, как хотел сам. Ну и дизайн опять же.

Я добыл сам код, есть два варианта конвертера, результаты здесь: https://yadi.sk/d/DziptYMMmg9JN
Смотреть удобнее через Notepad++, для него даже есть подсветка синтаксиса: http://zx-pk.ru/showthread.php?t=24690
Спектрумовские шрифты вот (это я для себя): http://www.fonts-online.ru/font/ZX-Spectrum
Спетрумовская игра (TAP): https://yadi.sk/d/5gm_5EWE7n_wE

Хотел бы игру переписать под Android, iOS, Windows Phone в оригинальном дизайне и алгоритме. Если получится, позже займусь текстовым "Диктатором" и "Королевством".

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

AlprogМодераторwww5 янв. 201618:27#1
yolkfolk
Ща разгребу, что смогу
AlprogМодераторwww5 янв. 201620:48#2
yolkfolk
Вот кое-что руками разгрёб:
http://pastebin.com/kEeuMybT

Пока надоело. Честно говоря, интерпретатор написать проще.

yolkfolkПостоялецwww5 янв. 201621:06#3
Ээээ! Так ты игру без меня напишешь ))) Шутка. Так даже проще и понятней. Я-то думал, просто, в текстовом виде будут написаны условия для каждого блока.
AlprogМодераторwww5 янв. 201621:14#4
yolkfolk
По-большому счёту есть три пути:
1. Разгребать руками.
2. Написать автоматический конвертер.
3. Написать интерпретатор бейсика.

Я бы на твоём месте занялся бы третьим способом. Парсить бейсик легко, а используемых команд в игре не так много и они все простые.
Самое сложное — это раскрытие скобок и приоритет операторов. Остальное так и вообще фигня. Зато интересно будет.

VirtexПостоялецwww5 янв. 201623:58#5
Зачем интерпретатор-то. Делать его не проще, чем конвертер, но при этом интерпретатор имеет следующие минусы:
1) на выходе получится более сложная структура (код на Бейсике + интерпретатор), чем в случае с конвертером (всего лишь код на C#, например);
2) более сложная доработка игры - если вдруг вместо текстового GUI таки надумаете прикрутить современный графон и прочие ништяки, то придется помимо реализации этих фич в движке игры еще и писать API для вызова их из Бейсика;
3) наличие в игре исходного Бейсик-кода - отличная возможность для правообладателей взять вас за задницу, если захотят. :))


yolkfolk
> Хотел бы игру переписать под Android, iOS, Windows Phone
> в оригинальном дизайне

Т.е. ты уже представил (и тебя ничего не смутило в этой картине?), как современные избалованные геймеры на своих Айфонах за 50000 руб. пялятся в текстовый черно-белый экран и старательно тычутся в виртуальную клавиатуру, вводя буковки, циферки и Enter... Вместо того, чтобы кликать по симпатичным (хотя бы пиксель-артным) иконкам... И кричат, давай еще такие игры, нас штырит этот интерфейс! :)))

В игре по фильму "Марсианин" это хотя бы оправдано сюжетом и даже усиливает атмосферность, но зачем такое в игре про Президента?..

> и алгоритме.

Правообладатели в курсе? :))

AlprogМодераторwww6 янв. 20160:45#6
Virtex
> Делать его не проще, чем конвертер

Ну я вот так сходу не могу придумать алгоритм, который бы границы блоков в ветвлении универсально понимал. Вот зацени тривиальный кусок:

510 INPUT "( [P]PO[D]A[H]A=0/[P]OK[U][P]KA=1) ",X
    INPUT " ([N]ТO=N): ",Y
    IF (X-1)<=0 THEN GO TO 530
520 GO SUB 310: GO TO 510
530 IF (5-Y)<0 THEN GO TO 520
532 RETURN

превращается в

void func510()
{
  while (true)
  {
    X = INPUT(" (ПPOДAЖA=0/ПOKУПKA=1): ");
    Y = INPUT(" (ЧТO=N): ");
    if (X - 1 <= 0)
    {
      if (5 - Y >= 0)
      {
        return;
      }
    }
    func310();
  }
}

Всякие break и continue ещё сложнее определяются.

Разве что сделать длинный сквозной switch с номерами строк и крутить его в цикле.
То есть во что-нибудь такое преобразовать:

int line = 510;

std::vector<int> rets;

#define GOTO(num) line = num; break;
#define GOSUB(num, ret) rets.push_back(ret); line = num; break;
#define RETURN line = rets.pop(); break;

do
{
  switch(line)
  {
  //...
    
  case 510:
    X = INPUT(" (ПPOДAЖA=0/ПOKУПKA=1): ");
    Y = INPUT(" (ЧТO=N): ");
    if (X - 1 <= 0)
    {
      GOTO(530)
    }

  case 520:
    GOSUB(310, 530)
    GOTO(num)

  case 530:
    if (5 - Y < 0)
    {
      GOTO(520)
    }

  case 532:
    RETURN
    
  //...
  
  default:
  }

}

Это легко генерится, но мало чем отличается от изначального варианта.

VirtexПостоялецwww6 янв. 20162:03#7
Alprog
> Это легко генерится,

Вот я о подобной конвертации "лоб-в-лоб" и говорю.

Интерпретатор ведь делает то же самое.

> но мало чем отличается от изначального варианта.

В варианте с интерпретатором тоже не отличается, так что не страшно. :)

yolkfolkПостоялецwww6 янв. 20168:52#8
Virtex
> Т.е. ты уже представил (и тебя ничего не смутило в этой картине?), как
> современные избалованные геймеры на своих Айфонах за 50000 руб. пялятся в
> текстовый черно-белый экран и старательно тычутся в виртуальную клавиатуру,
> вводя буковки, циферки и Enter... Вместо того, чтобы кликать по симпатичным
> (хотя бы пиксель-артным) иконкам... И кричат, давай еще такие игры, нас штырит
> этот интерфейс! :)))

У меня идея следующая. Никаких циферок не будет. Обычный тап на надпись, в самом начале год берется текущий, сумма генерится автоматически. Просто все то, что было в игре - скроллинг, шрифт - будет очень напоминать текущую игру.

Про правообладателей вопрос хороший. Я уж думал, их и не найти нонче.

Про вставку картинок - сделать это совсем несложно, но зачем? там всего несколько меню, которые будут повторяться + несколько событий. Нужно ли это? Не испортит ли это атмосферу оригинальной игры? Вот вопрос.

Насчет конвертеров и интерпретаторов. Мне, если честно, удобно все это видеть в виде ТЗ, где расписаны блоки и алгоритм каждого блока, обычной формулой. Тогда их можно также и запрограммировать, в виде подпрограмм, и их вызывать. Нынешний код и не оформлен никак, и не уверен, что надлежащим образом структурирован.

ronnikoЗабаненwww7 янв. 201613:58#9
Поднять руку на ZX-Spectrum Basic !
На святое !!!
Изображение
yolkfolkПостоялецwww11 янв. 201611:08#10
Начал писать: набросал основные блоки, осталось дописать формулы к каждому пункту: https://yadi.sk/d/VYrh4zkumo77g
Файл буду пополнять, ссылка останется неизменной.
obrezПостоялецwww12 янв. 201614:55#11
пц проще свой написать с блекджеком и шлюхами
VirtexПостоялецwww14 янв. 20160:10#12
obrez, свой (сиквел) - это дольше. Если уж его писать, то  ведь имеет смысл сделать его интересней: придумать более крутой функционал и осовременить - добавить скандалы типа как Стросс-Кана обвиняли в попытке изнасилования горничной. Добавить влияние Ассанджа и Сноудена. Цветные революции...

А если просто делать ремейк, то единственный вариант - обсуждавшаяся "тупая" конвертация кода. Чтобы заменить консольный ввод-вывод на современные текстовые менюшки - в сконвертированном коде потребуются совсем небольшие изменения.

obrezПостоялецwww14 янв. 201611:01#13
Virtex
> свой (сиквел) - это дольше
зато и интересней, особенно если есть идеи что улучшить/добавить
yolkfolkПостоялецwww14 янв. 201614:44#14
Я тоже сейчас думаю, что интересней сделать своё. Можно еще примешать сюжеты из "Диктатора". Но тогда тут нужен свой сценарий и, соответственно, сценарист. С другой стороны, такую игру, если она будет интересней, уже можно и монетизировать.
Страницы: 1 2 Следующая »

/ Форум / Проекты / Собираю команду

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр