Текстовые игры - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте , друзья ! Последнее время я начал замечать на разных форумах вопросы "как написать 2d игру на паскаль" и другие похожие вопросы. Обычно это пишут те, кто только начал учить язык и им уже интересно создать свою игру. Конечно, нельзя написать игру, зная лишь, что такое if и else, но можно написать простую текстовую прикольную игру которой можно похвастаться пред друзьями. Эта тема специально для таких людей. Начнем с вопроса "Какую игру написать проще всего ?" - ответ прост : текстовую и простую. А какую именно ? Я думаю для начала сойдет "угадайка". Угадайка - это простоя игра где надо угадать число. Алгоритм прост : 1. создаем random число и пишем его в переменную 2.даем юзеры ввести переменную 3.входим в цикл (повторять пока не отгадаем) 4. проверяем переменная юзера = random переменной? если = , то юзер выиграл 5.если < , то выводим "бери больше" 6. если > , то выводим "бери меньше" У такой игры есть свои плюсы и минусы. Хочу рассказать сначала про плюсы , но как говорила Масяня "Сначало про всех козлов",поэтому: минусы : 1.игра очень проста и в ней нельзя проиграть 2.игра без графики плюсы : 1.лекго написать 2.создание игры помогает практиковать свои знания 3.ну и конечно же-игрой можно хвастаться пред друзьями) Начнем писать ...
это моя 1 тема - урок (строго не судите) если тема наберет >20 спасибок ,то я добавлю исходник игры "поле чудес для двоих игроков".

Решение задачи: «Текстовые игры»

textual
Листинг программы
uses crt;
var
 comp, my, help : string;
 i, n, j, i2, j2, buffalo, cow, kol: integer;
 i3,j3, a : integer;
 basa: string;
 label vihod;
begin
clrscr;
randomize;
a:=0;
comp:='0000';
my:='0000';
basa:='1234567890';
for i:= 1 to 4 do
begin
n:=1+random(Length(basa)-1);
comp[i]:=basa[n];
Delete(basa,n,1);
end;
 
Write('ÏîêГ*Г§Г*ГІГј ïîäñêГ*çêó(y/n)');
ReadLn(help);
 
if help = 'y' then
begin
WriteLn('Êîìïüþòåð ГЈГҐГ*åðèðóåò ГІГ*Г©Г*îå 4-Г§Г*Г*Г·Г*îå ÷èñëî Г± Г*åïîâòîðÿþùèìèñÿ öèôðГ*ìè.');
WriteLn('Èãðîê äåëГ*ГҐГІ ïîïûòêó îòãГ*Г¤Г*ГІГј ÷èñëî.');
WriteLn('ÏîïûòêГ* — ГЅГІГ® 4-Г§Г*Г*Г·Г*îå ÷èñëî Г± Г*åïîâòîðÿþùèìèñÿ öèôðГ*ìè.');
WriteLn('Êîìïüþòåð ñîîáùГ*ГҐГІ ñêîëüêî öèôð ГіГЈГ*Г¤Г*Г*Г® ГЎГҐГ§ ñîâïГ*äåГ*ГЁГї Г± ГЁГµ ïîçèöèÿìè Гў ГІГ*Г©Г*îì');
WriteLn('÷èñëå ГЁ ñêîëüêî ГіГЈГ*Г¤Г*Г*Г® âïëîòü äî ïîçèöèè Гў ГІГ*Г©Г*îì ÷èñëå.');
WriteLn('ÏîáåäГ* Гў òîì ñëó÷Г*ГҐ åñëè ГўГ» ГіГЈГ*Г¤Г*ГҐГІГҐ ÷èñëî Г± 10 ïîïûòîê.');
WriteLn('Ââåäèòå exit åñëè ГўГ*Г¬ Г*Г*äîåëî ГЁГЈГ°Г*ГІГј!');
WriteLn('ÈãðГ* áóäåò ïðîäîëæГ*ГІГјГ±Гї 10 õîäîâ èëè äî ïîáåäû!!');
end;
 
repeat
buffalo:=0;
cow:=0;
Write('Ââåäèòå ÷èñëî: ');
ReadLn(my);
 
kol:= Length(my);
 
 
if my = 'exit' then
goto vihod;
 
if a = 10 then
goto vihod;
 
for j:= 1 to 4 do
if comp[j] = my[j] then buffalo:=buffalo+1;
 
for j2:= 1 to 4 do
for i2:= 1 to 4 do
if (comp[i2] = my[j2]) and (comp[i2] <> my[i2]) then cow:=cow+1;
 
if kol=4 then begin WriteLn('Áûêîâ: ',buffalo,'. Êîðîâ: ',cow); a:=a+1; end;
if kol<>4 then begin writeln ('ГЋГёГЁГЎГЄГ*, Г*ГҐГЇГ°Г*âèëüГ*îå êîëè÷åòâî ââîäèìûõ öèôð: Г*ГіГ¦Г*Г® 4'); end;
if a = 10 then goto vihod;
until (comp = my);
 
WriteLn('Âû ñäåëГ*ëè ', a, ' õîäîâ!');
WriteLn('Êîìïüþòåð Г§Г*ГЈГ*Г¤Г*Г«: ',comp);
ReadLn;
vihod: writeln ('Г“ ГўГ*Г± Г§Г*ГЄГ®Г*÷èëèñü õîäû!'); writeln ('Г‡Г*ГЈГ*Г¤Г*Г*îå ÷èñëî: ',comp);
 
end.

Объяснение кода листинга программы

Этот код написан на Turbo Pascal и представляет собой текстовую игру. Он использует случайное перемешивание символов в строке basa для создания уникального кода. Затем он проверяет, совпадает ли этот код с введенным пользователем. Если да, то выводится сообщение о победе и новый код. Если нет, то выводится сообщение о поражении и старый код. Код продолжается до тех пор, пока не будет достигнут требуемый результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы