Міністерство освіти і науки України
Полтавський національний технічний університет
імені Юрія Кондратюка
Факультет інформаційних та телекомунікаційнихтехнологій і систем
Кафедра комп’ютерних та інформаційних технологій ісистем
Курсова робота
з дисципліни «Основи програмування таалгоритмічні мови»
Розробив cтудент
групи 101-ТН
Керівник роботи
Полтава 2010
Зміст
Вступ
Постановка задачі
Розв’язання задачі
Алгоритм задачі
Реалізація програми
Висновок
Використана література
Вступ
Для виконаннякурсової роботи потрібно мати деякий початковий багаж знань по програмуванню. Володітиоднією з мов програмування в моєму випадку це Turbo Pascal.
Turbo Pascal — алгоритмічнамова програмування універсального призначення. Існують діалекти мови зпідтримкою об'єктно-орієнтованого програмування.
Роком створенняPascal вважається 1970-й, і творцем цієї мови програмування є Ніклаус Вірт. Початковамета розробки мови диктувалася потребою інструмента «для навчанняпрограмуванню як систематичній дисципліні». Pascal належить доAlgol-подібних мов програмування, оскільки використовує семантику Algol-ла. ОднакPascal мав суттєве удосконалення — жорстку типізацію. Це означало, щоприсвоювання можна було виконувати лише для змінних, що належать до одного типу(одночасно вказувались правила, за якими типи вважались однаковими). Цеудосконалення суттєво покращило стиль програмування, оскільки значну частинупомилок вдавалось виявити ще на етапі компіляції — що збільшує надійністьпрограм.
Виконуючи цюроботу я використав практичні знання, отримані при виконанні лабораторних робіт.
«Гра Виселица»- існує загадане слово, його потрібно відгадати називаючи по одній літері. Якщоназвана літера відсутня у слові, то вимальовується наступний елемент вішалки.
Гра відбуваєтьсяна екрані. Гравець бачить вішалку, що складається з семи частин та знаходиться злівавгорі. Зправа вгорі знаходиться коротка інструкція до гри. Внизу показаніназвані літери.
Постановка задачі
Розробитипрограмму для вирішення поставленої прикладної задачі. При вирішенні задачінеобхідно:
Створити программуу середовищі програмування Turbo Pascal
Розробити алгоритмфункціонування программи
Надати блок-схемуалгоритму
Продемонструватироботу программи
УМОВА ЗАДАЧІ (рус)
В игре «Виселица»один игрок загадывает слово, а другой пытается его угадать, называя по однойбуквы. Если буквы нет в этом слове, то рисуется один из элементов картинки (всякартинка состоит из 7 элементов: эшафот, виселица, веревка, голова, руки,туловище и ноги). Если игрок угадывает букву, то буква (или буквы, если имеетсянесколько одинаковых букв) пишется на соответствующем месте. Если вся картинкабудет нарисована, а слово не угадано, то игрок проигрывает. Если все буквыслова будут открыты, а картинка еще не дорисована, то игрок выигрывает.
В первой строкевходного файла — загаданное слово.
Вывести одну изтрех строк:
Win — выиграш
Lose — проиграш
Unknown — приисчерпании набора букв и невыполнении условий выиграша или проиграша.Розв’язання задачі
У программывикористані додаткові модулі Graph та Crt.
З модуля Crt використані функції:
ClrScr — дляочистки графічного інтерфейсу.
Delay — длязатримки виконання програм, але при використанні цієї команди на процесорахбільше 200 MHz виникають проблеми, так як цикл затримки закінчується швидше іможе виникнути помилка «Runtime error 200 at…».
З модуля 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
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] =falsethen 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 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;
procedure gexit (s:string);
begin
closegraph;
writeln (s);
readkey;
exit;
end;
procedure init;
vari,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 tolength (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 (Grapherror: ', 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
begin
if tru=length (second)then gexit ('You win! ');
if tru>26 thengexit ('Unknown! ');
let: =upcase (readkey);
if isinput (let) =falsethen
begin
isset: =false;
for j: =1 tolength (second) do
begin
if first [j] =letthen
begin
isset: =true;
first [j]: =' ';
inc (tru);
end;
end;
alphabet [ord (let[1]) — 64]: =true;
if isset=falsethen
begin
inc (fal);
inc (el);
end;
end;
redraw;
end;
gexit ('Lose! ');
end.
5. Демонстраціяроботи програми
Для знімку екрануя використав програму DosBox-0.72, що імітує режим MS-DOS у вікні. Стандартнимиметодами це зробити не вдалося.
/>
На малюнкузображена гра з декількома введеними літерами.
Висновок
Розробленапрограма на мові Turbo Pascal дозволяє відпочити та розслабитися людині. Данупрограму можна покращити шляхом добавляння нових слів та змінення старих. Такожможна візуалізувати слова, написанням до них спеціальних файлів з елементамизображення. Тобто при вгадуванні літери вимальовується елемент загаданогооб’єкту.
Використана література
1. «Основи програмування» Т.В. Ковалюк
2. «Turbo Pascal» В. Фаронов