哈哈哈哈,作為乙個大一剛剛接觸c語言程式設計的小白還是有點興奮,第一次在csdn上寫部落格。話說其實在入大學之前完全完全沒有想過要進入軟體工程這個專業,當時還報了(西班牙語...)。但是其實也很喜歡這個專業,誰小時候沒有乙個黑客夢或者做做自己的小遊戲呢?
以前初中的時候沒事幹和同學下五子棋,後來覺得無聊就一起想了乙個棋類遊戲(我將其命名為:戰略棋)。drang,drang!
遊戲規則:
自己任取兩個對角開始下,下一步只能在存在自棋子周圍的8個方格下棋。
下的棋子會將其周圍的8個對手已下的棋子轉換成自己的棋子。
直到所有的格仔下滿,即為勝利。
(注意不要下在同乙個地方,好像這個bug沒有改....)(還有有個橡皮檫功能被擦除)
還有遊戲會出現以下死局:
空的地方白色就不能下了,因為不符合緊鄰這個條件。
運算元的時候就計為黑色。
(畢竟是第一次寫這些tat,下次加油把這些都改好!)
下面是**:
#include #include #include #include #define maxlen 11//棋盤大小;
#define core 26//總子數;
typedef struct posy
pos;
pos loc[core];//注意下標是從1開始記錄的;
int cx, cy;
int offset=1;//換出手方;(回合數)
int count(int m);//記棋子數;
int record(int count,int count1,int l,int k);
void table (int count,int count1);
int put(int count,int count1);
void search();//黑白翻轉;
int judge(int count,int count1);
int main ()
input=getch();//等待鍵盤按下乙個字元
if(input==0xe0)//如果按下的是方向鍵,會填充兩次輸入,第一次為0xe0(這裡是asc碼的擴充套件表)表示按下的是控制鍵【方向鍵記錄】
if(cy>maxlen) cy-=maxlen;
if(cx>maxlen) cx-=maxlen;
if(cy<0) cy+=maxlen;
if(cx<0) cx+=maxlen;//邊界控制
} else if(input==0x20)//如果是空格則走子;
if(offset%2==0)
offset++;
search();//在合法輸入後黑白翻轉;
count=count(1);//黑子個數;
count1=count(-1);
}} }
}void table (int count,int count1)//制棋盤;
else }//游標模擬
if(k==maxlen+1)
if(i==1&&k==1) printf("┏");
if(i==1&&k==maxlen) printf("┓");
if(i==maxlen&&k==maxlen) printf("┛");
if(i==maxlen&&k==1) printf("┗");
if((k%2!=0&&(k>1&&k1&&i1&&i1&&k1&&i1&&kcount1) ;
if(count
if(count==count1) ;
}void search()//黑白翻轉;
} }}int count (int m)
return ret;
}
201803 4 棋局評估
問題描述 alice和bob正在玩井字棋遊戲。井字棋遊戲的規則很簡單 兩人輪流往3 3的棋盤中放棋子,alice放的是 x bob放的是 o alice執先。當同一種棋子佔據一行 一列或一條對角線的三個格仔時,遊戲結束,該種棋子的持有者獲勝。當棋盤被填滿的時候,遊戲結束,雙方平手。alice設計了一...
201803 4 棋局評估
這道題當初卡了我不知道多少遍,每次動手想做一下csp認證的第三道題,都從這道題開始,但每次都被卡住。直接是連題意都有點讀不懂,但是讀懂了之後就會發現,這道題除了特別繁瑣之外,好像也沒用到什麼很難的演算法。借鑑了這位大佬的思路 我沒發現比這個還簡潔的 所以就學了一下這個思路,比較容易理解。對這道題,我...
ccf 棋局評估(對抗搜尋)
參考部落格 問題描述 試題編號 201803 4 試題名稱 棋局評估 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 alice和bob正在玩井字棋遊戲。井字棋遊戲的規則很簡單 兩人輪流往3 3的棋盤中放棋子,alice放的是 x bob放的是 o alice執先。當同一種棋子佔...