Реферати українською » Информатика, программирование » Створення Програми грі "шибениці"


Реферат Створення Програми грі "шибениці"

>Міністерствоосвіти й науки України

>Полтавськийнаціональнийтехнічнийуніверситет

>імені Юрія Кондратюка

Факультетінформаційних тателекомунікаційнихтехнологій й систем

Кафедракомп’ютерних таінформаційнихтехнологій й систем

>Курсова робота

іздисципліни "Основипрограмування таалгоритмічнімови"

>Розробивcтудент

>групи101-ТН

>Керівник роботи

Полтава 2010


>Зміст

>Вступ

Постановказадачі

>Розв’язаннязадачі

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

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

>Висновок

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


>Вступ

Длявиконаннякурсової роботипотрібно матірдеякийпочатковий багаж знань попрограмуванню.Володітиоднією ізмовпрограмування вмоємувипадкуце TurboPascal.

TurboPascal -алгоритмічна мовапрограмуванняуніверсальногопризначення.Існуютьдіалектимови ізпідтримкоюоб'єктно-орієнтованогопрограмування.

рокомстворенняPascalвважається1970-й, йтворцемцієїмовипрограмуванняєНіклаусВірт.Початкова позначка розробкимовидиктуваласяпотребоюінструмента "длянавчанняпрограмуванню яксистематичнійдисципліні".Pascalналежить доAlgol-подібнихмовпрограмування,оскількивикористовує семантикуAlgol-ла. ОднакPascalмавсуттєвеудосконалення -жорсткутипізацію. Це означало, щоприсвоювання можна було бвиконуватилише длязмінних, що належати до одного типу (>одночасновказувались правила, заякимитипивважалисьоднаковими). Цеудосконаленнясуттєвопокращило стильпрограмування,оскількизначнучастинупомилок вдавалосявиявитище наетапікомпіляції - щозбільшуєнадійністьпрограм.

>Виконуючицю роботу явикориставпрактичнізнання,отримані привиконаннілабораторнихробіт.

"Гра Шибениця" -існуєзагадане слово, йогопотрібновідгадатиназиваючи пооднійлітері.Якщо названа літерувідсутня услові, товимальовуєтьсянаступнийелементвішалки.

Гравідбувається наекрані.Гравецьбачитьвішалку, щоскладається із семичастин тазнаходитьсязлівавгорі.Зправавгорізнаходиться короткаінструкція догри. Унизупоказаніназвані Літери.


Постановказадачі

>Розробити програму длявирішенняпоставленоїприкладноїзадачі. Привирішеннізадачінеобхідно:

>Створити програму усередовищіпрограмування TurboPascal

>Розробити алгоритмфункціонуванняпрограмми

>Надати блок-схему алгоритму

>Продемонструвати роботупрограмми

>УМОВАЗАДАЧІ (русич)

У грі "Шибениця" один гравець загадує слово, а інший намагається його вгадати, називаючи за однією літери. Якщо літери нема на цьому слові, то малюється одне із елементів картинки (вся картинка складається з 7 елементів: ешафот, шибениця, мотузка, голова, руки, тулуб і ноги). Якщо гравець вгадує букву, то літера (чи літери, якщо є кілька однакових літер) пишеться на відповідному місці. Якщо вся картинка буде намальована, а слово не угадано, то гравець програє. Якщо всі літери слова буде відкрито, а картинка щедорисована, то гравець виграє.

У першій рядку вхідного файла - загадане слово.

Вивести жодну з трьох рядків:

>Win -вииграш

>Lose -проиграш

>Unknown - при вичерпанні набору літер і невиконанні умоввииграша чипроиграша.

>Розв’язаннязадачі

ПрограмавикористанідодатковімодуліGraph таCrt.

З модуляCrtвикористаніфункції:

>ClrScr - очищенняграфічногоінтерфейсу.

>Delay - длязатримкивиконанняпрограм, але й привикористанніцієїкоманди напроцесорах понад 200 MHzвиникаютьпроблеми, так як циклзатримкизакінчуєтьсяшвидше йможевиникнутипомилка ">Runtimeerror 200at…".

З модуляGraph явикористав:

>Detect - дляавтовизначенняграфічного драйвера.

>InitGraph -ініціалізаціяграфічного режиму.

>GraphResult (>зміннасередовища) - внеї заноситися результатініціалізаціїграфічного режиму.

>Window -задаєграфічневікно.

>SetLineStyle -встановлення стилюлінії.

>Rectangle -виводитьпрямокутник ззаданимикординатами.

>OutTextXY -виводить текст узаданихкординатах.

Line -малюєлінію ізвказанимпочатком такінцем.

>Circle - коло ззаданим центром зарадіусом.

>SetColor - установкакольорукисті длявиводуграфіки.

>CloseGraph -вихід зграфічного режиму.

>СтандартнікомандимовипрограмуванняPascal татипиданих, щовикористані уроботі:

>String -строковазмінна, завмовчаннямрозмір 256 (>починаючи із 0)

>Integer -числовий тип, щоприймажзначення вдіапазоні [-32768…32767].

>Boolean -логчний тип,допустимізначенняTruе (Так) таFalse (Ні).

>Array -масив,діапазонзмінних одного типу.

>If…Then -умовніоператори.

>For …to…do - цикл ізлічильником.

>While…Do - цикл ізумовою

Моя програмарозпочинаєтьвиборомвипадково слова із текстового файлуword.dat, але йзаздалегідьпотрібновказатикількістьслів уфайлі. Словоможе бути написанолітерамилатинськогоалфавіту, великими чималими, так як усіпереводяться уверхнійрегістр.

>Потімпрограмаініціалізуєграфічний режим тавиводитьінтерфейс.Користувачбачитьвішалку (>їїпершучастину) урамці.Зправазображенокороткіумовигри. Унизу подвищезгаданими блокамиіндикаторвідгаданого слова.Трохинижчезнаходитьсялатинськийалфавіт. Колікористувачнатискаєлітеру, вонавиділяєтьсяіншимкольором й заноситися вмасив ">використаних",щоб далі невраховувати повтори.

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


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

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


 


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


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


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


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


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

1

>programHangman;

>usescrt,graph;

>var

>first:string [255] ;

second:string [255] ;

>tru,fal:integer;

>j,el:integer;

>let:string [1] ;

>alphabet:array [1. .26] ofboolean;

>isset:boolean;

>f1:text;

>Procedureredraw;

>vark: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);

>ifel>=1then

>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;

>ifel>=2then

>begin

line (50, 200,50,25);

line (40,25,175,25);

end;

>ifel>=3then

>begin

>SetLineStyle (>DottedLn, 0,NormWidth);

line (150,25,150,65);

>SetLineStyle (>SolidLn, 0,NormWidth);

end;

>ifel>=4then

>begin

>circle (150,75,10);

end;

>ifel>=5then

>begin

line (150,90,115,100);

line (150,90,185,100);

end;

>ifel>=6then

>begin

line (150,85,150,125);

end;

>ifel>=7then

>begin

line (150,125,175,150);

line (150,125,125,150);

end;

>fork: =1 to 26do

>begin

>ifalphabet [>k] =>falsethenouttextxy (>k*20,300,chr (>k+64))

>else

>begin

>setcolor (>red);

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

>setcolor (>white);

end;

end;

>fork: =1 tolength (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;

>proceduregexit (>s:string);

>begin

>closegraph;

>writeln (>s);

>readkey;

exit;

end;

>procedureinit;

>vari,j,k,grDriver,grMode,ErrCode:integer;

>begin

>randomize;

>assign (>f1,'word.dat');

>reset (>f1);

>k: =>random (10);

>for j: =1 tokdo

>readln (>f1,first);

>el: =0;

>close (>f1); {йдучи гасите світло:) }

>for і: =1 tolength (>first)do

>first [і]: =>upcase (>first [і]);

>tru: =0;fal: =0;

second: =>first;

>grDriver: =>Detect;

>InitGraph (>grDriver,grMode, '');

>ErrCode: =>GraphResult;

>window (>1,1,getmaxx,getmaxy);

>IfErrCode <>grOkThen

>Begin

>WriteLn (>Grapherror: ',GraphErrorMsg (>ErrCode));

>delay (3000);

exit;

End;

end;

>functionisinput (>s:string):boolean;

>varp:integer;

>begin

>isinput: =>false;

>forp: =1 to 26do

>ifalphabet [>ord (>s [1]) - 64] =>truethenisinput: =>true;

end;

>begin

>init;

>redraw;

>whilefal<7do

>begin

>iftru=length (second)thengexit ('Youwin! ');

>iftru>26thengexit ('>Unknown! ');

>let: =>upcase (>readkey);

>ifisinput (>let) =>falsethen

>begin

>isset: =>false;

>for j: =1 tolength (second)do

>begin

>iffirst [j] =>letthen

>begin

>isset: =>true;

>first [j]: =' ';

>inc (>tru);

end;

end;

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

>ifisset=falsethen

>begin

>inc (>fal);

>inc (>el);

end;

end;

>redraw;

end;

>gexit ('>Lose! ');

end.

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

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

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


>Висновок

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


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

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

2. "TurboPascal" У.Фаронов


Схожі реферати:

Навігація