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

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

Страницы: 1 2 Следующая »
#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 в оригинальном дизайне и алгоритме. Если получится, позже займусь текстовым "Диктатором" и "Королевством".

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

5 янв. 2016

#1

yolkfolk
Ща разгребу, что смогу

5 янв. 2016

#2

yolkfolk
Вот кое-что руками разгрёб:
http://pastebin.com/kEeuMybT

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

5 янв. 2016

#3

Ээээ! Так ты игру без меня напишешь ))) Шутка. Так даже проще и понятней. Я-то думал, просто, в текстовом виде будут написаны условия для каждого блока.

5 янв. 2016

#4

yolkfolk
По-большому счёту есть три пути:
1. Разгребать руками.
2. Написать автоматический конвертер.
3. Написать интерпретатор бейсика.

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

5 янв. 2016

#5

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


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

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

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

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

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

5 янв. 2016

#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:
  }

}

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

6 янв. 2016

#7

Alprog
> Это легко генерится,

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

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

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

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

6 янв. 2016

#8

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

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

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

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

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

6 янв. 2016

#9

Поднять руку на ZX-Spectrum Basic !
На святое !!!
Изображение

7 янв. 2016

#10

Начал писать: набросал основные блоки, осталось дописать формулы к каждому пункту: https://yadi.sk/d/VYrh4zkumo77g
Файл буду пополнять, ссылка останется неизменной.

11 янв. 2016

#11

пц проще свой написать с блекджеком и шлюхами

12 янв. 2016

#12

obrez, свой (сиквел) - это дольше. Если уж его писать, то  ведь имеет смысл сделать его интересней: придумать более крутой функционал и осовременить - добавить скандалы типа как Стросс-Кана обвиняли в попытке изнасилования горничной. Добавить влияние Ассанджа и Сноудена. Цветные революции...

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

14 янв. 2016

#13

Virtex
> свой (сиквел) - это дольше
зато и интересней, особенно если есть идеи что улучшить/добавить

14 янв. 2016

#14

Я тоже сейчас думаю, что интересней сделать своё. Можно еще примешать сюжеты из "Диктатора". Но тогда тут нужен свой сценарий и, соответственно, сценарист. С другой стороны, такую игру, если она будет интересней, уже можно и монетизировать.

14 янв. 2016

Страницы: 1 2 Следующая »
ПроектыФорумСобираю команду

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