Реферат

Реферат Программирование игры Змейка

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 23.11.2024


Зміст


Вступ…………………………………………………………....3.
1.ТЕОРЕТИЧНА ЧАСТИНА………………………………….5.
  1.1.Постановка задачі………………………………………....5.
2.ПРАКТИЧНА ЧАСТИНА…………………………………...6.
  2.1.Архітектура програми…………………………………….6.
  2.2.Опис програми………………………………………….....8.
  2.3.Контрольний приклад……………………………………
 та аналіз результатів машинного експерименту……………13.
ВИСНОВКИ……………………………………………………18.
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ…………………18.
ДОДАТКИ……………………………………………………...19.
Вступ

                   Центральним поняттям програмування є, безперечно , поняття

алгоритму. З нього починається робота над програмою і від якості алгоритму залежить її успішне створення .Тому вміння програмувати в значній мірі означає розробляти хороші алгоритми і застосовувати вже відомі.

 

      

                  На сьогодні існує велика кількість різноманітних мов програмування, кожна з яких має свої певні переваги та недоліки. В цьому розмаїтті не завжди легко зробити свій вибір на користь якоїсь певної мови програмування .
              Для реалізації поставленої задачі вибрано середовище Turbo Pascal . Алгоритмічна мова Pascal була створена Н. Віртом на початку 70-х років. Завдяки зусиллям  розробників ця мова програмування стала потужним інструментом професійних програмістів, не втративши простоти і ясності, властивих цій мові від народження .
            Розробник системи Turbo Pascal – фірма Borland International виникла в 1984 році і за порівняно короткий час неодноразово дивувала користувачів персональних ЕОМ своїми Turbo системами. Було випущено кілька версій Turbo Pascal:3.0,4.0,5.0,5.5,6.0,7.0, Pascal for Windows, Borland Pascal.
Головні особливості середовища Turbo Pascal:
► широкий спектр типів даних, можливість обробки рядкових та структурних типів даних;
► достатній набір операторів управління розгалуженнями та циклами;
► добре розвинутий апарат підпрограм та зручні конструкції роботи з файлами;
► великі можливості управління усіма ресурсами ПЕОМ;

► різноманітні варіанти стикування з мовою Асемблера;
► підтримка ідей об’єктно—орієнтованого програмування (ООП).
           Саме з огляду на ці особливості програмна реалізація курсового проекту було здійснено в середовищі Turbo Pascal.
           Курсовий проект складається зі вступу , двох розділів , висновків , списку використаної літератури , графічної частини та додатків. Текст пояснювальної записки набрано та розрдуковано з використанням текстового редактора Word. Графічна частина виконана з допомогою графічного редактора Visio.
1.Теоретична частина.
1.1.Постановка задачі.
Розробка програми-ігри «Змійка» для курсового проекту. Ідея програми полягає в тому, щоб «змія» могла б переміщатися по екрану за допомогою стрілок ←, ↑, →, ↓ та при набирані очок збільшувалась у довжину, при зіткненні зі своїм «хвостом» завершувалася гра. При завершені гри повинна виводитись підказка – «Завершити гру Y/N?» при натисканні клавіші «Y» гра просить ввести ваше ім’я та записує результати гри під введеним ім’ям в  текстовий файл Result
.
dat
. При натисканні клавіші «N» гра розпочинається з початку.

Гра повинна мати меню, в якому вибирається рівень складності гри, або подивитися результати попередніх ігор.
            Мета написання курсового проекту — розробка програми
-гри «Змійка».

2.Практична частина.
2.1.Архітектура програми
           Для реалізації поставленої задачі розроблено програму ZMEJKA.PAS (лістинг програми представлено в додатку 3).
          Програма складається з головного блоку та процедур: Menu, Ramka, Symbol, Rezultat, OverRes, GoUp, GoDown, DrawSnake, AddBonus, Kill, Move та модуля CRT.TPU, який забезпечує роботу з клавіатурою та екраном. Модуль CRT.TPU входить в стандартний набір модулів компілятора Borland Pascal 7.0.
   Запуск програми  здійснити двома способами:
        з головного меню інтегрованого середовища Borland Pascal шляхом вибору опції Run (попередньо програма повинна бути завантажена в ОП –F10, File-Open-ZMEJKA.PAS);

         з середовища ОС Windows XP Services Pack 2 шляхом запуску ZMEJKA.EXE .
Програма використовує одинадцять  процедур: Menu, Ramka, Symbol, Rezultat, OverRes, GoUp, GoDown, DrawSnake, AddBonus, Kill, Move.
 Процедура Menu - виводить на дисплей  меню, котре пропонує користувачеві вибір складності програми-гри та перегляду результатів попередніх ігор. Вибрати пункт меню можна стрілочками клавіатури -↓,↑:
VERY SLOW

SLOW

MEDIUM

HIGH

VERY HIGH

RESULT

 

      При натисканні стрілочки ↑ або ↓ виконується процедура – GoUp
або GoDown
.
Ці процедури дозволяють переходити по пунктам меню вверх або вниз.

Процедура Ramka – виводить написи меню та малює навколо них рамку.

Процедура Symbol – малює символ на заданій позиції.

Процедура Rezultat – після закінчення гри ця процедура записує результат гри у файл Result.dat, якщо цього файлу не існує він створюється в тій же папці з програмою-грою.

Процедура  OverResвиводить результат з файлу Result.dat на екран, якщо цього файлу не існує, то виводиться надпис «Результатів немає».

Процедура DrawSnake малює змійку на екрані.

Процедура AddBonus малює на екрані символи «@» - це символи(бонуси), які «змійка» повинна збирати та поповнює очки.

Процедура Kill – знищує «змійку». Змійка знищується в разу зіткнення зі своїм «хвостом» або при натисканні клавіші Esc.

Процедура Moveзадає координати «змійки».
Головний блок програми задає значення змінним, задає початкові координати «змійки» та визначає, яка клавіша керування клавіатурою була натиснута, щоб задати напрямок «змійки».

 Блок –схема головного блоку програми представлена в додатку 1.
2.2.Опис програми
Програма складена , відкомпільована і відлагоджена в середовищі Bolard Pascal 7.0.
   На початку програми, відповідно до вимог технології програмування, знаходиться вступний коментар до програми , а решта операторів програми мають таке призначення:
Оператор                                         Призначення  оператора

001                 Заголовок програми

002                 Підключення зовнішніх модулів Crt( керування дисплеєм та                              

                       клавіатурою)

003                 задає глобальну мітку

004-008          Описує  тип запис

009-010          Описує тип файл запису

011-020          Описання глобальних змінних

021-046          Процедура Ramka

021                 Заголовок процедури

022                 Початок тіла процедури

023-024,042,

044                 Задає коліри тексту та фону екрану

025,027,029,

031,033,035,

037,039,041,

045                 Задає координати курсора клавіатури

026,028,030,

032,034,036,

038,040,043   Вивід рамки на екран

046                 Кінець процедури Ramka 

047                 Заголовок процедури Symbol

048                 Початок тіла процедури   

049                 Встановлення координатів курсора клавіатури

050                 Виведення символа

051                 Встановлення курсора клавіатури на початок першої стрічки

052                 Закінчення процедури Symbol

053                 Загловок процедури Rezultat

054                 Описання змінних в процедурі

055                 Початок тіла процедури

056                 Директива компілятора, вона вимикає автоматичний контроль помилок I/O

057                 Відкриття файлу на запис

058                 Директива компілятора, вмикає автоматичний контроль помилок I/O

059                 Перевірка чи існує файл, якщо ні, то створюємо його

060                 Очистка екрану

061                 Встановлення координатів курсора клавіатури

062                 Задає зелений колір тексту

063                 Виведення тектсу

064                 Запис введенного тексту в змінну типу запис

065-066         Присвоєння значень змінним типу запис

067                 Встановлення курсора клавіатури в текстовому файлі на кінець

068                 Запис одного файлу в інший

069                 Закриття файлу

070                 Задає колір тексту

071                 Вихід з програми

072                 Закінчення процедури Rezultat                   

073                 Заголовок процедури OverRes

074-075         Описання змінних в процедурі

076                 Початок тіла процедури

077                 Очистка екрану

078                 Директива компілятора, вона вимикає автоматичний контроль помилок I/O

079                 Відкриття файлу на запис

080                 Директива компілятора, вмикає автоматичний контроль помилок I/O

081                 Перевірка чи існує файл

082                 Задає координати курсора клавіатури

083                 Задає зелений колір тексту

084                 Виведення тексту

085                 Зарезервоване слово «інакше», якщо файл існує

086                 Початок оператора

087                 Задає зелений колір тексту

088                 Присвоєння значення змінній

089                 Цикл з передумовою, виконується поки не достигне кінця файлу

090                 Читання одного файлу в інший

091-093         Задає координати курсора клавіатури та виводить значення змінних

094                 Присвоєння зачення змінній

095                 Кінець циклу з передумовою

096                 Закриття файлу

097                 Закінчення умовного оператора «інакше»

098                 Цикл з постумовою, повторюється поки не буде натиснута люба клавіша

099                 Задає колір тексту

100                 Закінчення процедури OverRes                 

101                 Заголовок процедури GoUp

102                 Початок тіла процедури

103                 Звернення до процедури Ramka з заданими параметрами

104                 Зменшуємо значення змінної MenuSelect на одиницю

105                 Умова, якщо MenuSelect<1 , то MenuSelect = 6

106-107         Задає коліри тексту та фону екрану

108                 Задає координати курсору клавіатури

109                 Виводить текст, який міститься в масиві стрічок MenuItem[MenuSelect]

110-111         Задає коліри тексту та фону екрану

112                 Задає координати курсору клавіатури (1,1)

113                 Закінчення процедури GoUp

114                 Заголовок процедури GoDown

115                 Початок тіла процедури

116                 Звернення до процедури Ramka з заданими параметрами

117                 Збільшуємо на одиницю значення змінної MenuSelect

118                 Умова, якщо MenuSelect>6 , то MenuSelect = 1

119-120         Задає коліри тексту та фону екрану

121                 Задає координати курсору клавіатури

122                 Виводить текст, який міститься в масиві стрічок MenuItem[MenuSelect]

123-124         Задає коліри тексту та фону екрану

125                 Задає координати курсору клавіатури (1,1)

126                 Закінчення процедури GoDown

127                 Заголовок процедури Menu

128                 Опис мітки

129-130         Опис змінних процедури

131                 Початок тіла процедури

132                 Мітка

133                 Присвоєння значення змінній. Задає довжину змійки

134                 Присвоєння значення змінній. Початковий напрямок змійки

135-136         Присвоєння значення змінній. Координати голови змійки

137                 Присвоєння значення змінній. Очки

138                 Присвоєння значення змінній. Координати курсору клавіатури

139                 Очищаємо екран

140                 Звернення до процедури Ramka з заданими параметрами

141-142         Задає коліри тексту та фону екрану

143                 Задає координати курсору клавіатури

144                 Виводить текст, який міститься в масиві стрічок MenuItem[MenuSelect]

145-146         Задає коліри тексту та фону екрану

147                 Задає координати курсору клавіатури

148-                цикл с постумовою. Вмістить в себе умову вибору, яка викконує процедуру                         -                      GoUp, якщо була натиснута клавіша клавіатури - ↑, або процедуру GoDown, -                      якщо була натиснута клавіша клавіатури -↓. Цикл завершується, тоді коли - 154                 будуть натиснути         клавіші Enter або Esc.                                                               

155                 Перевіряє, якщо була натиснута клавіша Esc, відбувається вихід з програми

156-                           Умова вибору. Перевіряє знащення змінної MenuSelect, та задає за цим

163                 значенням складність гри.

164                 Очищує екран

165                 Закінчення процедури Menu

166                 Заголовок процедури DrawSnake

167                 Початок тіла процедури

168,180          Задає колір тексту

169,171,173,

175,177          Задає координати курсору клавіатури

170,172,174,

176,178          Виводить текст

179                 Виводить символ змійки в початку стрічки

181-183         Цикл малює змійку

184                 Задає колір тексту

185-186         Малює символи бонусу «@»

187                 Задає колір тексту

188                 Задає координати курсору клавіатури

189                 Закінчення процедури DrawSnake

190                 Заголовок процедури AddBonus

191                 Опис мітки

192-193         Описує змінні процедури

194                 Початок тіла процедури

195                 Мітка

    196                 Задає змінній нульове значення

    197-198         Задає координати бонусу

199-204         Цикли, перевіряють, щоб бонуси були розміщенні не на самій змійці

205                 Задає колір тексту

206                 Задає координати курсору клавіатури

207                 Закінчення процедури AddBonus

208                 Заголовок процедури Kill

209-210         Опис змінних процедури

211                 Опис мітки

212                Початок тіла процедури

213-218         Присвоєння масиву символів значення

219                 Задає колір тексту

220-223         Цикл, малює мертву змійку

224                 Мітка

225                 Очищує екран

226,237          Задає колір тексту

227,229,231,

233,235,238,

240,242,244,

246,248          Задає координати курсору клавіатури

228, 230,232,

234,236,239,

241,243,245,

247                Виводить на екран текст         

249                Чекає на натиснуту клавішу клавіатури

250                Умова вибору, якщо натиснута клавіша Y, то продовжуємо гру, якщо була -                     натиснута клавіша N, то програма запросить ввести ім’я і запишить -      --- 254                результати у файл Result.dat

255                Задає колір тексту

256                Задає координати курсору клавіатури

257                Закінчення процедури Kill

258                Заголовок процедури Move

259                Початок тіла процедури

260                Малює символ пробілу

261-270        Умова вибору. Визначає  направлення змійки за натиснутою клавішею

271-              Умови. Якщо змійка виповзає за межі екрану, переводится на початок

274                стрічки.

275-               Цикл перевірки, чи «вкусила» змійка себе за хвіст,якщо так, виконується 278                 процедра Kill

279-               Цикл перевірки, чи «з’їла» змійка бонус, якщо так, то змійка збільшується в 287                     довжині на одиницю, та збільшуються очки                              

288-294         Цикл. Щоб змійка не «розірвала» свій хвіст.

295                 Виконується процедура DrawSnake

296                 Задає колір тексту

297                 Задає координати курсору клавіатури

298                 Закінчення процедури Move

299                 Початок тіла основної програми

300                 Зв’язує файлову змінну з файлом на диску

301                 Задає режим відображення тексту на екрані

302                 Ініціює фунцію случайних чисел

303                 Очищує екран

304                 Цикл. Виводить бонуси на екран перед початком гри

305-310         Задає масиву стрічок значення.

311                 Задає початкове значення змінній MenuSelect

312                 Очищує екран

313                Виконується процедура Menu

314-318         Цикл, задає початкові координати змійки,щоб вона не «розбіглася»

319                 Мітка

320-                           Цикл з передумовою, перевіряє, яка клавіша була натиснута,та задає 

328                 напрямок змійки

329,333          Задається колір тексту

330,334          Задаються координати курсору клавіатури

331                 Затримка DTime-секунд

332                 Виконується процедура Move

335                 Закінчення циклу 320

336                 Виконується процедура Kill

337                 Перехід на мітку

338                 Закриття файлу

339                 Закінчення основної програм
          

Лістінг програми представлений в додатку 2, блок—схему головного блоку програми наведено в додатку 1.
                             

2.3Контрольний приклад

та аналіз результатів машинного експерименту.

                 Для створення довільних виробів використовують відповідні технології. При цьому у поняття технології включаються сукупність виробничих процесів , методів та засобів , які призначені для створення певних видів виробів із зазначеними показниками якості. Одним з найбільш складних і трудомістких етапів технологічного процесу розробки програм є їх відладка. На відладку припадає  близько 50% трудомісткості загальних витрат на створення складних комплексів програм. Під відладкою слід розуміти процес , який забезпечує  можливість отримання програми, яка буде  функціонувати з потрібними характеристиками у заданій області вхідних даних.

   

  Процес відладки включає:

 

-                      створення сукупності тестових еталонних значень , яким програма повинна відповідати;

-                      тестування програми з виконанням об’єктного коду і з різними рівнями деталізації: детерміноване , стохастичне та тестування в реальному масштабі часу;



-                      розробка модифікації програми з метою включення причин відхилення результатів від еталонних.
                   Основним методом виявлення помилок при відладці програм є їх тестування. При цьому затрати на тестування для виявлення помилок складають 30%-40% загальних затрат на розробку програм і у значній мірі визначають якість створеного програмного продукту. Ефективність тестування є важливим фактором, який визначає вартість та тривалість  розробки складних комплексів програм.
                    Основною метою тестування для виявлення помилок є виявлення всіх відхилень результатів функціонування програми від еталонних значень. При цьому ставиться задача виявлення  максимального числа помилок , які приводять до виникнення помилок. Після цього застосовується тестування для діагностики та локалізації виявлених помилок. На цій стадії найважливішим є точне встановлення місця спотворення програми або даних , яке є причиною відхилення результатів  від еталонних даних  при тестуванні з метою виявлення помилок. На цьому етапі визначається частина програми , яку слід коректувати (модифікувати). Еефективним є тести , які дозволяють швидко і точно локалізувати помилки.
                  Після локалізації і усунення виявлених помилок застосовується контрольне тестування. Контрольний приклад для перевірки правильності розробленої програми виконано вручну. Для перевірки роботи програми в нормальних умовах перевіряємо гру на іграбельністьJ.

МЕНЮ гри Змійка


Процес гри


Після «смерті» змійки

Введення ім’я для запису результату у файл
RESULT.
DAT


Перегляд
раніше записаних результатів

                

Розроблена програма-гра дає можливість добре відпочити після тривалого робочого дня.
Висновки.

                Розв’язування задач обчислювального характеру з використанням персональних комп’ютерів має велике практичне значення, оскільки дає можливість значно економити час при виконанні простих , але громістких обчислень. Використання з цією метою готових пакетів прикладних програм для виконання математичних обчислень має певні вади. Ліцензовані пакети прикладних програм мають високу вартість і достатньо високу складність експлуатації. Тому їх використання для розв’язування нескладних задач (а саме такою є сортування масиву) є недоцільним. Надзвичайно важливо вміти самостійно складати прості програми для розв’язування задач обчислювального характеру.
              В даному курсовому проекті розроблено і описано програму-гру «Змійка». Для розробки програми вибрано мову Паскаль (середовище Borland Pascal) . Програма розроблена із застосуванням методики процедурного проектування.
             Програма відкомпільована з отриманням ехе-файла та відладжена.
        Вибір алгоритмічної мови Паскаль для реалізації постановленої задачі повністю виправдав себе.
Список використаної літератури:
1.      Т.В. Ковалюк, видавнича група «BHV», 2005- «ОСНОВИ ПРОГРАММУВАННЯ».
ДОДАТКИ
                 
                                       


                                                                            
Блок-схема: ссылка на другую страницу: 1


                                                                                               


Додаток 2.

Лістинг програми.
  001}Program ZMEjKA;

  002}uses CRT;

  003}label 1;

  004}type result=record

  005}      scor:integer;

  006}     name:string[15];

  007}      len:integer;

  008}     end;

  009}  res=file of result;

  010}

  Var

  011} f:                                res;

  012}SnakeX,SnakeY:  array[1..4000] of longint;

  013}HeadX,HeadY:                      longint;

  014}BonusX,BonusY:  array[1..40]   of longint;

  015}DeathX,DeathY:  array[1..30]   of longint;

  016}Dlina,Naprav:                     longint;

  017}key:                              char;

  018}i,score:                          integer;

  019}MenuItem:       array[1..6]    of string;

  020}DTime,ScorePlus,ScoreMinus,MenuSelect,x,y:       integer;

{-----------------------------------------------------}

  021}Procedure Ramka(x,y:integer);

  022}Begin

  023}TextColor(2);

  024} TextBackground(0);

  025}gotoxy(x,y);

  026} writeln('╔═ ЗМЕЙКА 0.1 ══════╗');

  027} gotoxy(x,y+1);

  028} writeln('║     VERY SLOW     ║');

  029} gotoxy(x,y+2);

030                       } writeln('║       SLOW        ║');

031                       } gotoxy(x,y+3);

032                       } writeln('║      MEDIUM       ║');

033                       } gotoxy(x,y+4);

034                       } writeln('║       HIGH        ║');

035                       } gotoxy(x,y+5);

036                       } writeln('║     VERY HIGH     ║');

037                       } gotoxy(x,y+6);

038                        }writeln('║      RESULT       ║');

039                        }gotoxy(x,y+7);

040                        }writeln('╚═══════════════════╝');

041                        }gotoxy(x,y+8);

042                        }textcolor(14);

043                        }writeln('  Виберiть рiвень    ');

044                        }textcolor(0);

045                        }gotoxy(1,1);

046                        }End;

{------------------------------------------------------}

047                       } Procedure Symbol(x,y:integer; sym:char);

048                       } Begin

049                       } gotoxy(x,y);

050                       } write(sym);

051                       } gotoxy(1,1);

052                       } End;

{------------------------------------------------------}

053                       } Procedure Rezultat(var d:res;scr,dl:integer);

054                       } var f1:result;
055                       } Begin

056                       } {$I-}

057                       } Reset(d);

058                       } {$I+}

059                       } IF IOResult<>0 THen rewrite(d);

060                       } clrscr;

061                       } gotoxy(28,22);

062                       } textcolor(green);

063                       } write('Введить ваше iм`я: ');

064                       } readln(f1.name);

065                       } f1.scor:=scr;

066                       } f1.len:=dl;

067                       } seek(d,filesize(d));

068                       } write(d,f1);

069                       } Close(d);

070                       } Textcolor(0);

071                       } Halt;

072                       } End;

{--------------------------------------------------------}

073                       } Procedure OverRes(var d:res);

074                       } var f1:result;

075                       } y:integer;

076                       } Begin

077                       } ClrScr;

078                       } {$I-}

079                       } Reset(d);

080                       } {$I+}

081                       } IF IOResult<>0 THEN begin

082                       } gotoxy(28,22);

083                       }  textcolor(green);

084                       }  write('Результатiв немає!');end

085                       } Else

086                       } begin

087                       } textcolor(green);

088                       } y:=1;

089                       } while not eof(d) do begin

090                       } read(d,f1);

091                       } gotoxy(1,y); write('Iм`я: ',f1.name);

092                       } gotoxy(30,y); write('Довжина: ',f1.len);

093                       } gotoxy(45,y); write('Oчки: ',f1.scor:5);

094                       } y:=y+1;

095                       } end;

096                       } Close(d);

097                       } end;

098                       } repeat until keypressed;

099                       } textcolor(0);

      100}End;

 {-------------------------------------------------------------------}
101                       } Procedure GoUp(x,y:integer);

102                       } Begin

103                       } Ramka(x,y);

104                       } MenuSelect:=Menuselect-1;

105                       } IF MenuSelect < 1 THEN MenuSelect:=6;

106                       } TextColor(14);

107                       } TextBackground(0);

108                       } GotoXY(x+1,y+MenuSelect);

109                       } write(MenuItem[MenuSelect]);

110                       } Textbackground(0);

111                       } textcolor(0);

112                       } gotoxy(1,1);

113                       } End;

{------------------------------------------------------}

114    }Procedure GoDown(x,y:integer);

115    }Begin

116    }ramka(x,y);

117    }MenuSelect:=MenuSelect+1;

118    }IF MenuSelect > 6 THEN MenuSelect:=1;

119    }textcolor(14);

120    }textbackground(0);

121    }gotoxy(x+1,y+MenuSelect);

122    }write(MenuItem[MenuSelect]);

123    }textcolor(0);

124    }textbackground(0);

125    }gotoxy(x,y);

126    }End;

{------------------------------------------------------}

127                        }Procedure Menu;

128                        }label b;

129                        }Var

130                        }X,Y,I:integer;

131                        }Begin

132                        }b:

133 }dlina:=5;

134 }Naprav:=1;

135 }HeadX:=5;

136                                     }HeadY:=1;

137                                     }Score:=0;

138                                     }X:=28;Y:=20;

139                                     }clrscr;

140    }Ramka(x,y);

141    }textcolor(14);

142    }textbackground(0);

143    }gotoxy(x+1,y+Menuselect);

144    }write(MenuItem[MenuSelect]);

145    }textcolor(0);

146    }textbackground(0);

147    }gotoxy(1,1);

148    }repeat

149    }I:=ord(readkey);

150    }case I of

151    }72:GoUp(x,y);

152    }80:GoDown(x,y);

153    }end;

154    }Until (I=27)or(I=13);

155    }IF i=27 THEN halt;

156    }Case MenuSelect of

157    }1: Begin

DTime:=10000;

ScorePlus:=5;

End;

158    }2: Begin

DTime:=8000;

ScorePlus:=10;

End;

159    }3: Begin

 DTime:=6000;

 ScorePlus:=15;

 End;

160    }4: Begin

  DTime:=4000;

  ScorePlus:=20;

  End;

161    }5: Begin

  DTime:=2000;

  ScorePlus:=25;

  End;

162    }6: Begin

  OverRes(f);

  ClrScr;

  goto b;

  End;

163    }End;

164    }CLRSCR;

165    }End;

{---------------------------------------------------------}

166    }Procedure DrawSnake;

167    }Begin

168    }textcolor(15);

169    }gotoxy(1,50);

170    }write('            ');

171    }gotoxy(1,50);

172    }write('Oчки:  ',Score);

173    }gotoxy(20,50);

174    }write('Програму разрoбив Матковський Руслан aka Pat');

175    }gotoxy(65,50);

176    }write('              ');

177    }gotoxy(65,50);

178    }write('Довжина: ',Dlina);

179    }Symbol(SnakeX[1],SnakeY[1],chr(15));

180    }textcolor(2);

181    }for i:=2 to Dlina do  begin

182    }Symbol(SnakeX[i],SnakeY[i],chr(15));

183    }end;

184    }textcolor(red);

185    }for i:=1 to 40 do

186    }Symbol(BonusX[i],BonusY[i],chr(64));

187    }textcolor(0);

188    }gotoxy(1,1);

189    }End;

{----------------------------------------------------------}

190    }Procedure AddBonus(b:longint);

191    }label 1;

192    }var

193    }Err,f:integer;

194    }Begin

195    }1:

196    }Err:=0;

197    }BonusX[b]:=Random(78)+1;

198    }BonusY[b]:=Random(48)+1;

199    }For f:=1 to 40 do

200    }if f<>b THEN

201    }if ((BonusX[f]=BonusX[b]) and (BonusX[f]<>0) and (BonusY[f]=BonusY[b]) and (BonusY[f]<>0)) THEN Err:=1;

202    }For f:=1 to Dlina do

203    }if (SnakeX[f]=BonusX[b]) and (SnakeY[f]=BonusY[b]) THEN Err:=1;

204    }IF Err=1 THEN goto 1;

205    }textcolor(0);

206    }gotoxy(1,1);

207    }End;

{-----------------------------------------------------------}

208    }Procedure Kill;

209    }Var c:array[1..6] of char;

210    }j:integer;

211    }label 1;

212    }Begin

213    }c[1]:='X';

214    }c[2]:='x';

215    }c[3]:=':';

216    }c[4]:='.';

217    }c[5]:='.';

218    }c[6]:=' ';

219    }Textcolor(2);

220    }for i:=1 to 6 do begin

221    }for j:=1 to Dlina do Symbol(SnakeX[j],SnakeY[j],c[i]);

222    }delay(5000);

223    }end;

224    }1:

225    }CLRSCR;

226    }textcolor(15);

227    }gotoxy(1,50);

228    }write('            ');

229    }gotoxy(1,50);

230    }write('Oчки:  ',Score);

231    }gotoxy(20,50);

232    }write('Програму разрoбив Матковський Руслан aka Pat');

233    }gotoxy(65,50);

234    }write('              ');

235    }gotoxy(65,50);

236    }write('Довжина: ',Dlina);

237    }textcolor(2);

238    }gotoxy(28,22);

239    }write('╔═══════════════════╗');

240    }gotoxy(28,23);

241    }write('║                   ║');

242    }gotoxy(28,24);

243    }write('║ Продовжити(Y/N)?  ║');

244    }gotoxy(28,25);

245    }write('║                   ║');

246    }gotoxy(28,26);

247    }write('╚═══════════════════╝');

248    }gotoxy(1,1);

249    }key:=readkey;

250    }case key of

251    }'Y','y','Н','н': begin

menu;

for i:=1 to Dlina do

begin

SnakeX[i]:=6-i;

SnakeY[i]:=1;

end;

end;

252    }'N','n','Т','т':Rezultat(f,Score,Dlina);

253    }else goto 1;

254    }end;

255    }textcolor(0);

256    }gotoxy(1,1);

257    }End;

{----------------------------------------------------------}

258            }procedure Move;

259            }begin

260            }Symbol(SnakeX[Dlina],SnakeY[Dlina],' ');

261            }case naprav of

262            }1: begin

          HeadX:=HeadX+1;

263            }End;

264            }2: begin

         HeadX:=HeadX-1;

265            }end;

266            }  3: begin

        HeadY:=HeadY-1;

267            }end;

268            }4: begin

        HeadY:=HeadY+1;

269            }end;

270            }end;

271            }if HeadX>80 then HeadX:=1;

272            }if HeadX<1 then HeadX:=80;

273            }if HeadY>49 then HeadY:=1;

274            }if HeadY<1 then HeadY:=49;

275                       }for I:=1 to Dlina do

276            }begin

277            }If (HeadX=SnakeX[i])and(HeadY=SnakeY[i]) then kill;

278            }end;

279            }for i:=1 to 40 do

280            }begin

281            }if (HeadX=BonusX[i])and(HeadY=BonusY[i]) then

282            }begin

283            }Dlina:=Dlina+1;

284            }score:=score+ScorePlus;

285            }addbonus(i);

286            }end;

287            }end;
288            }for I:=Dlina downTo 2 do

289            }begin

290            }SnakeX[i]:=SnakeX[i-1];

291            }SnakeY[i]:=SnakeY[i-1];

292            }end;

293            }SnakeX[1]:=HeadX;

294            }SnakeY[1]:=HeadY;

295            }drawsnake;

296            }textcolor (0);

297            }gotoxy( 1,1);
298            }end;

{-----------------------------------------------------------------}
299    }BEGIN

300    }Assign(f,'result.dat');

301    }Textmode(c80 + Font8x8);

302    }randomize;

303    }CLRSCR;

304    }for i:=1 to 40 do addbonus(i);

305    }MenuItem[1]:='     VERY SLOW     ';

306    }MenuItem[2]:='       SLOW        ';

307    }MenuItem[3]:='      MEDIUM       ';

308    }MenuItem[4]:='       HIGH        ';

309    }MenuItem[5]:='     VERY HIGH     ';

310    }MenuItem[6]:='      RESULT       ';

311    }MenuSelect:=1;

312    }clrscr;

313    }menu;

314    }for i:=1 to Dlina do

315    }begin

316    }SnakeX[i]:=6-i;

317    }SnakeY[i]:=1;

318    }end;

319    }1:

320    }while key<>#27 do

321    }begin

322    }if KeyPressed then

323    }begin

324    }key:=readkey;

325    }if key=#0 then

326    }case readkey of

                   #72: if Naprav <> 4 then Naprav := 3;{Down}

                   #80: if Naprav <> 3 then Naprav := 4;{up}

                   #75: if Naprav <> 1 then Naprav := 2;{Left}

                  #77: if Naprav <> 2 then Naprav := 1;{Rigth}

327    }end;

328    }end;

329    }textcolor (0);

330    }gotoxy(1,1);

331    }DELAY(DTime);

332    }Move;

333    }textcolor (0);

334    }gotoxy( 1,1);

335    }end;

336    }kill;

337    }goto 1;

338    }close(f);

339    }end.
                                 

1. Реферат Международная охрана природных ресурсов. Практика западных стран
2. Реферат на тему CompareContrast GoreBush Essay Research Paper
3. Реферат на тему Возбуждение уголовного дела 2
4. Курсовая Содержание кормление и эксплуатация хряков-производителей
5. Отчет по практике на тему Работа кредитного отдела ОАО Альфа Банк
6. Реферат на тему Модемы и их использование
7. Реферат на тему Культура и проблема ценностей
8. Реферат на тему Психологическая подготовка легкоатлета
9. Реферат на тему Telepathy Lab Essay Research Paper TelepathyDoes Humans
10. Реферат Фасоль обыкновенная