Board.KolibriOS.org
http://board.kolibrios.org/

Hack OS - text RPG
http://board.kolibrios.org/viewtopic.php?f=41&t=4235
Page 1 of 1

Author:  Alex2003 [ Wed May 20, 2020 9:21 pm ]
Post subject:  Hack OS - text RPG

Всем привет!
Решил всё-таки кодить, и вдохновение подсказало безбашенную идею -
запилить игру про хакеров.
Причём реально хакерскую: никакого GUI, только командная строка!
Весь этот код был напечатан за несколько дней на Pascal ABC NET (слыхали про такой?).
У меня два вопроса к комьюнитиЖ
1) Идея годная?
2) Как это переписать на Oberon 07?

Ниже код этой задумки
Code:
program Hack_OS_prealpha02;

uses CRT;

procedure help(var k: string);
begin
  writeln(' ');
  writeln('Это своеобразный порт HackerWars! Вот, держи, это команды, которые помогут тебе соориентироваться:');
  writeln('clearscr - если вы дезориентированы в гуще строк попробуйте эту команду!');
  writeln('profile - общая информация о тебе');
  writeln('web - интернет, где можно найти как удачу, так и беду');
  writeln(' ');
  write('>user: '); 
end;

procedure clearscr(var k: string);
begin
  ClrScr;
  write('>user: ');
end;

procedure web(var k: string);
begin
  writeln('this is NET');
  writeln(' ');
  write('>user: ');
end;

procedure profile(var k: string);
begin
  writeln('Ник (клан)');
  writeln('Уровень: xxxxx');
  writeln('Опыт: xxxx of xxxx');
  Writeln('Деньги: xxxx');
  Writeln('CryptoMoney: xxxx');
  Writeln('Action: xxxx');
  Writeln('Мотивация: xxxx');
  writeln('----------------');
  Writeln('Скилы');
  writeln('');
  writeln('Практика: хххх');
  writeln('Теория: АА+ВВ');
  writeln('Хитрость: xxxxx');
  writeln('Мудрость: xxxxx');
  writeln('Выносливость: 100%');
  writeln('----------------');
  writeln('Занятие');
  writeln('');
  writeln('Дела: работаешь, осталось х минут');
  writeln('Ты собираешься атаковать ххххх');
  writeln('До сна осталось хх часов хх минут');
  writeln('');
  write('>user: ');
end;

var
  k, user: string;

begin
  writeln('electron games presents...');
  writeln('');
  writeln('#####  #####');
  writeln('#      #');
  writeln('#####  #  ##');
  writeln('#      #   #');
  writeln('#####  #####');
  Delay(3000);
  ClrScr;
  write('Hack OS booting...');
  Delay(1000);
  ClrScr;
  writeln('Welcome to HackOS 0.1.0!');
  writeln('Вы в первый раз вошли! Настоятельно рекомендуем вам зарегистрироваться в системе');
  write('>user: ');
  read(user);
  Writeln('Спасибо за регистрацию в системе!');
  writeln('Для получения справки введите help');
  writeln('');
  write('>user: ');
 
  readln(k);
 
  while 2 > 1 do
  begin
    if k = 'help' then
      help(k);   
   
    if k = 'profile' then
      profile(k);
   
    if k = 'web' then
      web(k);
   
    if k = 'clearscr' then
      clearscr(k);   
   
    readln(k);
  end;
 
 
end.


Attachments:
File comment: Вирусов нет, скомпилировано мной лично
HWport console.rar [12.84 KiB]
Downloaded 47 times

Author:  Freeman [ Mon Jun 22, 2020 2:26 am ]
Post subject:  Re: Hackers World - text RPG

С горячей версией SDK получилось скомпилировать исходник с небольшими правками. Процедуры ввода-вывода в CRT пока нестандартные, но игра работает. Новая версия SDK пока задерживается.

Attachments:
HackersWorld.7z [3.21 KiB]
Downloaded 36 times

Author:  Alex2003 [ Wed Jun 24, 2020 9:07 pm ]
Post subject:  Re: Hackers World - text RPG

Freeman wrote:
С горячей версией SDK получилось скомпилировать исходник с небольшими правками. Процедуры ввода-вывода в CRT пока нестандартные, но игра работает. Новая версия SDK пока задерживается.

Слушай, документацией поделишься? Спасибо за порт!

Author:  Freeman [ Sun Jun 28, 2020 8:41 pm ]
Post subject:  Re: Hackers World - text RPG

Документацией на что? Описаний CRT навалом в Интернете. Мы сделали его максимально приближенным к оригиналу, взяв за образец версию от FreePascal. Все консольные функции Колибри реализованы.

Как пользоваться SDK — в Readme, стоит только руку протянуть.

Author:  Alex2003 [ Sat Oct 31, 2020 10:58 pm ]
Post subject:  Re: Hackers World - text RPG

Нате! :!:
Решил начать допиливать свою игру.
пока обучаюсь питону, решил допиливать на паскале abc
а вот и исходный код
Code:
program Hack_OS_prealpha06;

uses CRT;
uses Utils;

var
  t: integer; //time - время
  m, f, e: integer; // e - параметр для времени выхода
  k, user, usr: string; // k - команды от пользователя, user - считывание логина/пароля с клавиатуры, usr - считывание логина/пароля с файла
  log: text;// log - файл логина/пароля

//Раздел: процедуры

procedure help(var k: string);//Помощь
begin
  writeln(' ');
  writeln('Команды, которые помогут тебе соориентироваться:');
  writeln('clearscr - если вы дезориентированы в гуще строк, наберите эту команду');
  writeln('profile - общая информация о тебе');
  writeln('web - интернет, где можно найти как удачу, так и беду');
  writeln('help - путеводитель');
  writeln('hacktool - с помощью этой штуки можно взломать всё, что угодно - от компьютера офисного работника до сервера NetKings! Внимание! Знание E-Script обязательно!');
  writeln('task - если вы устали сидеть просто так, займитесь делами!');
  writeln('Удачи!');
  writeln(' ');
  write('>user: '); 
end;

procedure clearscr(var k: string);//Стереть экран
begin
  ClrScr;
  write('>user: ');
end;

procedure web(var k: string);//Просмотр интернета
begin
  writeln('');
  writeln('ezine - электронный магазин, где можно заказать от ультратонкого ноутбука до топового компьютера!');
  writeln('stocks - электронные акции некоторых компаний. Если вам нужно больше денег или же уверенность, что они останутся целыми, этот вариант для вас.');
  writeln('re - рынок - место, где за небольшие деньги можно купить уценёнку, а за запчасти, найденые на работе или прогулке, редкое железо, которого больше нигде не достать.');
  writeln('azino777 - азартное казино, где можно как выиграть, так и проиграть!');
  writeln('arena - простенькие соревнования между хакерами. Вход только для людей, укротивших командную строку!');
  writeln('torbwr - Даркнет - поистине уникальный ресурс! Будьте осторожны!');
  writeln('');
  write('>user: ');
end;

procedure profile(var k: string);//Просмотр профиля
begin
  writeln('');
  writeln('Ник ');
  writeln('Уровень: xxxxx');
  writeln('Опыт: xxxx of xxxx');
  Writeln('Деньги: xxxx');
  Writeln('E-Coin: xxxx');
  Writeln('Action: xxxx');
  Writeln('Мотивация: xxxx');
  writeln('----------------');
  Writeln('Скилы');
  writeln('');
  writeln('Практика: хххх');
  writeln('Теория: АА+ВВ');
  writeln('Хитрость: xxxxx');
  writeln('Мудрость: xxxxx');
  writeln('Выносливость: 100%');
  writeln('----------------');
  writeln('Занятие');
  writeln('');
  writeln('Дела: работаешь, осталось х минут');
  writeln('Ты собираешься атаковать ххххх');
  writeln('До сна осталось хх часов хх минут');
  writeln('');
  write('>user: ');
end;///

procedure hack(var k: string);//Утилита для взлома
begin
  writeln('');
  writeln('>hos: loading iaicracker.exf');
  writeln('>hos: load complete');
  Delay(500);
  writeln('>crck: target search...');
  Delay(f);
  writeln('');
  writeln('Aegis servers (3)');
  writeln('Phantoms servers (4)');
  writeln('NHS servers (5)');
  writeln('Встать на защиту своего сервера (6)');
  writeln('Интернет (6)');
  writeln('');
  writeln('Введите цифру, соответствующую пункту, который вы выбрали');
  write('>user: ');
  readln(k);
end;

procedure task(var k: string);//Просмотр раздела "Работа"
begin
  writeln('');
  writeln('Дела, дела, дела... Чем собираетесь заниматься сегодня?');
  writeln('sleep - даже самый заядлый хакер и геймер должен спать, иначе будет плохо - красными глазами тут не обойтись.');
  writeln('work - работа бывает разной - от приключений эникейщика до протухания офисного планктона. Во всяком случае, и там, и там неплохо платят.');
  writeln('run - каждый человек должен так или иначе поддерживать себя в тонусе. Можно немного подкачать мышцы, сходить за хлебом, и, если повезёт, кого-нибудь взломать.');
  writeln('eat - давно ли вы кушали? Ну не врите, я уже вижу, как у вас текут слюнки! Прошу к столу!');
  writeln('');
  writeln('Итак, чем же мы займёмся сегодня?');
  writeln('Для выхода из меню напишите exit.');
  write('>user: ');
  writeln('');
  readln(k);
 
  if k = 'work' then
  begin
    t := 300;
    writeln('Уже работаешь!');
    while t > 0 do
    begin
      ClrScr;
      writeln('Уже работаешь!');
      t := t - 1;
      sleep(1000);
      m := t div 60;
      writeln('осталось ', m, 'минут (ы)');
      Delay(1000);
    end;
    if t = 0 then
    begin
     
      writeln('Вы закончили работу');
      t := 300
    end;
  end
  else
  begin
    exit
  end;
end;

procedure ex(var k: string);// Выход из игры
begin
  write('Shutdown of Hack OS in progress ');
  e := 5;
  while e > 0 do
  begin
    write('.');
    Delay(750);
    e := e - 1;
  end;
  Delay(500);
  halt;
end;

procedure screcho(var k: string);// вывод пользовательского текста, пока не доведена до ума
begin
  writeln('');
  writeln(k);
  write('>user: ');
end;

begin
  //эмблема
 
  Randomize;
  f := Random(10000);
  textColor(Lightgreen);
  writeln('electron games, 2020');
  writeln('BIOS Inspire 2.0');
  Delay(500);
  writeln('---------------------------------------------------------------------');
  writeln('Create virtual PC environment...');
  Delay(750);
  writeln('CPU prepared for work.');
  Delay(750);
  writeln('RAM prepared for work.');
  Delay(750);
  writeln('GPU prepared for work.');
  Delay(750);
  writeln('Storage prepared for work.');
  Delay(750);
  writeln('All devices preparing, startup code o99.');
  Delay(1500);
  ClrScr;
 
  writeln('Hack OS booting...');
  loop 50 do
  begin
    write('|');
    Delay(100);
  end;
  Delay(1000);
  ClrScr; 
  writeln('Welcome to HackOS 0.1.4!');
  writeln('');
 
  //проверка входа
  if not (FileExists('c:/hos/log.txt')) then //если файла с логином паролём нет
  begin
    writeln('Вы в первый раз вошли в систему! Введите логин и пароль, разделённые пробелом.');
    writeln('Внимание! Запишите свой логин/пароль и спрячьте их в безопасное место!');
    write('>user: ');
    CreateDir('C:/hos');
    assign(log, 'c:/hos/log.txt'); //Путь к файлу
    read(user);
    rewrite(log);
    writeln(log, user);
    writeln('Спасибо за регистрацию в системе!');
    writeln('Для получения справки введите help');
    close(log);
    writeln('');
  end
 
  else //Если пользователь уже зарегистрировался
  begin;
    writeln('Введите логин и пароль, разделённые пробелом.');
    write('>user: ');
    read(usr);
    assign(log, 'c:/hos/log.txt'); //Путь к файлу
    reset(log); //Открыть файл для чтения
    read(log, user);
   
    if user = usr then // если введены правильные логин/пароль
    begin
      writeln('Вы успешно вошли в систему!');
      close(log);
      writeln('');
    end
   
    else // если введён неправильный логин/пароль
    begin
      writeln('Значения не совпадают! Перезапустите Hack OS и введите логин и пароль заново.');
      Delay(1000);
      close(log);
      write('Automatic shutdown of Hack OS in progress ');
      e := 5;
      while e > 0 do
      begin
        write('.');
        Delay(750);
        e := e - 1;
      end;
      Delay(500);
      exit// завершение програмы
    end
  end; 
 
  // считывание команд с клавиатуры
  ClrScr;
  while 2 > 1 do
  begin
    if k = 'help' then
      help(k)
   
    else if k = 'profile' then
      profile(k)
   
    else if k = 'web' then
      web(k)
   
    else if k = 'exit' then
      ex(k)
   
    else if k = 'clearscr' then
      clearscr(k)   
   
    else if k = 'hacktool' then
      hack(k)   
   
    else if k = 'task' then     
      task(k)   
   
    else     
      write('>user: ');
    readln(k);
  end;
 
 
end.

Есть надоедливый баг с двумя >user: в начале
пытаюсь его пофиксить
но если я что-то меняю в коде, так или иначе связанное с ним, всё падает.
Обычные будни программиста :mrgreen:

Attachments:
HW.zip [156.57 KiB]
Downloaded 8 times

Author:  maxcodehack [ Sun Nov 01, 2020 10:32 am ]
Post subject:  Re: Hackers World - text RPG

Вместо while 2 > 1 можно написать просто while 1
Не знаю есть ли в паскале true, если есть, тоже можно
Также есть конструкция switch - case вместо множества if.
Еще есть функции inc и dec для инкремента и декремента.(вместо e := e-1)

Просто что бросилось в глаза

Author:  Alex2003 [ Sun Nov 01, 2020 11:47 am ]
Post subject:  Re: Hackers World - text RPG

Хорошо, учту замечания

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/