Розробка гри "Життя"

Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 23.06.2010
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

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

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

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

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

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

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

КР ______

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

групи 101-ТН

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

Полтава 2010

Зміст

Вступ

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

2. Розв'язання задачі

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

4. Реалізація програми 8

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

Висновок

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

Вступ

Щоб виконати дану роботу треба мати достатні знання мови програмування Турбо Паскаль, а також вміння складати алгоритми. Для коду даної програми я використав навики з виконання практичних робіт.

Гру «Життя» вперше створив Дж. Конвей. Це власне не гра, а проста модель еволюції групи живих організмів. Пасивне спостереження над сукупністю великої кількості поколінь цієї гри може дати якусь задоволення.

Ігровим полем(«житєвим простором») в цій грі являється двохвимірна поверхня, розділена на квадрати. В нас це поверхня тора, яка не має границь: наявність границь завжди зв'язано з проблемами. Кожна клітинка має 8 сосідів. Ячейка може бути заселена одним організмом, або бути порожньою.

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

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

- Створити програму у середовищі програмування Turbo Pascal

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

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

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

УМОВА ЗАДАЧІ

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

Клітка виживає, якщо має двох або трьох сусідів з восьми можливих, якщо один або жодного то клітка гине в ізоляції. Якщо має чотири та більше, то гине від перенаселення.У будь-якій порожній позиції у якої рівно три сусіди у наступному поколінні з'являється нова клітка.

2. Розв'язання задачі

Популяцію в першому поколінні задамо випадково. Це означає, що рішення про те, чи буде кожна клітка заселена, приймається з деякою вірогідністю. У програмі life при відображенні групи віртуальних організмів використана анімація. Ефект анімації оснований на послідовній зміні кадрів - графічних зображень. Для швидкого переходу від одного «кадра» до іншого використаємо дві графічні сторінки. Графічна сторінка - область відеопам'яті, яка зберігає зображення. При цьому, якщо режим роботи відеоадаптера підтримує роботу тільки з однією сторінкою, її вміст відображається на екрані. В деяких режимах роботи підтримуються декілька графічних сторінок. Вміст однієї з них («візуальної») відображається не на екрані, а на другій («активній»), невидимій користувачу, в цей час може будуватися нове зображення. Підготовлене на новій сторінці зображення виводиться на екран. Такий спосіб можливий, наприклад, про роботі в режимі VGA з роздільною здатність 640х480, бо в цьому режимі є дві графічні сторінки. В розділі опису констант задані параметри програми, які якщо доведеться змінювати, то рідко, тому некомфортно їх вводити при кожному запуску програми:

Hor - кількість кліток по горизонталі

Ver - кількість кліток по вертикалі

Cell_width, cell_height - ширина та висота клітки

Prob_factor - параметр, що визначає вірогідність заселення кліток про формуванні початкової популяції.

Процедура init_cells формує початкову популяцію, встановлюючи елементам масива new_gen значення 0 або 1 з використаним параметром вірогідності.

Процедура next_generation будує в масиві new_gen будує наступну популяцію за правилами.

Процедура init_screen ініціалізує графічний режим та заповнює масиви графічних координат центрів кліток. Процедура display виконує основну роботу по побудові зображення робочого поля гри на прихованій активній сторінці та виводить на екран. Це уможливлюють процедури SetActivePage та SetVisualPage, викликані з параметром 0 або 1, визначаючим номер графічної сторінки. Перша процедура при викликанні встановлює активну сторінку, а друга візуальну.

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

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

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

В) Алгоритм процедури next_generation

Г) Алгоритм процедури init_screen

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

Е) Алгоритм процедури rule_plane

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

PROGRAM LIFE;

uses crt,dos,graph;

const

hor=100;

ver=70;

cell_width=8;

cell_height=6;

prob_factor=0.5;

var

old_gen,new_gen:array[0..ver,0..hor] of 0..1;

prob:real;

ch:char;

x_center:array[0..hor] of word;

y_center:array[0..hor] of word;

gen_count,radius,page:word;

ss:string[10];

procedure init_cells;

var

j,k:word;

begin

gen_count:=0;

for j:=0 to ver do

for k:=0 to hor do

begin

old_gen[j,k]:=0;

if random<=prob then

new_gen[j,k]:=1

else

new_gen[j,k]:=0;

end;

end;

procedure next_generation;

var

j,k,m,prev_j,next_j,prev_k,next_k:word;

begin

old_gen:=new_gen;

for j:=0 to ver do

begin

if j=0 then

prev_j:=ver

else

prev_j:=j-1;

if j=ver then

next_j:=0

else

next_j:=j+1;

for k:=0 to hor do

begin

if k=0 then

prev_k:=ver

else

prev_k:=k-1;

if k=hor then

next_k:=0

else

next_k:=k+1;

m:=old_gen[prev_j,prev_k]

+old_gen[prev_j,k]

+old_gen[prev_j,next_k]

+old_gen[j,prev_k]

+old_gen[j,next_k]

+old_gen[next_j,prev_k]

+old_gen[next_j,k]

+old_gen[next_j,next_k];

if (old_gen[j,k]=1) and ((m<=1) or (m>=4)) then

new_gen[j,k]:=0

else

if (old_gen[j,k]=0) and (m=3) then

new_gen[j,k]:=1

else

new_gen[j,k]:=old_gen[j,k];

end;

end;

end;

procedure init_screen;

var

graphdriver,graphmode:integer;

j,k:word;

begin

graphdriver:=vga;

graphmode:=vgamed;

page:=0;

initgraph(graphdriver,graphmode,'');

if graphresult<>grOk then

halt;

for k:=0 to hor do

x_center[k]:=k*cell_width+cell_width div 2;

for j:=0 to ver do

y_center[j]:=j*cell_height+cell_height div 2;

radius:=4;

end;

procedure display;

var

j,k:word;

procedure rule_plane;

var

j,k:word;

begin

setviewport(0,0,getmaxx,getmaxy,clipon);

setfillstyle(solidfill,blue);

bar(0,0,getmaxx,10);

setcolor(white);

outtext('Generation: ');

outtextxy(250,0,'Q: Quit');

outtextxy(450,0,'Any other key: renew');

str(gen_count,ss); outtext(ss);

setbkcolor(darkgray);

end;

begin

if gen_count<>0 then

next_generation;

inc(gen_count);

page:=1-page;

setactivepage(page);

cleardevice;

setcolor(yellow);

for j:=0 to ver do

for k:=0 to hor do

if new_gen[j,k]=1 then

circle(x_center[k],y_center[j],radius);

rule_plane;

setvisualpage(page);

end;

begin

init_screen;

repeat

randomize;

prob:=0.1+prob_factor*random;

outtextxy(0,0,'Game of life');

writeln;

outtextxy(0,15,'Live cells inserted at random,');

str(prob:3:3,ss);

outtextxy(0,30,'with probability '+ss);

outtextxy(0,60,'Press any key to start: ');

ch:=readkey;

cleardevice;

init_cells;

repeat

display;

if keypressed then

begin

ch:=readkey;

break;

end;

until false;

setviewport(0,0,getmaxx,getmaxy,clipon);

cleardevice;

setcolor(white);

if upcase(ch)='Q' then

break;

until false;

closegraph;

end.

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

Початкове вікно програми

Процес генерації 12 популяції

ВИСНОВОК

Розроблена програма дозволяє спостерігати життя, наприклад, колонії живих організмів. Я детальніше познайомився з принципами роботи в графічному режимі.

ВИКОРИСТАНА ЛІТЕРАТУРА

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

«Turbo Pascal» В.Фаронов


Подобные документы

  • Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

    курсовая работа [2,9 M], добавлен 05.12.2012

  • Алгоритмічна мова програмування універсального призначення Turbo Pascal. Розробка і створення програми для гри "Шибениця". Алгоритм функціонування программи, блок-схема алгоритму. Використання додаткових модулів Graph та Crt у процессі створення програми.

    курсовая работа [2,0 M], добавлен 23.06.2010

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.

    курсовая работа [2,0 M], добавлен 24.09.2010

  • Розробка програми мовою Turbo Pascal для автоматизації процесу перевірки оцінок та аналізу успішності групи, для збереження і перегляду всієї інформації стосовно навчання. Формальна постановка задачі, створення алгоритму та вихідного коду програми.

    курсовая работа [36,0 K], добавлен 13.10.2010

  • Розробка і обґрунтування технічного завдання, вимоги до програмної реалізації та користувача. Можливі варіанти зміни та вдосконалення програми. Початок загального алгоритму вирішення задачі. Структурні зв’язки між функціями програми, її тестування.

    курсовая работа [1,8 M], добавлен 14.03.2013

  • Розробка програми реєстрації автомобілів для збереження та перегляду інформації про модель машини, рік її випуску, об'єм двигуна і витрати палива. Складання алгоритмів розв'язання поставленої задачі та написання тексту програми в середовищі Turbo Pascal.

    курсовая работа [29,7 K], добавлен 13.10.2010

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Побудова блок-схеми алгоритму проста вставка. Програмна реалізація алгоритму, опис результатів. Особливості обліку ітерації масивів. Відсортування даних за допомогою програми Turbo Pascal. Аналітична оцінка трудомісткості, графічне представлення.

    контрольная работа [570,1 K], добавлен 21.05.2014

  • Програма "Приватка" для збереження та перегляду всієї інформації, що стосується пошуку підприємства. Розробка алгоритму та програмування на мові Turbo Pascal. Формальна та неформальна постановка задачі. Структура зберігаючих даних. Вихідний код програми.

    курсовая работа [20,9 K], добавлен 07.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.