Створення програми гри "Шибениця"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?мволи поки не домалюються всі елементи вішалки, або слово буде відгадане. Є третій варіант завершення гри - "Невизначеність", коли літери названі всі, а слово не відгадане. Цей варіант спрацьовує коли у слові знаходяться недопустмі символи.

Алгоритм задачі

 

А) Головний алгоритм

 

 

Б) Алгоритм процедури ReDraw

 

 

В) Алгоритм процедури gExit

 

 

Г) Алгоритм процедури Init

 

Д) Алгоритм процедури IsInput

 

 

Реалізація програми

 

1

program Hangman;

uses crt,graph;

var

first: string [255] ;

second: string [255] ;

tru,fal: integer;

j,el: integer;

let: string [1] ;

alphabet: array [1. .26] of boolean;

isset: boolean;

f1: text;

Procedure redraw;

var k: integer;

begin

SetLineStyle (DottedLn, 0, NormWidth);

rectangle (1,1,275,275);

rectangle (300,1,550,275);

outtextxy (305,6,ВИСЕЛИЦА);

outtextxy (305,15,ВАМ_НУЖНО_УГАДАТЬ_СЛОВО);

outtextxy (305,24,В_КВАДРАТНЫХ_СКОБКАХ);

outtextxy (305,33,НАЖАТЫЕ_БУКВЫ);

SetLineStyle (SolidLn, 0, NormWidth);

if el>=1 then

begin

line (25,250,225,250);

line (25,250,25, 200);

line (25, 200,100, 200);

line (100, 200,100,225);

line (100,225,225,225);

line (225,225,225,250);

end;

if el>=2 then

begin

line (50, 200,50,25);

line (40,25,175,25);

end;

if el>=3 then

begin

SetLineStyle (DottedLn, 0, NormWidth);

line (150,25,150,65);

SetLineStyle (SolidLn, 0, NormWidth);

end;

if el>=4 then

begin

circle (150,75,10);

end;

if el>=5 then

begin

line (150,90,115,100);

line (150,90,185,100);

end;

if el>=6 then

begin

line (150,85,150,125);

end;

if el>=7 then

begin

line (150,125,175,150);

line (150,125,125,150);

end;

for k: =1 to 26 do

begin

if alphabet [k] =false then outtextxy (k*20,300,chr (k+64))

else

begin

setcolor (red);

outtextxy (k*20,300,chr (k+64));

setcolor (white);

end;

end;

for k: =1 to length (second) do

begin

rectangle (k*15+50,280,k*15+65,295);

if second [k] <>first [k] then

outtextxy (k*15+55,285,second [k]);

end;

end;

procedure gexit (s: string);

begin

closegraph;

writeln (s);

readkey;

exit;

end;

procedure init;

var i,j,k,grDriver,grMode,ErrCode: integer;

begin

randomize;

assign (f1,word. dat);

reset (f1);

k: =random (10);

for j: =1 to k do

readln (f1,first);

el: =0;

close (f1); {уходя тушите свет:) }

for i: =1 to length (first) do

first [i]: =upcase (first [i]);

tru: =0; fal: =0;

second: =first;

grDriver: =Detect;

InitGraph (grDriver, grMode, );

ErrCode: =GraphResult;

window (1,1,getmaxx,getmaxy);

If ErrCode <> grOk Then

Begin

WriteLn (Graph error: , GraphErrorMsg (ErrCode));

delay (3000);

exit;

End;

end;

function isinput (s: string): boolean;

var p: integer;

begin

isinput: =false;

for p: =1 to 26 do

if alphabet [ord (s [1]) - 64] =true then isinput: =true;

end;

begin

init;

redraw;

while fal<7 do

begin

if tru=length (second) then gexit (You win! );

if tru>26 then gexit (Unknown! );

let: =upcase (readkey);

if isinput (let) =false then

begin

isset: =false;

for j: =1 to length (second) do

begin

if first [j] =let then

begin

isset: =true;

first [j]: = ;

inc (tru);

end;

end;

alphabet [ord (let [1]) - 64]: =true;

if isset=false then

begin

inc (fal);

inc (el);

end;

end;

redraw;

end;

gexit (Lose! );

end.

 

5. Демонстрація роботи програми

Для знімку екрану я використав програму DosBox-0.72, що імітує режим MS-DOS у вікні. Стандартними методами це зробити не вдалося.

 

 

На малюнку зображена гра з декількома введеними літерами.

Висновок

 

Розроблена програма на мові Turbo Pascal дозволяє відпочити та розслабитися людині. Дану програму можна покращити шляхом добавляння нових слів та змінення старих. Також можна візуалізувати слова, написанням до них спеціальних файлів з елементами зображення. Тобто при вгадуванні літери вимальовується елемент загаданого обєкту.

Використана література

 

  1. "Основи програмування" Т.В. Ковалюк
  2. "Turbo Pascal" В. Фаронов