Вечер добрый ) у меня к общественности большая просьба, без помощи настоящих программистов мне не обойтись...
Суть дела вот в чем: у меня курсовик на тему: разработка игры "Реверси". Имеется код этой игры на С++. Я прошу помочь разобраться в каждой строке программы, ибо я полный нуб.
И вообще самый первый вопрос: какой проект мне нужно создать, чтобы окно с игрой открылось?
Вот сам код:
Код:
#include <windows.h>
#pragma hdrstop
bool player;
typedef unsigned char uchar;
uchar board[8][8];
void* pboard;
#pragma argsused
BOOL WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
randomize();
return true;
}
//---------------------------------------------------------------------------
extern "C" __export void __fastcall InitBoard(bool pl, void* nboard)
{
player=pl;
pboard=nboard;
}
//---------------------------------------------------------------------------
bool __fastcall CanMove(int x,int y)
{
if(board[x][y]!=2)
return false;
bool curcolor = player, oppcolor = 1-player;
if(x<7&&board[x+1][y]==oppcolor)
for(int i=x+2;i<8;i++)
if(board[i][y]==curcolor) return true;
else if(board[i][y]==2) break;
if(x>0&&board[x-1][y]==oppcolor)
for(int i=x-2;i>=0;i--)
if(board[i][y]==curcolor) return true;
else if(board[i][y]==2) break;
if(y<7&&board[x][y+1]==oppcolor)
for(int i=y+2;i<8;i++)
if(board[x][i]==curcolor) return true;
else if(board[x][i]==2) break;
if(y>0&&board[x][y-1]==oppcolor)
for(int i=y-2;i>=0;i--)
if(board[x][i]==curcolor) return true;
else if(board[x][i]==2) break;
if(x<7&&y<7&&board[x+1][y+1]==oppcolor)
for(int i=x+2,j=y+2;i<8&&j<8;i++,j++)
if(board[i][j]==curcolor) return true;
else if(board[i][j]==2) break;
if(x>0&&y>0&&board[x-1][y-1]==oppcolor)
for(int i=x-2,j=y-2;i>=0&&j>=0;i--,j--)
if(board[i][j]==curcolor) return true;
else if(board[i][j]==2) break;
if(x>0&&y<7&&board[x-1][y+1]==oppcolor)
for(int i=x-2,j=y+2;i>=0&&j<8;i--,j++)
if(board[i][j]==curcolor) return true;
else if(board[i][j]==2) break;
if(x<7&&y>0&&board[x+1][y-1]==oppcolor)
for(int i=x+2,j=y-2;i<8&&j>=0;i++,j--)
if(board[i][j]==curcolor) return true;
else if(board[i][j]==2) break;
return false;
}
//---------------------------------------------------------------------------
int __fastcall GetPlacesToSet(int *xs, int *ys)
{
int num=0;
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
if(CanMove(i,j))
{
xs[num]=i;
ys[num++]=j;
}
return num;
}
//---------------------------------------------------------------------------
extern "C" __export void __fastcall ComputerMove(int &x, int &y)
{
CopyMemory(board,pboard,sizeof(board)); //Копирую доску для её использования
int *xs=new int[64],*ys=new int[64],*pls=new int[64],n;
n=GetPlacesToSet(xs,ys); //Получаю места, куда можно поставить фишку (n - количество мест)
if(n==0) //Если мест нет, то
{
delete [] xs; //Удаляем переменные,
delete [] ys;
delete [] pls;
x=-1; //Устанавливаем значения позиции, куда поставить в -1
y=-1;
return; //Завершаем работу.
} //Иначе
n=random(n); //Получаем случайную позицию (это самый простой вариант игры компьютера)
x=xs[n]; //Получаем координату x
y=ys[n]; //Получаем координату y
delete [] xs; //Удаляем переменные
delete [] ys;
delete [] pls;
} //Завершаем работу.
//---------------------------------------------------------------------------
extern "C" __export void __fastcall GetLibraryInformation(int &level,char* &author,char* &releaseday,char* &version,int &build)
{
level=0;
author="Янкин Н.В.";
releaseday="01/09/2002";
version="1.0.0";
build=1;
}
//---------------------------------------------------------------------------
Заранее благодарю за помощь