




全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實踐出真知,為了學(xué)習(xí)JAVA編程,筆者購買了瘋狂JAVA實戰(zhàn)演義一書,打算從這本書開始學(xué)習(xí),選擇它的原因是書中介紹了15個Java項目,主要是一些游戲和工具。興趣是最好的老師,這些項目很吸引我,學(xué)習(xí)過程也快樂了許多。于是打算把我讀書和實踐的過程記錄下來,也算是一種積累,一種紀念。從遇到的第一個項目說起,“控制臺五子棋”。該項目的目的是幫助讀者掌握和理解Java編程的一些基本知識,為了能更好的突出這一學(xué)習(xí)目的,這個項目沒有實現(xiàn)漂亮的界面和方便易用的人機交互功能,也沒有過多地考慮程序的擴展以及設(shè)計模式的使用。作者在總結(jié)一節(jié)中寫得很清楚:讀者朋友,從這個項目里你可以學(xué)到數(shù)組、枚舉類的使用方法,獲取鍵盤輸入的方法,分支流程、循環(huán)流程,當(dāng)然還有獲得滿足感和快樂感。我問自己,我想從這個項目中得到什么?我想要解決一個問題,那就是:我要編程,我該從哪里開始,如何下手?第一步:理解五子棋的游戲規(guī)則中國象棋、國際象棋、圍棋也好,五子棋也好,在編程之前,要知道它們的游戲規(guī)則,五子棋我玩過,我將其游戲規(guī)則描述為“把自己的棋子連成五個就算贏 了”。我看完了書作者的描述,一方面我有一種坐享其成的感覺,一方面我覺得自己的描述實在是太草率了。“把自己的棋子連成五個就算贏了”這種描述對編程實 在是沒有什么太大的作用!現(xiàn)在讓我再重新思考一下五子棋的游戲規(guī)則:玩五子棋之前的準備工作:兩個人,一個棋盤,兩盒棋子(可能一盒是黑色的,另一盒是白色的)。棋盤有多大,棋子有多少呢?兩個人必須都很清楚游戲規(guī)則,也就是棋子下在哪里,誰先下,何種情況下算贏?首先在橫或豎或斜的方向上形成五個子相連的一方為贏。第二步:從現(xiàn)實世界到計算機世界,考慮程序輸入與輸出。為了簡單起見,兩人對弈改為人與“電腦”對弈。棋盤用一個二維字符串?dāng)?shù)組存儲,玩家以(x,y)的方式從鍵盤輸入棋子落在棋盤上的坐標,棋盤和棋子 打印在控制臺,黑棋子用形如黑色圓點的特殊字符表示,白棋子用形如白色圓點的特殊字符表示,棋盤的格子用十字表示,真是太有才了!棋子落在棋盤上就是用表 示棋子的字符代替十字。第三步:繪制游戲流程所謂一圖勝千言,注意圖中這幾類點:開始點、結(jié)束點、判定點。從這張圖中,可以看出幾個我們在編程過程中要解決的明顯的問題:1.如何從鍵盤輸入x,y坐標?2.如何判斷玩家或是“電腦”贏了?3.如何實現(xiàn)“電腦”自動下棋?4.勝出后,如何開始一輪新的游戲?5.勝出后,如何退出游戲?還有一些不明顯的問題:1.如何驗證玩家的輸入是否合法有效?2.如何實現(xiàn)玩家與“電腦”的輪流下棋?第四步:用面向?qū)ο蟮乃枷朐O(shè)計類棋盤類(Chessboard)、棋子類(Chessman)兩個類很容易想出來,但是光有這兩個類還不夠,有些操作這兩個類處理不了,比如玩家輸 入x,y坐標,放在棋盤類和棋子類中都不合適,于是我有一次坐享其成了,作者搞了個游戲類(GobangGame)出來,完成一系列的操作,比如游戲的開 始與結(jié)束、玩家坐標輸入及驗證、判斷游戲是否勝出、電腦下棋。游戲類(GobangGame)是最主要的一個類,它的方法最多,能改進的地方也最多,下面 展示了五子棋類圖。第五步:實現(xiàn)類,搭積木棋盤類(Chessboard)的核心功能就是用來維護棋盤,在“第二步:從現(xiàn)實世界到計算機世界,考慮程序輸入與輸出”中已經(jīng)提到,棋盤在計算機 世界里是用一個二維字符串?dāng)?shù)組存儲的,所以維護棋盤,就是創(chuàng)建、初始化、修改、獲取這個二維字符串?dāng)?shù)組的過程,為什么選用數(shù)組,至少有兩點,其一,棋盤的 大小是固定的,沒有人會去偷走棋盤上的格子對嗎?其二,二維數(shù)組的下標正好表示了棋盤的位置(x,y),數(shù)組元素的值正好可以存儲棋盤的狀態(tài):黑子、白 子、無子。其三,可以通過數(shù)組的下標很容易的找到數(shù)組元素。棋子類(Chessman)真是讓我著了下急,作者是用枚舉類實現(xiàn)的,枚舉類我不熟啊,很少用,但這種困難是對知識點不熟造成的,不能算作難點。作 者考慮用枚舉類來實現(xiàn)的原因思考了下,因為棋子在計算機中使用固定的兩個字符串對象表示的,如何每次下一個棋子,都要重新創(chuàng)建一個字符串對象,是不是太浪 費了,黑子和黑子在計算機里沒有差別的。之前兩個類講到了兩個在Java編程中很基本也很重要的知識點:數(shù)組和字符串。下面看一看游戲類(GobangGame)。對于游戲類(GobangGame)的實現(xiàn)感覺有點面向過程,關(guān)鍵是要理順游戲的流程。使用while語句、continue、break來達到循環(huán)接收玩家輸入、跳出本次循環(huán)、跳出整個循環(huán)。使用標志變量isOver來標示本次游戲是否勝出。游戲類(GobangGame)在實現(xiàn)過程中值得注意的有:1.利用BufferedReader、InputStreamReader、System.in、readLine()獲取鍵盤的輸入;2.凡是涉及玩家輸入的部分,一定要對輸入的內(nèi)容進行驗證;3.判斷玩家或“電腦”是否贏了,需要一個勝出算法;4.如果游戲勝出,提示哪一方贏了,并提示玩家是否開始下一輪游戲或退出整個游程序;5.在合適的時機重新初始化棋盤。對于獲取鍵盤的輸入還有對輸入的內(nèi)容進行驗證是固定的套路,沒有什么可多說的。關(guān)鍵是勝出算法,可以說在這里算是一個難點,需要動一動腦筋。我一直 以來對算法都是一種逃避的態(tài)度,總覺得那不是一般人能想出來的。這一次我也是皺起了眉頭。如果讓我下棋,我可以判斷是否勝出,但是讓計算機也能判斷勝出, 我就不會了。我盡力去回憶自己的大腦是如何判斷的,遍歷每一個方向并計數(shù),每次把當(dāng)前棋
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司白天集體活動方案
- 公司登山活動方案
- 公司聚餐嗨活動方案
- 公司美食大賽活動方案
- 公司肉孜節(jié)慰問活動方案
- 公司晚上團建策劃方案
- 公司無煙宣傳活動方案
- 公司節(jié)氣活動方案
- 公司法制教育活動方案
- 公司自我推廣活動方案
- 燃氣管道安全事故應(yīng)急預(yù)案
- 2025年餐飲業(yè)合伙協(xié)議模板:農(nóng)家樂合作經(jīng)營框架協(xié)議3篇
- 2025年安徽新華傳媒股份有限公司招聘筆試參考題庫含答案解析
- 《國防動員實施》課件
- H3CNE認證考試題庫及答案詳解
- 景觀綠化工程監(jiān)理規(guī)劃范文
- 公路工程施工質(zhì)量控制培訓(xùn)
- 中國高血壓防治指南(2024年修訂版)
- 2025國家公務(wù)員政治理論應(yīng)知應(yīng)會知識考試題庫(含答案)
- 蔬菜種植基地管理手冊
- 【MOOC】微處理器與嵌入式系統(tǒng)設(shè)計-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
評論
0/150
提交評論