Написання гри "Змійка" засобами мови Turbo Pascal
Зміст
1. Постановка завдання
2. Ключові слова
3. Теоретичний матеріал
4. Структурний опис розробки
5. Функціональне опис
6. Висновок
7. Список використаної літератури
8. Додатка
Додаток 1
Додаток 2
1. Постановка завдання
Мета роботи - написати гру "Змійка". Правила гри: на полі розміром 25 * 80 рухається змійка, що складається з декількох сегментів і розкидана їжа. Мета гри - рухатися по полю літерами w (вгору), s (вниз), a (вліво), d (вправо) і збирати їжу. Кожна зібрана їжа збільшує довжину змійки на один сегмент. Якщо змійка ударяється об стіну, гра закінчується.
2. Ключові слова
Ігрове поле, координати їжі і частин змійки, довжина змійки, малювання змійки і їжі, вихід за межі поля.
3. Теоретичний матеріал
Дана контрольна робота була виконана в текстовому режимі Turbo Pascal.
При роботі в текстовому режимі екран монітора розбивається на рядки, рядки - на позиції, в кожну з яких можна помістити один символ. Положення символу на екрані задається двома координатами - вертикальної X і горизонтальної Y. X - це номер позиції в рядку, а Y - Номер рядка. Модуль CRT містить описи констант, процедур і функцій, забезпечують управління текстовим режимом роботи монітора.
ClrScr Очищає екран або вікно і поміщає курсор у верхній лівий кут.
Delay ( D : Word ) Припиняє роботу програми на вказане число D мілісекунд. Практично час затримки залежить від тактової частоти процесора.
GotoXY ( X , Y : Byte ) Переміщає курсор в позицію X рядки Y екрану.
TextBackGround ( Color : Byte ) Встановлює колір фону.
TextColor ( Color : Byte ) Встановлює колір символів.
У програмі використовуються кілька процедур для реалізації поставленого завдання.
4. Структурний опис розробки
Програма написана середовищі програмування Turbo Pascal. У ній створено контекстне меню, що з'являється спочатку гри, що містить у собі підказку з управління змійкою, поле, на яке помеается компонент, що містить в собі тіло змійки і В«ЇжаВ».
При запуску програми виконуються наступні дії:
-відкривається контекстне меню з довідкою про управління пересуванням тіла змійки
-пропонується перейти до гри
-далі з'являється з'являється зелене поле, з довільними координатами промальовується їжа і відображається змійка по початковим параметрам, яка починає рухатися вправо.
Управління здійснюється клавішами:
w - здійснює рух змійки вгору
s - вниз
a - вліво
d - вправо
Координати кожної частини змійки зберігаються в матриці, при натисканні певної клавіші вони міняються і змійка рухається.
При збігу координат їжі і почала змійки (поїдання їжі змійкою) координати їжі довільно змінюються, довжина змійки збільшується на один сегмент.
Програма постійно перевіряє, чи немає перетину змійкою меж поля. Якщо це трапляється, то виводиться повідомлення про програші і меню з пропозицію витйті з гри.
У випадку, коли гравець збирає всю їжу і змійка сягає максимальної довжини з'являється повідомлення про виграш.
5. Функціональне опис
У даній програмі використовуються:
Тип даних створений користувачем:
spoint = record; {тип даних для точки}
Консанти:
maxwidth = 10; {максимальна довжина змійки}
Змінні:
width: integer; {довжина змійки}
e: spoint; {координати їжі}
snakebody: array [1 .. maxwidth] of spoint; {координати частин тіла змійки}
i {лічильник циклу}, nx, ny: integer; {координати голови змійки}
v: byte; {вектор напрямку голови змійки}
gameover: boolean; {прапор закінчення гри}
key: char; {буфер клавіші}
Процедури і функції:
function checknext (x: integer; y: integer): boolean; {перевіряє чи вільна клітка і чи не виходить вона за кордону поля}
procedure neweat; {створює їжу на поле}
procedure movesnake (x, y: integer); {переміщує змійку}
Висновок
В ході проробленої роботи був вивчений текстовий режим мови програмування Turbo Pascal, розглянуті та застосовані процедури та функції.
Список використаної літератури
1. Малихіна М.П. Програмування на мові високого рівня Turbo Pascal. - видавництво В«СПб: БХВ-ПетербургВ», 2006.
2. Павловська Т.О. Паскаль. Програмування на мові високого рівня - видавництво Пітер 2008.
3. .nesterova.ru
Додаток 1:
В· Лістинг програми
{
=============================================== ==============
APPOINTMENT: Play "Snake"
AUTHOR: Ryzhenkova Olga
DATE: 11.11.2023
VERSION: 1.00
=============================================== =============}
program zmeika;
uses crt;
type
spoint = record
x: integer;
y: integer;
end; {тип для точки}
const
maxwidth = 10; {максимальна довжина змійки}
var
width: integer; {довжина змійки}
e: spoint; {координати їжі}
snakebody: array [1 .. maxwidth] of spoint; {масив з координатами частин тіла змійки}
i, {лічильник циклу} nx, ny: integer {координати голови змійки};
v: byte; {вектор напрямку голови змійки}
gameover: boolean; {прапор закінчення гри}
key: char; {буфер клавіші}
{перевіряє чи вільна клітка і чи не виходить вона за кордону поля}
function checknext (x: integer; y: integer): boolean;
var
isset: boolean; {прапор перевірки зайнятості клітини або її виходу за межі поля}
i: integer;
begin
isset: = true;
for i: = 1 to width do
begin {перевіряємо чи немає на місці клітини змійки}
if (x = snakebody [i]. x) and (y = snakebody [i]. y) then
isset: = false;
end;
if isset then
begin {перевіряємо чи не вийшла голова змійки за межі поля}
if (x <= 0) or (y <= 0) or (x> = 80) or (Y> = 25) then isset: = false;
end;
checknext: = isset;
end;
{створює їжу на поле}
procedure neweat;
begin
e.x: = random (78) +2;
ey: = random (23) +2; {генеруємо координати їжі}
{якщо місце зайняте, генеруємо ще раз, і так поки не знайдемо вільне}
while (not checknext (e.x, e.y)) do
begin
e.x: = random (78) +2;
e.y: = random (23) +2;
end;
end;
{переміщує змійку
procedure movesnake (x, y: integer);
var
i: integer; {лічильник циклу}
begin
for i: = 1 to width do
begin
snakebody [i]: = snakebody [i +1];
end; {переміщаємо всі складові змійки на місце сусідньої}
snakebody [width]. x: = x;
snakebody [width]. y: = y; {голові змійки присвоюємо нові координати}
if (x = ex) and (y = ey) then {якщо голова знайшла їжу}
begin
width: = width +1; {збільшуємо довжину змійки на 1}
snakebody [width]. x: = x;
snakebody [width]...