// 黑白棋(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...