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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 00:13   #1
CD-RW
Новичок
Джуниор
 
Регистрация: 28.03.2010
Сообщений: 1
По умолчанию разработка игры "Реверси". Имеется код этой игры на С++

Вечер добрый ) у меня к общественности большая просьба, без помощи настоящих программистов мне не обойтись...
Суть дела вот в чем: у меня курсовик на тему: разработка игры "Реверси". Имеется код этой игры на С++. Я прошу помочь разобраться в каждой строке программы, ибо я полный нуб.
И вообще самый первый вопрос: какой проект мне нужно создать, чтобы окно с игрой открылось?
Вот сам код:
Код:
#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;
}
//---------------------------------------------------------------------------
Заранее благодарю за помощь
CD-RW вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код игры Арканоид Mclaren Софт 6 21.05.2009 20:58
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Разработка онлайн игры - требуются delphi программисты Gucha Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 21.09.2008 15:35