五子棋游戲編程.ppt_第1頁
五子棋游戲編程.ppt_第2頁
五子棋游戲編程.ppt_第3頁
五子棋游戲編程.ppt_第4頁
五子棋游戲編程.ppt_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

五子棋游戲 娛樂是人類不可或缺的生活內容 從最初的紙牌 到近代的麻將 到電視時代的任天堂 再到網絡時代的3D場景游戲 都蘊含著人類智慧的結晶 本章以五子棋游戲為主線 講解棋牌游戲的入門程序設計方法 本章的主要內容如下 棋牌游戲的種類和發(fā)展階段 讀者將概要性地了解棋牌游戲的現(xiàn)狀和發(fā)展情況 五子棋游戲設計 讀者將學會編寫五子棋游戲 并以此為基礎 熟悉棋牌游戲設計的一般方法 21 1棋牌游戲種類及簡介 目前在游戲軟件市場上的棋牌游戲種類繁多 基本上 我們日常生活中有的 都已經有了相應的游戲軟件 如QQ游戲中心 就是以真人遠程棋牌游戲為主的游戲服務站 玩家通過登陸QQ信息 然后可以集中在QQ游戲中心的服務大廳里面自己尋找對手 或者自己尋找棋牌空位 然后等待別人來挑戰(zhàn) 棋牌游戲有很多 常見的有如下幾種 中國象棋 中國象棋估計是當前國內最流行的棋類游戲 跳棋 下棋雙方各10個棋子 最快走到對方陣地則獲勝 鋤大地 紙牌游戲 QQ網絡游戲大廳中使用率較高的游戲 拱豬 紙牌游戲 QQ網絡游戲大廳中使用率較高的游戲 五子棋 本章將實現(xiàn)該游戲 黑白棋 與五子棋的棋牌類似 下棋時 可以將對方處于自己棋子中間的棋變成自己的棋子 棋盤下滿后 哪方棋子多則獲勝 圍棋 與黑白棋 五子棋的棋牌類似 21 2五子棋游戲開發(fā)的基礎和概要設計 開發(fā)一個五子棋游戲需要從兩方面入手 一是游戲規(guī)則 二是技術 其實任何軟件開發(fā)都是這兩大類 只是前者不叫做游戲規(guī)則 而叫做 業(yè)務流程 而技術則是涉及到該項目的一些算法 運行平臺 數(shù)據(jù)庫設計等 21 2 1游戲規(guī)則和效果 相信大多數(shù)讀者已經玩過五子棋 當然也有少數(shù)讀者沒有玩過 為了使游戲開發(fā)更具有邏輯性 在此將介紹一下五子棋的規(guī)則 1 棋盤為方格狀 玩家有2位 分別可以下黑棋和白棋 棋子放置在方格中央 2 玩家不能連續(xù)下棋 必須黑白兩家輪流下 3 當方格棋盤中 如果橫向 縱向或斜向有5個連續(xù)的同顏色棋子 則表示該顏色棋子玩家獲勝 4 當棋盤格子全部填滿 而沒有任何玩家獲勝 表示該盤棋平局 如圖21 1所示 21 2 2技術難點的解決方案 五子棋游戲的規(guī)則比較簡單 這里的技術難點主要在于設計和實現(xiàn) 玩家設計 用鼠標的左鍵和右鍵來區(qū)分兩個玩家 棋盤設計 可以使用圖形對象繪制棋盤 下棋控制 使用鼠標消息處理函數(shù)來完成 如可以編寫鼠標右鍵消息為放置黑色棋子 反之 左鍵則放置白色棋子 放置棋子的繪制 通過判斷鼠標單擊的坐標 看是否在某個各自區(qū)域內 如果在各自區(qū)域內 則以該格子中點為棋子的中點 繪制一個棋子 判斷下棋順序 可以通過標志變量來記錄 如左鍵單擊 則標志變量變?yōu)? 右鍵單擊 則標志變量變?yōu)? 同時 當左鍵需要單擊時 判斷當前的標志變量是否為1 如果是 則說明右鍵剛剛下棋 現(xiàn)在的確是輪到左鍵下棋 下棋后標志變量變?yōu)? 反之亦然 判斷輸贏 當橫向 縱向或斜向有5個連續(xù)的棋子時 該方獲得勝利 此時 應該使用方格的狀態(tài)標記來記錄該方格放置的是什么顏色的棋子 如可以使用二維狀態(tài)數(shù)組或二維向量來記錄棋子顏色 如二維數(shù)組a 3 5 的值為1 則可以表示在 3 5 坐標處是黑色棋子 如果值為2 則表示該坐標處放置的是白色棋子 如果為0 則為空白格子 即沒有放置任何棋子 下棋其他約束 如在棋盤中已經被占用的格子是不能再下棋了 這個可以使用二維格子的狀態(tài)數(shù)組來表示 0則表示該格子是空的 可以放置 否則不能放置 21 3游戲項目的開發(fā)過程 在軟件工程項目中 一般不提倡在不清楚整體架構和概要設計前就動手進行編程 太早著手代碼編寫只能增加返工次數(shù) 最常使用的方式是模塊化分析 根據(jù)項目的特點 將不相關的功能分塊分階段進行實現(xiàn) 正式開始編寫游戲項目之前 需要先了解一下大致流程 如圖21 2所示 21 3 1創(chuàng)建程序和棋盤設計 本節(jié)將創(chuàng)建單文檔應用程序 并在視圖區(qū)域將五子棋的棋盤繪制出來 考慮到棋盤可以在一個視圖界面中實現(xiàn) 因此創(chuàng)建一個單文檔應用程序會將問題最小化 然后在視圖界面作為棋盤 用鼠標作為下棋的工具即可 創(chuàng)建程序和前文的實例基本一樣 如下 21 3 2放置棋子的功能開發(fā) 按照前文的規(guī)劃 棋子使用鼠標的左鍵和右鍵 分別用這兩個鼠標鍵來表示下棋的雙方 來進行單擊下棋 即是當用戶單擊左鍵時 下黑色棋子 用戶單擊右鍵時 下白色棋子 因此 必須為鼠標添加鼠標左鍵和右鍵單擊的鼠標消息處理函數(shù) 步驟如下 21 3 3下棋約束功能 鑒于前文所述的3個缺點 本節(jié)將解決其中的兩個缺點 沒有遵守黑白雙方輪流下棋的規(guī)則 同一個格子可以反復放置棋子 另外一個是判斷輸贏的缺陷 這個功能雖然不復雜 但代碼量比較多 將在下一節(jié)進行處理 下棋規(guī)則是 1 雙方一定要輪流下棋 2 已經下棋的格子不能再放置棋子 學會這些游戲規(guī)則后 才考慮怎么去贏對方 編程也一樣 也應該按照這個思路出發(fā)去完成程序設計 21 3 4游戲獲勝決斷的開發(fā) 該功能是棋牌游戲中較難的功能 不過讀者不用擔心 其實算法并不難 只是實際編寫要細心 本節(jié)也會詳細將這些細節(jié)介紹到位 游戲規(guī)則是這樣的 如某一方 黑棋或白棋 在同一行 同一列或同一斜線上具有連續(xù)5個同色的棋子 則該顏色棋子的那方就取得勝利 因此 可以使用一個整形二維數(shù)組來記錄當前棋局的情況 二維數(shù)組的值定義如下 0 表示該位置沒有棋子 1 表示該位置已經放置了黑色棋子 2 表示該位置已經放置了白色棋子 因此 現(xiàn)在考慮的問題有兩個 問題1 要在下每個棋后 將數(shù)組變量對應位置的數(shù)組元素值做改變 變?yōu)?1 或 2 這個很容易實現(xiàn) 只需在鼠標消息處理函數(shù)中調用Location 函數(shù)后改變數(shù)組元素值即可 問題2 下每個棋后 判斷在這個棋子同一行 同一列或同一斜線上是否具有連續(xù)5個同色的棋子 如果有 則宣布該方勝利 并退出游戲 如果沒有則繼續(xù)游戲 輪到對方下棋 21 4小結 本章作為一個綜合性的游戲項目設計 雖然沒有涉及到新的知識 但作為綜合性的例子 成功完成實例的開發(fā)還需要一定的經驗和耐心 建議讀者獨立完成該項目 以體驗自己本書的學習效果 本章涉及的知識點并且要求讀者掌握的主要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論