今天學習了三子棋的演算法,讓我感受到演算法的奇妙與復雜,
以下是關于我對三子棋的一些理解;如有不對或改善的地方希望能得到大家的反饋;
要實作三子棋,我們先要把三子棋運行的思路想好:
首先我們要有游戲選單供玩家選擇
游戲運行的大體結構如下:
然后我們在看游戲實作的程序 :
1.初始化棋盤
初始化棋盤前,我們先定義一個二維陣列
然后我們初始化棋盤,在這里我們可以呼叫自己寫的函式,如果代碼全放在同一個.c檔案會讓代碼變得很長且難閱讀,我這里創建一個game.h頭檔案用來呼叫(后文中呼叫的函式名都在這)
所謂初始化就是將棋盤里的位置全變為空格
2.列印棋盤
初始化棋盤后,我們要列印棋盤,棋盤的行列數為3x3,我們可以在game.h里定義他們的行列數,這樣我們可以隨意的改動棋盤的大小,

我們要列印棋盤的大概是這樣的:

用回圈來錄入資料

3.玩家與電腦落子
搞定棋盤后,開始想怎么實作錄入坐標,讓電腦與人對弈,我們要讓玩家與電腦每次輸入都列印棋盤,我們用一個回圈來實作,

接著我們來看錄入坐標,讓人與電腦落子,首先是提示玩家走,然后輸入坐標,在棋盤上列印,如果輸入坐標不對,我們需提示玩家,讓其重新輸入,
而電腦則不需要這么麻煩,但我們要使用亂數函式和時間戳,因為我們亂數的生成應在棋盤坐標范圍內,所以我們可讓亂數對行列數取余,
4.判斷輸贏
我們下棋肯定要要結果,不然游戲將陷入死回圈,在每次我們和電腦輸入坐標、列印棋盤后,我們要進行一次判斷,如果出現三子連成線的話,停止下棋并輸出結果,我們定義一個字符ret,如果ret=‘*’為玩家贏,‘#’為電腦贏,‘Q'為平局,’C‘則繼續,


第一次寫這種相關的博客,不好的方面希望大家能提出一些意見,
最后,大家一起努力啊!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384424.html
標籤:其他
