Рисунок 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
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 {Цикл вывода двухмерного массива по вверх клеток}
for j:=1 to 4 do
OutTextXY(lx,ly,as[i,j]); {Вывод текста на экран}
lx:=lx+35;
ly:=ly+35;
line(220,135,220,300); {Рисование рамки}
line(385,135,385,300);
line(220,135,385,135);
line(220,300,385,300);
procedure Tablo;
{Формирование табло при первом запуске заполненное случайными и неповторяющимися цифрами}
var b:integer; {Переменная, которой присваивается случайное число}
k,z:integer;{Счетчики для операций с массивами}
randomize;
For z:=1 to 16 do
b:=random(15); {Выбор случайного числа}
k:=1;
while k<>17 do {Цикл пока не будет заполнен массив с целыми цифрами}
if bs[k]=b then
b:=random(17);
end
else k:=k+1;
bs[z]:=b; {Присвоение очередного неповторяющегося элемента массива}
z:=1;
for i:=1 to 4 do {Заполнение двухмерного массива, вместо цифр из одномерного, присваиваются строковые элементы}
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]:=' ';
z:=z+1;
vivod; {Вывод табло на экран}
Procedure Poisk;
{Поиск пустого элемента в табло}
for i:=1 to 4 do
if as[i,j] = ' ' Then {Поиск, равен ли текущий элемент пробелу}
Strok:=i; {Если равен, то присваиваются координаты пустого элемента}
Stolb:=J
procedure bonus;
{Бонус, для проверки. При нажатии клавиши END на клавиатуре расклад собирается}
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;
procedure napravlenie;
{Ввод направления перехода}
ch:=readkey; {Переменной присваивается код нажатой пользователем клавиши на клавиатуре}
procedure Zamena;
{Передвижение клеток с цифрами в зависимости от выбора пользователя}
napravlenie; {Процедура, ввод направления перехода}
if ord (ch)=79 then bonus; {Если нажата клавиша END на клавиатуре то расклад сам собирается}
if ord(ch)=75 then {Если нажата клавиша влево}
if stolb<>4 then {Если это не последний элемент, стоящий у границы табло}
as[strok,stolb]:=as[strok,stolb+1]; {На место пустого элемента присваивается элемент стоящий справа от пустого}
as[strok,stolb+1]:=' '; {Элементу стоящему справа от пустого присваивается пустой элемент}
stolb:=stolb+1; {Новая координата пустого элемента}
hod:=hod+1; {Очередной сделанный ход}
if ord(ch)=72 then {Если нажата клавиша вверх}
if strok<>4 then {Если это не последний элемент, стоящий у границы табло}
as[strok,stolb]:=as[strok+1,stolb]; {На место пустого элемента присваевается элемент стоящий снизу от пустого}
as[strok+1,stolb]:=' '; {Элементу стоящему снизу от пустого присваевается пустой элемент}
strok:=strok+1;{Новая координата пустого элемента}
if ord(ch)=77 then {Если нажата клавиша вправо}
if stolb<>1 then {Если это не последний элемент, стоящий у границы табло}
as[strok,stolb]:=as[strok,stolb-1]; {На место пустого элемента присваивается элемент стоящий слева от пустого}
as[strok,stolb-1]:=' '; {Элементу стоящему слева от пустого присваивается пустой элемент}
stolb:=stolb-1; {Новая координата пустого элемента}
if ord(ch)= 80 then {Если нажата клавиша вниз}
if strok<>1 then {Если это не последний элемент, стоящий у границы табло}
as[strok,stolb]:=as[strok-1,stolb];{На место пустого элемента присваивается элемент стоящий сверху от пустого}
as[strok-1,stolb]:=' '; {Элементу стоящему сверху от пустого присваивается пустой элемент}
strok:=strok-1; {Новая координата пустого элемента}
Страницы: 1, 2, 3, 4, 5, 6