Рефераты. Игра "Пятнашки"

Рисунок 7 - Список лучших игроков

8.5 Последний пункт меню Выход.

При нажатии на данный пункт меню, программа завершает свою работу.

10. Заключение

Не смотря на внешне кажущуюся простоту данной программы, он таит в себе ряд сложностей, которые реализуются с использованием всех основных приемов Турбо Паскаль. Вообще Турбо Паскаль как среда программирование уже давно устарела, но основы, которые лежат в среде программировании в Турбо Паскаль, лежат в болшенстве известных и популярных приложений. На мой взгляд, изучая программирование в Турбо Паскаль, можно освоить основные приемы программирования.

Целью данной курсовой работы, являлось углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере, на мой взгляд, разработанная мной программа, вполне отвечает поставленным целям. Особенностями данной программы является:

- Четко построенный алгоритм;

- Интуитивно понятный интерфейс;

- Удобное управление;

- Простота в использовании;

- Вполне понятное руководство пользователя;

- Отсутствие лишних дополнений.

11. Список литературы

10.1 Учебное пособие. «Основы алгоритмизации и программирования», Е. Н. Сафьяновой

10.2 Самоучитель. «Программирование в Turbo Pascal», Н. Культин.

10.3 Открытие Интернет источники.

Приложение 1 Листинг программы

program Game;

uses crt, Graph;

var

as:array[1..4,1..4] of string; {Двухмерный массив, содержит элементы табло}

bs:array[1..16] of integer; {Массив для заполнения случайными числами}

men:array[1..5] of integer; {Массив выводи элементы Главного меню}

res:array[1..10] of string; {Имена игроков с лучшими результатами}

it:array[1..10] of integer; {Результаты лучших игроков}

resv:array[1..10] of string; {Массив со вновь сформированным списком лучших игроков}

itv:array[1..10] of integer; {Массив со вновь сформированным списком результатов лучших игроков}

i,j:integer; {Переменные для работы с массивами}

strok, stolb:integer; {Координаты пустого элемента}

hod:integer; {Счетчик, считывает каждый ход сделанный пользователем}

lom:integer; {Переменная для работы с Главным меню}

name:string; {Имя игравшего пользователя}

ch:char; {Переменная, которой присваивается код нажатой клавиши на клавиатуре}

prov:boolean;{Проверка правильности расклада}

f: text; {файловая переменная}

procedure Vivod;

{Процедура вывода на экран табло с цифрами сформированное на момент отображения}

var lx,ly:integer; {Координаты вывода двухмерного массива}

x,y:integer; {Координаты клеток}

j1,i1:integer; {Переменные счетчики, для рисование клеток}

w1,h1:integer; {Ширина и высота клеток}

begin

OutTextXY(210,50,'For leaving press ESC');

w1:=30;

h1:=30; {Клетка размером 30 на 30}

for i1:=0 to 3 do {Цикл, прорисовки клеток}

for j1:=0 to 3 do

begin

x:=235+j1*35; {Сдвиг клеток по х}

y:=150+i1*35; {Сдвиг клеток по у}

setFillStyle(1,1); {Цвет и стиль клеток, цвет синий, стиль заполнение текущем цветом}

Bar(x,y,x+w1,y+h1); {Рисование клетки}

end;

lx:=245;

ly:=162;

for i:=1 to 4 do {Цикл вывода двухмерного массива по вверх клеток}

begin

for j:=1 to 4 do

begin

OutTextXY(lx,ly,as[i,j]); {Вывод текста на экран}

lx:=lx+35;

end;

lx:=245;

ly:=ly+35;

end;

line(220,135,220,300); {Рисование рамки}

line(385,135,385,300);

line(220,135,385,135);

line(220,300,385,300);

end;

procedure Tablo;

{Формирование табло при первом запуске заполненное случайными и неповторяющимися цифрами}

var b:integer; {Переменная, которой присваивается случайное число}

k,z:integer;{Счетчики для операций с массивами}

begin

randomize;

For z:=1 to 16 do

begin

b:=random(15); {Выбор случайного числа}

k:=1;

while k<>17 do {Цикл пока не будет заполнен массив с целыми цифрами}

begin

if bs[k]=b then

begin

b:=random(17);

k:=1;

end

else k:=k+1;

end;

bs[z]:=b; {Присвоение очередного неповторяющегося элемента массива}

end;

z:=1;

for i:=1 to 4 do {Заполнение двухмерного массива, вместо цифр из одномерного, присваиваются строковые элементы}

begin

for j:=1 to 4 do

begin

case bs[z] of

1: as[i,j]:='1 ';

2: as[i,j]:='2 ';

3: as[i,j]:='3 ';

4: as[i,j]:='4 ';

5: as[i,j]:='5 ';

6: as[i,j]:='6 ';

7: as[i,j]:='7 ';

8: as[i,j]:='8 ';

9: as[i,j]:='9 ';

10: as[i,j]:='10';

11: as[i,j]:='11';

12: as[i,j]:='12';

13: as[i,j]:='13';

14: as[i,j]:='14';

15: as[i,j]:='15';

16: as[i,j]:=' ';

end;

z:=z+1;

end;

end;

vivod; {Вывод табло на экран}

end;

Procedure Poisk;

{Поиск пустого элемента в табло}

begin

for i:=1 to 4 do

begin

for j:=1 to 4 do

begin

if as[i,j] = ' ' Then {Поиск, равен ли текущий элемент пробелу}

begin

Strok:=i; {Если равен, то присваиваются координаты пустого элемента}

Stolb:=J

end;

end;

end;

end;

procedure bonus;

{Бонус, для проверки. При нажатии клавиши END на клавиатуре расклад собирается}

begin

as[1,1]:='1 ';as[1,2]:='2 ';as[1,3]:='3 ';as[1,4]:='4 ';

as[2,1]:='5 ';as[2,2]:='6 ';as[2,3]:='7 ';as[2,4]:='8 ';

as[3,1]:='9 ';as[3,2]:='10';as[3,3]:='11';as[3,4]:='12';

as[4,1]:='13';as[4,2]:='14';as[4,4]:='15'; as[4,3]:=' ';

Strok:=4; Stolb:=3;

end;

procedure napravlenie;

{Ввод направления перехода}

begin

ch:=readkey; {Переменной присваивается код нажатой пользователем клавиши на клавиатуре}

end;

procedure Zamena;

{Передвижение клеток с цифрами в зависимости от выбора пользователя}

begin

napravlenie; {Процедура, ввод направления перехода}

if ord (ch)=79 then bonus; {Если нажата клавиша END на клавиатуре то расклад сам собирается}

if ord(ch)=75 then {Если нажата клавиша влево}

begin

if stolb<>4 then {Если это не последний элемент, стоящий у границы табло}

begin

as[strok,stolb]:=as[strok,stolb+1]; {На место пустого элемента присваивается элемент стоящий справа от пустого}

as[strok,stolb+1]:=' '; {Элементу стоящему справа от пустого присваивается пустой элемент}

stolb:=stolb+1; {Новая координата пустого элемента}

hod:=hod+1; {Очередной сделанный ход}

end;

end;

if ord(ch)=72 then {Если нажата клавиша вверх}

begin

if strok<>4 then {Если это не последний элемент, стоящий у границы табло}

begin

as[strok,stolb]:=as[strok+1,stolb]; {На место пустого элемента присваевается элемент стоящий снизу от пустого}

as[strok+1,stolb]:=' '; {Элементу стоящему снизу от пустого присваевается пустой элемент}

strok:=strok+1;{Новая координата пустого элемента}

hod:=hod+1; {Очередной сделанный ход}

end;

end;

if ord(ch)=77 then {Если нажата клавиша вправо}

begin

if stolb<>1 then {Если это не последний элемент, стоящий у границы табло}

begin

as[strok,stolb]:=as[strok,stolb-1]; {На место пустого элемента присваивается элемент стоящий слева от пустого}

as[strok,stolb-1]:=' '; {Элементу стоящему слева от пустого присваивается пустой элемент}

stolb:=stolb-1; {Новая координата пустого элемента}

hod:=hod+1; {Очередной сделанный ход}

end;

end;

if ord(ch)= 80 then {Если нажата клавиша вниз}

begin

if strok<>1 then {Если это не последний элемент, стоящий у границы табло}

begin

as[strok,stolb]:=as[strok-1,stolb];{На место пустого элемента присваивается элемент стоящий сверху от пустого}

as[strok-1,stolb]:=' '; {Элементу стоящему сверху от пустого присваивается пустой элемент}

strok:=strok-1; {Новая координата пустого элемента}

hod:=hod+1; {Очередной сделанный ход}

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.