Написание игры "Пятнашки"
Игра "Пятнашки": исходные данные, условия задачи и цели ее решения. Основные приемы программирования и типы данных, используемые при решении аналогичных задач. Для разработки программы использовался язык С и среда программирования Borland C++ Builder.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.07.2011 |
Размер файла | 674,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
17
Белорусский национальный технический университет
приборостроительный факультет
Кафедра Информационно-измерительная техника и технологии
Пояснительная записка
к курсовой работе
по дисциплине «Языки программирования»
Тема: Написание игры «Пятнашки»
Минск 2011
РЕФЕРАТ
Пояснительная записка 33с., 9 рис., 5 источников, 4 прил.
С++, игра «пятнашки», среда программирования
Целью курсовой работы является составление игры «Пятнашки».
Составлен алгоритм обработки и написана программа.
СОДЕРЖАНИЕ
Перечень условных обозначений
Введение
1. Разработка алгоритма
1.1 Постановка задачи
1.2 Описание алгоритма
2. Разработка рабочего проекта
2.1 Описание логической структуры
2.2 Входные данные
2.3 Выходные данные
2.4 Вызов и загрузка
3. Тестирование проекта
4. Внедрение
4.1 Условия выполнения программы
4.2 Сообщения оператору
Заключение
Список использованных источников
Приложение А Блок-схема программы
Приложение Б Текст программы
Приложение В Результаты выполнения программы
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ
ПЛИС - программируемая логическая интегральная схема;
ПЗУ - постоянное запоминающее устройство;
IDE - интегрированная среда разработки.
ВВЕДЕНИЕ
язык программирование пятнашки
Целью курсового проекта являлось составление игры «Пятнашки».
Программирование - процесс и искусство создания компьютерных программ с помощью языков программирования. Программирование сочетает в себе элементы искусства, науки, математики и инженерии.
В узком смысле слова, программирование рассматривается как кодирование -- реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. Под программированием также может пониматься разработка логической схемы для ПЛИС, а также процесс записи информации в ПЗУ. В более широком смысле программирование -- процесс создания программ, то есть разработка программного обеспечения.
Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.
Различные языки программирования поддерживают различные стили программирования (т. н. парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать один из языков, наиболее полно подходящий для решения имеющейся задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый процессором -- это машинный язык (также называемый машинным кодом). Изначально все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.
В данной курсовой работе для разработки программы использовался язык С и среда программирования Borland C++ Builder.
Первый раздел посвящен описанию алгоритма. Решение задачи начинается с ее постановки. При постановке задачи выясняется конечная цель и вырабатывается общий подход к решению задачи. Приводится точное описание исходных данных, условий задачи и целей ее решения. В этом разделе описываются основные приемы программирования и типы данных, используемые при решении аналогичных задач.
В разделе описания программы дается обобщенное словесное описание алгоритма решения поставленной задачи.
В разделе описания разработки программы указывается обозначение и наименование программы; программное обеспечение, необходимое для функционирования программы; язык программирования, на котором написана программа.
В разделе описания тестирования программы кратко описывается среда программирования. Приводятся основные команды, выполняемые при вводе и редактировании программы, перечисляются и описываются средства отладки.
1. РАЗРАБОТКА АЛГОРИТМА
1.1 Постановка задачи
Курсовой проект посвящен написанию игры «Пятнашки». Цель программы - обеспечить возможность игры в «Пятнашки».
Алгоритм передвижения основан на передвижении пустой клетки. То есть мы не обращаем внимание на фишки, а перемещаем пустую клетку туда, куда нужно поставить фишку. Волновой алгоритм обхода препятствий с применением регулярных последовательностей действий. Основные моменты на которые следует обратить внимание это: пустая клетка не двигается назад, не двигается на те позиции которые её нельзя перемещать.
Для достижения нужного места фишку нужно сначала поместить в нужную строку, затем в нужный столбец (либо с точностью до наоборот).
Язык С является транслируемым языком, также как Pascal и FORTRAN. Существуют также интерпретируемые языки, например, BASIC, и графические интерфейсно-ориентированные языки, такие как, например, Visual Basic. Процесс их использования несколько отличается. Процесс использования транслируемого языка является достаточно простым и практичным. Для общего предоставления о программировании, можно разбить процедуру написания программы на языке С на семь этапов. Это идеализация. На практике, особенно в случае крупных проектов, часто применяется другая схема.
Этап 1. Определение целей программы. На данном этапе создатель программы должен чётко определить, какие функции должна выполнять программа. На этом этапе также необходимо обдумать вычисления и манипуляции, которые программа должна выполнить, а также информацию, которую она должна возвратить. На этом уровне планирования необходимо мыслить в общих терминах, а не в терминах некоторого конкретного компьютерного языка.
Этап 2. Проектирование программы. После решения того, какие функции необходимо выполнять программе, необходимо решить, как она должна это сделать: каким должен быть пользовательский интерфейс, как должна быть организована эта программа, каковыми будут целевые пользователи, сколько времени потребуется для завершения разработки программы. Необходимо также решить, как представлять данные в программе и, возможно, во вспомогательных файлах, а также какие методы следует использовать для обработки данных. На начальном этапе изучения программирования в Си ответы на эти вопросы не вызывают затруднений, но в более сложной ситуации эти решения требуют учета множества обстоятельств. Правильный выбор способа представления информации может существенно облегчить разработку программы и обработку данных.
Стоит еще раз отметить, что следует мыслить общими категориями и не думать о конкретном коде, однако некоторые из решений могут быть основаны на общих характеристиках языка. Например, программист, работающий на Си, имеет гораздо больше вариантов представления данных, чем, скажем, программист, работающий с языком Pascal.
Этап 3. Написание кода. Когда создан проект программы, можно приступать к ее реализации, для чего необходимо написать программный код. Иначе говоря, проект программы переводится на язык С. Именно на этой стадии требуются знания языка С. Решения можно написать на бумаге, но в конечном итоге необходимо будет ввести составленный код в компьютер. Механика этого процесса зависит от среды программирования, в которой идёт работа. В общем случае используется текстовый редактор для построения так называемого файла исходного кода. Этот файл содержит интерпретацию проекта программы на языке С. На этом этапе можно также добавить комментарии к программе.
Этап 4. Компиляция. Следующим этапом разработки является компиляция исходного кода. И в этом случае детали зависят от среды программирования. Компилятор представляет собой программу, в обязанности которой входит преобразование исходного кода в исполняемый код. Исполняемый код -- это собственный язык машины, или машинный язык вашего компьютера. Этот язык из подробных команд, представленных в числовом коде. Разные компьютеры имеют разные машинные языки, а компилятор языка С транслирует код С в конкретный машинный язык. Компиляторы языка С вставляют также коды из библиотек программ на С в окончательный вариант программы; упомянутые библиотеки содержат комплект стандартных программ, например, printf() и scanf(), дабы, при необходимости, можно было ими воспользоваться. В конечном итоге получается исполняемый файл, который можно запускать на выполнение.
Компилятор проверяет также, не содержит ли ошибок программа на С. Когда компилятор находит ошибки, он уведомляет об их наличии и не создает исполняемый файл.
Этап 5. Запуск программы на выполнение. Как правило, исполняемый файл представляет собой программу, которую можно запускать на выполнение. Чтобы запустить программу, во многих известных средах, включая консоли MS-DOS, Unix, Linux, необходимо ввести с клавиатуры имя исполняемого файла. Другие среды, такие как система VMS на миникомпьютерах VAX, могут требовать ввода команды запуска или использования какого-либо другого механизма. Среды IDE (Integrated development environments -- интегрированная среда разработки), подобные тем, что поставляются для Windows и Macintosh, позволяют редактировать и выполнять программы на С внутри среды, выбирая соответствующие пункты меню или нажимая специальные клавиши. Полученная программа может быть запущена на выполнение непосредственно из операционной системы путем одиночного или двойного щелчка на имени файла или на соответствующей пиктограмме.
Этап 6. Тестирование и отладка программы. Если программа работает - это хорошо, но, тем не менее, есть вероятность, что она работает неправильно. Отсюда следует, что необходимо убедиться, что программа выполняет именно ожидаемые от неё действия. Достаточно часто в программах можно обнаружить ошибки. Отладка -- это процесс обнаружения и исправления программных ошибок. Допущение ошибок является естественной составляющей процесса программирования. Существует много возможностей совершить ошибку. Можно совершить принципиальную ошибку в проекте программы. Можно некорректно реализовать хорошую идею. Можно упустить из виду недопустимые входные данные, которые искажают программу. Можно неправильно использовать конструкции самого языка С. Можно допустить ошибки при наборе кода с клавиатуры. Можно неправильно расставить скобки. Способов много. Компилятор отслеживает многие виды ошибок, кроме того, Си даёт достаточно других возможностей для отслеживания ошибок.
Этап 7. Сопровождение и модификация программы. Часто появляются причины для внесения в готовую программу изменений. Это объясняется наличием ошибок в программе, либо желанием разработчика добавить в программу новые функциональные возможности, либо необходимостью адаптировать программу для выполнения в различных компьютерных системах. Решение задач подобного рода существенно упрощается, при четком документировании программы.
1.2 Описание алгоритма
Алгоритм передвижения основан на передвижении пустой клетки. То есть мы не обращаем внимание на фишки, а перемещаем пустую клетку туда, куда нужно поставить фишку. Волновой алгоритм обхода препятствий с применением регулярных последовательностей действий. Основные моменты на которые следует обратить внимание это: пустая клетка не двигается назад, не двигается на те позиции которые её нельзя перемещать. Для достижения нужного места фишку нужно сначала поместить в нужную строку, затем в нужный столбец (либо с точностью до наоборот).
2. РАЗРАБОТКА РАБОЧЕГО ПРОЕКТА
2.1 Описание логической структуры
Программа состоит из трёх модулей:
- главный модуль:
- модуль настроек игры:
- модуль подсказок:
В начале выполнения программы создаётся графическое окно. Затем при выборе пользователем соответствующих пунктов меню программа выполняет соответствующие действие: запускает игру, показывает настройки игры и инструкцию.
2.2 Входные данные
Входными данными являются настройки программы.
Главное окно программы представлено на рисунке 2.1
Рисунок 2.1 - Главное окно программы
Запуск игры представлен на рисунке 2.2.
Рисунок 2.2 - Запуск игры
2.3 Выходные данные
Выходными данными являются промежуточные результаты работы программы и итоговый результат.
Рисунок 2.3 - Пример выходных данных
2.4 Вызов и загрузка программы
Программа может быть загружена из командной строки (приложение Windows) или путем запуска EXE-файла из Windows.
После запуска программы перед пользователем появляется окно консольного приложения. Пользователю необходимо ввести все исходные данные и получить результат.
3. ТЕСТИРОВАНИЕ ПРОГРАММЫ
Для тестирования программа была запущена в среде Microsoft Windows XP SP2 кликом по иконке программы.
После запуска программы необходимо выбрать необходимый пункт меню (рисунок 3.1).
Рисунок 3.1 - Выбор пункта меню
Затем необходимо передвигать фишки в соответствии с правилами игры (рисунок 3.2).
Рисунок 3.2 - Ход игры
Результат игры представлен на рисунке 3.3.
Рисунок 3.8 - Результат игры
Как видно из рисунка 3.3, результатом игры стали правильно расставленные фишки.
4. ВНЕДРЕНИЕ
4.1 Условия выполнения программы
Программа может быть загружена из командной строки (приложение Windows) или путем запуска EXE-файла из Windows. Для успешного выполнения программы необходимо ввести невырожденную матрицу (определитель не равен нулю), в противном случае перемножение прямой и обратной матриц де даст в результате единичной матрицы.
4.2 Сообщения оператору
После запуска программы необходимо выбрать соответствующий пункт меню и поступать по правилам игры.
Доступные в программе возможности:
- игра;
- автоигра;
- настройка;
- случайный расклад;
- просмотр пояснения;
ЗАКЛЮЧЕНИЕ
В данной курсовой работе был рассмотрен процесс создания компьютерной программы на языке С. В результате выполнения задания была создана рабочая программа для среды Microsoft Windows, были приобретены навыки создания алгоритмов, изучены основы алгоритмизации и основы языка С, приобретены навыки работы с различными типами данных, освоена специфика работы в среде программирования.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Прата Стивен. Язык программирования С. Лекции и упражнения, 5-е издание. : Пер. с англ. - М.: Издательский дом «Вильямс», 2006. - 960 с. : с ил. - Парал. Тит. Англ.
2. Аксёнкин М.А., Целобёнок О.Н. Язык С. - Мн. : Унiверсiтэцкае, 1995. - 302 с.
3. Громов Ю.Ю.,Татаренко С.И. Программирование на языке СИ: Учебное пособие. - Тамбов, 1995.- 169 с.
4. Мартынов Н. Н. Программирование для Windows на C/C++. - М.: Издательство «БИНОМ», т. 1, 2004; т. 2, 2005
Размещено на http://www.allbest.ru/
Приложение А
Блок-схема программы
Размещено на http://www.allbest.ru/
17
Приложение Б
Текст программы
Fifteen.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USEFORM("fifth_unit.cpp", fifth);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(Tfifth), &fifth);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
fifth_unit.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "fifth_unit.h"
#include "Unit_nastr.h"
#include "Unit_instr.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
Tfifth *fifth;
//---------------------------------------------------------------------------
__fastcall Tfifth::Tfifth(TComponent* Owner)
: TForm(Owner)
{
X_old=-1; Y_old=-1;
X_new=0; Y_new=0;
i_tec=0; j_tec=0;
Fish = false;
Stop = false;
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::PanelClick(TObject *Sender)
{
MovePan(Sender); //Переместить фишку
Show(); //отразить
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::FormCreate(TObject *Sender)
{
Init();
Show();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Init()
{//Инициализация матрицы
int idx = 1;
for (char i=0; i<4; i++)
for (char j=0; j<4; j++)
{ Mat[i][j] = idx;
Res[i][j] = idx;
Mat_Stop[i][j] = false; idx++;
}
Mat[3][3] = ""; Res[3][3] = "";
char i1, i2, j1, j2;
AnsiString Cap;
randomize();
for (idx=0; idx<30; idx++)
{
i1=char(random(4)); j1=char(random(4));
i2=char(random(4)); j2=char(random(4));
Cap = Mat[i1][j1];
Mat[i1][j1] = Mat[i2][j2];
Mat[i2][j2] = Cap;
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::MovePan(TObject *Sender)
{ //Переместить фишку при нажатии на кнопку
AnsiString Na = ((TPanel*)Sender)->Name;
AnsiString A, B;
A = Na[Na.Length()-1];
B = Na[Na.Length()];
int Mark, i=A.ToInt(), j=B.ToInt();
//Просмотр куда можно переместить
Mark = i-1; //Влево
if (Mark>=0 && Mark<=3){
if(Mat[Mark][j] == ""){
Mat[Mark][j]=Mat[i][j];
Mat[i][j]=""; return;
}
}
Mark = i+1; //Вправо
if (Mark>=0 && Mark<=3){
if(Mat[Mark][j] == ""){
Mat[Mark][j]=Mat[i][j];
Mat[i][j]=""; return;
}
}
Mark = j+1; //Вверх
if (Mark>=0 && Mark<=3){
if(Mat[i][Mark] == "" ){
Mat[i][Mark]=Mat[i][j];
Mat[i][j]=""; return;
}
}
Mark = j-1; //Вниз
if (Mark>=0 && Mark<=3){
if(Mat[i][Mark] == ""){
Mat[i][Mark]=Mat[i][j];
Mat[i][j]=""; return;
}
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Show()
{ //Отразить
Panel00->Caption = Mat[0][0];
Panel01->Caption = Mat[0][1];
Panel02->Caption = Mat[0][2];
Panel03->Caption = Mat[0][3];
Panel10->Caption = Mat[1][0];
Panel11->Caption = Mat[1][1];
Panel12->Caption = Mat[1][2];
Panel13->Caption = Mat[1][3];
Panel20->Caption = Mat[2][0];
Panel21->Caption = Mat[2][1];
Panel22->Caption = Mat[2][2];
Panel23->Caption = Mat[2][3];
Panel30->Caption = Mat[3][0];
Panel31->Caption = Mat[3][1];
Panel32->Caption = Mat[3][2];
Panel33->Caption = Mat[3][3];
TPanel *pPan;
for (int i=0; i<16; i++)
{
pPan = (TPanel *)fifth->Components[i];
if(pPan->Caption=="") //Нет названия - "утопить"
{ pPan -> BevelOuter = bvNone; }
else
{ pPan -> BevelOuter = bvRaised; }
}//for
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Poloj(AnsiString Znach)
{ //Определение положения
int i,j;
bool Ok=false;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
if(Mat[i][j]==Znach) {Ok=true; break;}
if (Ok==true) break;
}
iCl = i; jCl = j;
Mat_Stop[iCl][jCl] = true;
//Положение пустой клетки
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(Mat[i][j]=="") {X=i; Y=j;}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::New_Coord()
{ //куда переместить пустую клетку
if(iCl>i_new && Mat_Stop[iCl-1][jCl]==false)
{ X_new=iCl-1; Y_new=jCl; return; }//Внизу нужной
if(iCl<i_new && Mat_Stop[iCl+1][jCl]==false)
{ X_new=iCl+1; Y_new=jCl; return; }//Вверху нужной
if(jCl>j_new && Mat_Stop[iCl][jCl-1]==false)
{ X_new=iCl; Y_new=jCl-1; return; }//Слева нужной
if(jCl<j_new && Mat_Stop[iCl][jCl+1]==false)
{ X_new=iCl; Y_new=jCl+1; return; }//Справа нужной
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Dvig_Fish(int x1, int y1, int x2, int y2)
{//Смена фишек местами
AnsiString S = Mat[x1][y1];
Mat[x1][y1] = Mat[x2][y2];
Mat[x2][y2] = S;
}
//---------------------------------------------------------------------------
bool __fastcall Tfifth::Perem()
{//Перемещение пустой клетки
int Mark=-1;
if((X>X_new) && (X-1!=X_old)) Mark = X-1;
if((X<X_new) && (X+1!=X_old)) Mark = X+1;
if ((Mark >= 0 && Mark <= 3) && (Mark!=X && Mat_Stop[Mark][Y] == false)) //Перестановка по горизонтали
{ Dvig_Fish(X,Y, Mark,Y); X_old=-1; Y_old=-1;
X=Mark; return true;
}
Mark=-1;
if((Y>Y_new) && (Y-1!=Y_old)) Mark = Y-1;
if((Y<Y_new) && (Y+1!=Y_old)) Mark = Y+1;
if ((Mark >= 0 && Mark <= 3) && (Mark!=Y && Mat_Stop[X][Mark] == false)) //Перестановка по вертикали
{ Dvig_Fish(X,Y, X,Mark); X_old=-1; Y_old=-1;
Y=Mark; return true;
}
return false;
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Perem_New()
{ //перемещение куда можно
int Mark=X+1;
if((Mark>=0 && Mark<=3) && (Mat_Stop[Mark][Y]==false && Mark!=X_old)) //Вниз
{
Dvig_Fish(X,Y, Mark,Y);
X_old=X; Y_old=Y; X=Mark; return;
}
Mark=X-1;
if((Mark>=0 && Mark<=3) && (Mat_Stop[Mark][Y]==false && Mark!=X_old)) //Вверх
{
Dvig_Fish(X,Y, Mark,Y);
X_old=X; Y_old=Y; X=Mark; return;
}
Mark=Y+1;
if((Mark>=0 && Mark<=3) && (Mat_Stop[X][Mark]==false && Mark!=Y_old)) //Вправо
{
Dvig_Fish(X,Y, X,Mark);
X_old=X; Y_old=Y; Y=Mark; return;
}
Mark=Y-1;
if((Mark>=0 && Mark<=3) && (Mat_Stop[X][Mark]==false && Mark!=Y_old)) //Влево
{
Dvig_Fish(X,Y, X,Mark);
X_old=X; Y_old=Y; Y=Mark; return;
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::DvigClick(TObject *Sender)
{
if(Stop == true) return;
if(i_tec>=2) {
SetDown();
// j_tec=0;
return;}
if(j_tec>4){ i_tec++; j_tec=0; Fish=false; return; }
Poloj(Res[i_tec][j_tec]);
i_new=i_tec; j_new=j_tec;
New_Coord();
if(j_tec==2 && Fish==false)
{ Mat_Stop[iCl][jCl]=false; Out_Old(); return;}//Исключение неверной ситуации
if(j_tec==2) {Fish_Three(); return;}
if(j_tec==3) {Fish_Foo(); return;}
if(j_tec==4) {Sort_Str(); return;}
if(j_tec>=2) return;
if(iCl==i_new && jCl==j_new) {j_tec++; return; }
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
Poloj(Res[i_tec][j_tec]);
return;
}
if (Perem()==false) Perem_New();
Show();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Fish_Three()
{//Передвижение 3 и 7
Poloj(Res[i_tec][j_tec]);
i_new=i_tec; j_new=j_tec+1;
New_Coord();
if(iCl==i_new && jCl==j_new) {j_tec++; return; }
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
Poloj(Res[i_tec][j_tec]);
return;
}
if (Perem()==false) Perem_New();
Show();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Fish_Foo()
{//Передвижение 4 и 8
Poloj(Res[i_tec][j_tec]);
i_new=i_tec+1; j_new=j_tec;
New_Coord();
if(iCl==i_new && jCl==j_new) {j_tec++; return; }
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
Poloj(Res[i_tec][j_tec]);
return;
}
if (Perem()==false) Perem_New();
Show();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Sort_Str()
{ //Сборка строки
Mat_Stop[i_tec][2] = false;
X_new=i_tec; Y_new=2;
if (Perem()==false) Perem_New();
Show();
if(X==X_new && Y==Y_new){
Dvig_Fish(i_tec, 3, X,Y); X=i_tec; Y=3;
Mat_Stop[i_tec][2] = true;
Show();
Dvig_Fish(i_tec+1, 3, X,Y);
Mat_Stop[i_tec+1][3] = false;
Show();
i_tec++; j_tec=0; Fish=false;
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Out_Old()
{//Исключение неопределенной ситуации
Poloj(Res[i_tec][3]);
Fish = false;
if(iCl==3 && jCl==0) {
Mat_Stop[3][0] = false;
Fish=true; return; }
else{
i_new=3; j_new=0;
New_Coord();
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
return;
}
if (Perem()==false) Perem_New();
Show();
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::OutNine(int FX, int FY, int NeX, int NeY)
{ //Исключение неопредленной ситуации с 9 и 11
Poloj(Res[FX][FY]);
if(iCl==NeX && jCl==NeY) {
Mat_Stop[NeX][NeY] = false;
j_tec++; return; }
else{
i_new=NeX; j_new=NeY;
New_Coord();
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
return;
}
if (Perem()==false) Perem_New();
Show();
}
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::Set13(int FX, int FY, int NeX, int NeY)
{//Установка 13 фишки
Poloj(Res[FX][FY]);
i_new=NeX; j_new=NeY;
New_Coord();
if(iCl==i_new && jCl==j_new){ j_tec++; return; }
if(X==X_new && Y==Y_new){
Mat_Stop[iCl][jCl] = false;
Dvig_Fish(iCl,jCl, X,Y);
Show();
Poloj(Res[FX][FY]);
return;
}
if (Perem()==false) Perem_New();
Show();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::SetDown()
{
//Расстановка нижних 2-х рядов
if(Stop == true) return; //Если выставленно
if(j_tec==0) {OutNine(2,0, 3,3); return; } //9 на позиц. пустой
if(j_tec==1) {Set13(3,0, 2,0); return;} //13 на поз 9
if(j_tec==2) {Set13(2,0, 2,1); return;} //9 на поз 10
if(j_tec==3) {Set13(3,0, 3,0); return; } //13 и 9 на места
if(j_tec==4) {Set13(2,0, 2,0); return; }
if(j_tec==5) {OutNine(2,2, 2,1); return; } //11 на 10
if(j_tec==6) {Set13(2,1, 3,3); return;} //Установка 10 на пустую
if(j_tec==7) {Set13(2,2, 3,2); return;} //Установка 11 на поз 15
if(j_tec==8) {Set13(2,1, 2,3); return;} //Установка 10 на позицию 12
if(j_tec==9) {Set13(2,2, 3,3); return;} //Установка 11 на пустую
if(j_tec==10) {Set13(2,3, 3,2); return;} //12 на 15
if(j_tec==11){Set13(2,1, 2,2); return;} //10 на 11
if(j_tec==12){Set13(2,2, 2,3); return;} //11 на 12
if(j_tec==13){Set13(2,3, 3,3); return;} //12 на пусто
if(j_tec==14){Set13(2,1, 2,1); return;} //10 на 11
if(j_tec==15){Set13(2,2, 2,2); return;} //11 на 12
if(j_tec==16){Set13(2,3, 2,3); return;} //12 на пусто
Stop = true;
Application->MessageBox("Фишки расставленны", "Конец", MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::N4Click(TObject *Sender)
{
Init();
Show();
X_old=-1; Y_old=-1;
X_new=0; Y_new=0;
i_tec=0; j_tec=0; Fish = false;
Stop = false;
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::N5Click(TObject *Sender)
{//Выход из программы
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::N7Click(TObject *Sender)
{
Timer->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::N3Click(TObject *Sender)
{
ShowMessage("Курсовой проект Игра Пятнашки");
}
//---------------------------------------------------------------------------
void __fastcall Tfifth::TimerTimer(TObject *Sender)
{
if(Stop==true) Timer->Enabled = false;
DvigClick(Sender);
}
//---------------------------------------------------------------------------
Приложение В
Результаты выполнения программы
Размещено на http://www.allbest.ru/
Подобные документы
Составление программы, с помощью которой пользователь может получать статистические сведения о текстовой информации. Для разработки программы использовался язык С++ и среда программирования Borland C++ Builder 6. Постановка задачи и описание ее решения.
курсовая работа [1,6 M], добавлен 03.07.2011"Пятнашки" на первый взгляд простая игра, но для ее реализации необходимо обратится ко всем разделам программирования в среде Турбо Паскаль. Назначение и область применения. Описание алгоритма программы. Программное и аппаратное обеспечение программы.
курсовая работа [308,0 K], добавлен 04.07.2008История развития Visual Basic, его преимущества и недостатки. Игра "Пятнашки" как классическая задача для моделирования эвристических алгоритмов. Разновидности и вариации игры. Разработка проекта в Visual Basic, который представляет собой игру "Пятнашки".
курсовая работа [5,7 M], добавлен 15.05.2014Работа в Borland C++ Builder. Среда разработки и компоненты C++ Builder. Свойства компонентов. Менеджер проектов. Создание приложений в C++ Builder. Выбор компонентов для групповых операций. Работа с базами данных в Borland C++ Builder.
курсовая работа [35,8 K], добавлен 11.06.2007Разработка программы в среде программирования Borland Pascal, которая является электронным тестирующим пособием в области химии для 8-10 классов. Написание алгоритма решения задачи, определение необходимых функций, процедур, модулей, файловых переменных.
контрольная работа [389,3 K], добавлен 19.09.2010Понятие алгоритма, свойства, история его исследования. Метод генерации случайных чисел. Концепция (теория) экспертных систем. Нерешаемая комбинация, предложенная Ноем Чепменом. Сущность и цель игры "пятнашки". Моделирование эвристических алгоритмов.
курсовая работа [339,5 K], добавлен 08.04.2014Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.
курсовая работа [571,9 K], добавлен 14.07.2012Технология программирования, основные этапы развития. База данных, понятие,характеристика, основные типы баз. Действие и структура программы С++. Процесс подготовки и решения задач на компьютерах. Написание и отладка программы на языке программирования.
курсовая работа [32,8 K], добавлен 26.01.2011Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы.
курсовая работа [19,5 K], добавлен 19.05.2011Этапы написания программы на четырех языках программирования (Turbo Pascal 7.0, Borland C++ 3.11, Delphi 7, Builder C++ 6.0), которая выводит на экран имя и фамилию студента, используя стандартные средства графики и простейшие геометрические фигуры.
контрольная работа [1,4 M], добавлен 05.06.2010