Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/43: Рейтинг темы: голосов - 43, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 3
1

Игра Реверси

28.03.2010, 12:10. Показов 8398. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый ) у меня к общественности большая просьба, без помощи настоящих программистов мне не обойтись...
Суть дела вот в чем: у меня курсовик на тему: разработка игры "Реверси". Имеется код этой игры на С++. Я прошу помочь разобраться в каждой строке программы, ибо я полный нуб.
И вообще самый первый вопрос: какой проект мне нужно создать, чтобы окно с игрой открылось?
Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#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;
}
//---------------------------------------------------------------------------
Заранее благодарю за помощь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2010, 12:10
Ответы с готовыми решениями:

Реверси
Помогите пожалуйста! У кого есть исходник для консольного вида? очень срочно нужен

Разработать программу игры в реверси
Разработать программу игры в реверси для игрока и компьютера. Поле игры имеет размер 10х10 ячеек....

Розробка логічної гри "реверси" С++
Помогите разобраться в коде: #include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;stack&gt; using...

Разобраться с кодом "Реверси"
Помжіть розібратися з кодом на С++ #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;iostream&gt;...

3
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 9
03.03.2015, 17:34 2
Привет. Ти писал курсовую на тему реверси.
У меня такая ж тема.
можеш подсказать штото, хотя би з чево начать?
Буду благодарен
0
Raali
03.03.2015, 18:18
  #3

Не по теме:

Я прошу помочь разобраться в каждой строке программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 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;
да тут по-моему был использован соурс код обфускатор, так что увы (

0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 9
09.05.2015, 13:54 4
Raali, Привет, в тебе йде етот код?
0
09.05.2015, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2015, 13:54
Помогаю со студенческими работами здесь

Игра слов, игра Scrabble
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра...

Игра Кости, игра с компьютером
Всем привет! Делаю консольную игру Кости. Условия такие: 1) Перед игрой все игроки бросают...

Игра реверси на MFC
Здорова! Есть консольная версия игры реверси, когда то давно делал, а щас от как будет время...

Игра Реверси: проблемы с отрисовкой в программе
Пытаюсь написать игру Реверси. Но вот уже долго бьюсь над одной проблемой: глючит графика..или вся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru