Игра "Пятнашки"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?омощи клавиш курсора:

  1. Стрелка влево перемещает влево цифру, стоящую справа от пустой клетки;
  2. Стрелка вправо перемещает вправо цифру стоящую слева от пустой клетки;
  3. Стрелка вниз перемещает вниз цифру стоящую сверху от пустой клетки;

Стрелка вверх перемещает вверх цифру стоящую снизу от пустой клетки.

Пользователю необходимо при помощи курсора перемещать клетки табло, до тех пор, пока на экране не отобразится, последовательная комбинация цифр, как показано на рисунке 5

 

 

Рисунок 5 Игровое поле с правильно заполненной, комбинацией.

 

В течение всей игры, пользователь в любой момент может покинуть игру, для этого достаточно нажать клавишу ESC и игра завершает свою работу, а на экране появится Главное меню программы.

В течение всей игры, программа считает каждый ход игрока и если игрок раскладывает требуемую комбинацию, за меньшее количество ходов, чем это сделали игроки ранее, то после победы, пользователю предлагается ввести свое имя и информация об игроке, который разложил расклад быстрее, заносится в список лучших игроков (Рисунок 6).

Рисунок 6 - Ввод имени

 

8.5 пункт Результаты.

 

В данном разделе меню можно посмотреть результаты лучших игроков (Рисунок 7), а именно тех игроков, которые собрали требуемую комбинацию за наименьшее количество ходов.

На экране небольшая табличка в левом столбце Move записано количество ходов, а в правом Name имя игрока.

 

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

 

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

 

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

 

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

 

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

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

  1. Четко построенный алгоритм;
  2. Интуитивно понятный интерфейс;
  3. Удобное управление;
  4. Простота в использовании;
  5. Вполне понятное руководство пользователя;
  6. Отсутствие лишних дополнений.

 

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

 

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]:='