Створення програми гри "Шибениця"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?мволи поки не домалюються всі елементи вішалки, або слово буде відгадане. Є третій варіант завершення гри - "Невизначеність", коли літери названі всі, а слово не відгадане. Цей варіант спрацьовує коли у слові знаходяться недопустмі символи.
Алгоритм задачі
А) Головний алгоритм
Б) Алгоритм процедури 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 дозволяє відпочити та розслабитися людині. Дану програму можна покращити шляхом добавляння нових слів та змінення старих. Також можна візуалізувати слова, написанням до них спеціальних файлів з елементами зображення. Тобто при вгадуванні літери вимальовується елемент загаданого обєкту.
Використана література
- "Основи програмування" Т.В. Ковалюк
- "Turbo Pascal" В. Фаронов