黑白棋樣例程式及注釋解析(無決策演算法)

2021-08-09 16:11:26 字數 1900 閱讀 8395

// 黑白棋(reversi)樣例程式

// 隨機策略

// 遊戲資訊:

#include

#include

#include

#include

#include "jsoncpp/json.h" // c++編譯時預設包含此庫

using

namespace

std;

int currbotcolor; // 我所執子顏色(1為黑,-1為白,棋盤狀態亦同)

int gridinfo[8][8] = ; // 先x後y,記錄棋盤狀態

int blackpiececount = 2, whitepiececount = 2;

// 向direction方向改動座標,並返回是否越界 這個是八個方向上的

inline

bool movestep(int &x, int &y, int direction) //注意:這裡呼叫一次move,x,y也相應移動了一步

// 在座標處落子,檢查是否合法(八個方向有乙個方向是可以夾住對方子的)或模擬落子

bool procstep(int xpos, int ypos, int color, bool checkonly = false)

if (gridinfo[x][y] == -color) //移動一下還是對方棋子那就對方棋子個數加1,把對方的個數和位置記下來儲存到effectivepoints陣列上

else

if (gridinfo[x][y] == 0) //沒有棋子

else

//這種情況指的是這個棋子是我方,那麼計數器就不置0了,直接跳出,這時已經是我方棋子夾住了currcount多的敵方棋子

}if (currcount != 0)

else

//白棋

while (currcount > 0) //這裡把加在中間的對方棋子翻轉過去}}

if (isvalidmove) //如果這個地方是合法的座標,那麼下面就對這盤棋的黑白進行改變+1

else

return

false;

} // 檢查color方有無合法棋步

bool checkifhasvalidmove(int color)

int main()

// 看看自己本回合輸入

x = input["requests"][turnid]["x"].asint();

y = input["requests"][turnid]["y"].asint();

if (x >= 0)

procstep(x, y, -currbotcolor); // 模擬對方落子

// 找出合法落子點

int possiblepos[64][2], poscount = 0, choice;

for (y = 0; y < 8; y++)

for (x = 0; x < 8; x++) //遍歷棋盤找出可以落子的點,

if (procstep(x, y, currbotcolor, true))

// 做出決策(你只需修改以下部分)

int resultx, resulty;

if (poscount > 0)

else

// 決策結束,輸出結果(你只需修改以上部分)

json::value ret;

ret["response"]["x"] = resultx;

ret["response"]["y"] = resulty;

json::fastwriter writer;

cout

<< writer.write(ret) << endl; //這是電腦上的決定

return

0; }

黑白棋遊戲程式

include include include include include include using namespace std int qi 8 8 define size 8 void display char board size return no of moves void make...

黑白棋遊戲

黑白棋遊戲 time limit 10000ms memory limit 65536k total submit 9 accepted 5 case time limit 1000ms description 問題描述 黑白棋遊戲的棋盤由4 4方格陣列構成。棋盤的每一方格中放有1枚棋子,共有8枚白...

黑白棋遊戲

用c 封裝了一下,只完成了乙個雛形,有很多功能沒有新增上,但 的行數已經縮短了很多了。include include include includeusing namespace std class chess int counter 計數器,計算棋子個數 const friend void dra...