Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу C++
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Артём Фирсанов Артём Фирсанов вне форума
Member
 
Сообщений: 348
Сказал(а) спасибо: 26
Поблагодарили 5 раз(а) в 5 сообщениях
Регистрация: 19.08.2010
По умолчанию C++ - 27.01.2013, 14:09

Всем привет.
Помогите пожалуйста разобраться с тем что происходит в программе и соответственно откоментить ее, никак немогу разобраться с ней.
Заранее спасибо, благодарен за любую помощь.
cpp Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <math>
#include <stdlib>
#pragma hdrstop

#include "u15.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tf15 *f15;

int scale=65;

int nums[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

bool PoleComplete()
{
int i,j,k=1;
bool isTrue=true;
for (i=1;i<5;i++)
 for (j=1;j<5;j++,k++)
 {
  if (pole[j][i]!=k) isTrue=false;
 };
return (isTrue);
};
//---------------------------------------------------------------------------
void ClickOnNumber(int x,int y)
{
int i,j,k,l,clip;
if  (x>scale*4 || y>scale*4) return;
if (x>scale*3)
i=4;
else if (x>scale*2)
i=3;
else if (x>scale)
i=2;
else
i=1;
//---------------------------------------------------------------------------
if (y>scale*3)
j=4;
else if (y>scale*2)
j=3;
else if (y>scale)
j=2;
else
j=1;
//---------------------------------------------------------------------------
if (pole[i-1][j]==16)
{
 clip=pole[i][j];
 pole[i][j]=pole[i-1][j];
 pole[i-1][j]=clip;
}
else if (pole[i+1][j]==16)
{
 clip=pole[i][j];
 pole[i][j]=pole[i+1][j];
 pole[i+1][j]=clip;
}
else if (pole[i][j-1]==16)
{
 clip=pole[i][j];
 pole[i][j]=pole[i][j-1];
 pole[i][j-1]=clip;
}
else if (pole[i][j+1]==16)
{
 clip=pole[i][j];
 pole[i][j]=pole[i][j+1];
 pole[i][j+1]=clip;
};
ClearScr();
DrawPole();
};
//---------------------------------------------------------------------------
void ClearScr()
{
TRect rct;
rct.Left=0;
rct.Top=0;
rct.Right=f15->Width;
rct.Bottom=f15->Height;
f15->Canvas->FillRect(rct);
};
//---------------------------------------------------------------------------
void unSortNums()
{
 int i,j,k;
 f15->prog1->Position=1;
 f15->lProg->Caption="Начало генерации...";
 f15->prog1->Refresh();
 for (i=1;i<17;i++)
 {
 f15->lProg->Caption="Генерируется расположение клеток...";
 f15->prog1->Position+=4;
 f15->Refresh();
 randomize();
 j=random(16)+1;
 if (nums[j]!=nums[i-1]+1)
 {
 k=nums[i];
 nums[i]=nums[j];
 nums[j]=k;
 }
 else
 i--;
 };
 f15->prog1->Position+=2;
 f15->prog1->Refresh();
 f15->Refresh();
 k=1;
 for (i=1;i<5;i++)
 for (j=1;j<5;j++,k++)
 {
f15->lProg->Caption="Клетки заполняются...";
f15->prog1->Position+=4;
f15->prog1->Refresh();
f15->Refresh();
 pole[i][j]=nums[k];  
 };
f15->lProg->Caption="Конец генерации...";
f15->prog1->Position+=2;
f15->prog1->Refresh();
};
//---------------------------------------------------------------------------
void DrawPole()
{
ClearScr();
f15->Canvas->Pen->Color=clGreen;
f15->Canvas->Pen->Width=5;
f15->Canvas->Font->Size=16;
for (int i=1;i<5;i++)
{
f15->Canvas->MoveTo(0,scale*i);
f15->Canvas->LineTo(scale*4,scale*i);
f15->Canvas->MoveTo(scale*i,0);
f15->Canvas->LineTo(scale*i,scale*4);
};
for (int i=0;i<4;i++)
 for (int j=0;j<4;j++)
 if (pole[i+1][j+1]!=16)
  f15->Canvas->TextOutA(i*scale+25,j*scale+20,pole[i+1][j+1]);
};
//---------------------------------------------------------------------------
//******************************************
//******************************************
//******************************************
__fastcall Tf15::Tf15(TComponent* Owner)
        : TForm(Owner)
{
 unSortNums();
}
//---------------------------------------------------------------------------



void __fastcall Tf15::Button1Click(TObject *Sender)
{
 unSortNums();
 DrawPole();
}
//---------------------------------------------------------------------------


void __fastcall Tf15::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
ClickOnNumber(X,Y);
if (PoleComplete())
{
Application->MessageBoxA("YoU@WiN!!!","EnD oF G@mE!!!",mbOK);
Close();
};
}
//---------------------------------------------------------------------------



void __fastcall Tf15::FormPaint(TObject *Sender)
{
ClearScr();
DrawPole();
}
//---------------------------------------------------------------------------
Ответить с цитированием
  (#2 (permalink)) Старый
wanja wanja вне форума
Member
 
Сообщений: 589
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 08.05.2005
По умолчанию 28.01.2013, 09:39

Это не программа, это модуль.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов