近期準備做一個五子棋遊戲

由於前段時間一直爲工作分心,好久沒做像樣的程序了。爲了能在以後找工作的時候增加自己的競爭力,也爲了打發這段無聊的時間,我一直準備做些有趣的程序。今天終於找到了一個目標--做一個五子棋遊戲。

我計劃通過以下幾步,逐步使這個程序成爲一個實用的程序:

1。做一個控制檯的雙人對戰五子棋框架,通過輸入棋的座標下棋。在這步中主要解決的是如何判定一條直線上已經有5個子了。這個問題的算法也已經想好:比如判定橫線上是否有5個子--遍歷棋盤,對於每個子,首先確定其左邊沒有己方的子(即該子爲橫向第一子),然後考察右邊有沒有己方的子。如果還能找到4顆即算勝利。另外三個方向也是一樣--先確定該子是該方向上第一子,然後考察後方連續出現幾顆己方的子。

2。將其改成圖形界面。這步中主要解決的就是畫棋盤和棋子。畫棋盤比較方便,每個若干象素畫一條線就行了。下棋的時候畫棋子,鼠標點一個地方,首先獲取鼠標座標,然後計算出離這一點最靠近的棋格,然後畫出這個棋子就行。更新客戶區時畫棋子就更簡單了,將內存中棋盤(二維數組)中的棋子畫出來就行了。

3。將其改成網絡對戰的遊戲。鑑於我網絡編程還沒有仔細學過,現在還沒有更多想法。

4。爲該遊戲增加人機對戰功能。該階段就要實現比較複雜的ai。我的想法是:分析五子棋中常見的(至少是所有我能想到的)情況,將其分優先級。計算機每次遍歷棋盤後都要處理優先級最高的情況。在這個基礎上,我也思考了一下區分難易度的方法:最難的難度就是優先級分的最清的情況,這時計算機總是做它認爲最對的事情。想讓它簡單一點,只要有些優先級合併,比如本來優先級最高和次高的兩種情況,現在都是最高的了,這樣計算機就不一定會執行本來最應該做的事情,而是可能會做優先級稍次的操作(即走錯步)。優先級越是分得粗,越簡單,越是分得細越難。

不過最近幾天還不準備開工。等住回家後就開始做!

哈哈,有了目標,心情就是爽啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章