Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 12:02   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Не корректно работает программа.С++Builder

Помогите пожалуйста,почему не переставляются элементы(Игра15)С++Builder.
Код:
#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#define WC 72 //Размер клеток 72*72
#define HC 72
//---------------------------------------------------------------------------
pole[4][4];//Игровое поле
byte ex,ey;// Пустая клетка
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Form1->Font->Size = 12;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
NewGame();                        //новая игра
}
void __fastcall TForm1::NewGame()
{
ClientWidth=WC * 4;             //Устанавливаем размеры формы
ClientHeight=HC * 4;
int k = 1;
 for (int i =0;i<4;i++)
   for (int j=0;j<4;j++)
     pole[i][j]=k++;
Mixer();                       //Перемешиваем фишки
ShowPole();                     //Отображаем игровое поле
}

void __fastcall TForm1::Mixer()
{
int x1,y1;//пустая клетка
int x2,y2;
int d;   //Направление относительно пустой клетки
Randomize();
x1 = 3; y1 = 3;
for(int i = 0; i < 150; i++)
{
 do
  {
   x2 = x1;
   y2 = y1;
   d= RandomRange(1,5);
switch( d ) {
case 1: x2--; break;
case 2: x2++;break;
case 3: y2--; break;
case 4: y2++;break;
}
}
while((x2 < 0) || (x2 >= 4)||(y2 < 0) ||(y2 >=4));
pole[y1][x1]=pole[y2][x2];
pole[y2][x2] = 16;
x1 = x2;y1 = y2;
};
ex = x1;
ey=y1;
}
//Отображает поле на поверхности формы
void __fastcall TForm1::ShowPole()
{
int x,y;
for (int i = 0; i < 4; i++)
 for (int j = 0; j < 4; j++)
   {
    x= j * HC;
    y= i * WC;
if(pole[i][j] != 16 )
{
Canvas->Brush->Color = clBtnFace;
Canvas->Rectangle(x,y, x+WC-1,y+HC-1);
Canvas->TextOutA(x+15,y+10,IntToStr(pole[i][j]));
}
else {
Canvas->Brush->Color = clWhite;
Canvas->Rectangle(x,y,x+WC-1,y+HC-1);
}
}
}
bool Finish();

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  TShiftState Shift, int X, int Y)
{
int cx,cy;
ex= X / WC;
cy = Y / HC;
if( (fabs(cx-ex)==1 && cy-ey==0 )||( fabs(cy-ey)==1 && cx-ex==0 ))
{
pole[ey][ex]=pole[cy][cx];
pole[cy][cx]=16;
ex=cx;
ey=cy;
ShowPole();
if (Finish())
{
ShowPole();
int r = MessageDlg("Цель достигнута!\Попробовать еще раз ?",mtInformation, TMsgDlgButtons() << mbYes<<mbNo, 0);
if(r == mrNo)
Form1->Close();
else
 {
  NewGame();
  ShowPole();
 }
}
}
}
bool Finish()
{
  bool result;
  int row, col;
  int k =1;
  result = true;
for(row=0;row<4;row++)
{
 for(col=0;col<4;col++)
  if(pole[row][col] ==k)
  k++;
else
{
result=false;
break;
}
if(!result)
break;
}
return(result);
};

//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
ShowPole();
}
//---------------------------------------------------------------------------
spectrum988 вне форума Ответить с цитированием
Старый 17.04.2014, 12:17   #2
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Вот архив с программойИгра 15.rar
spectrum988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа не корректно работает на других компьютерах Elloriane Общие вопросы C/C++ 6 22.05.2013 08:06
Не корректно работает программа,посмотрите yurok25 Общие вопросы C/C++ 2 14.05.2012 20:12
Не корректно работает программа в определенном каталоге. VladimirNew БД в Delphi 4 27.02.2012 07:02
Не совсем корректно работает программа alexchromets Помощь студентам 2 26.12.2010 19:45
Программа работает не корректно Neymexa Общие вопросы C/C++ 5 24.12.2008 19:17