



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、中 原 工學(xué) 院二級課題實訓(xùn)任務(wù)書2011年 6 月 13 日學(xué)生姓名趙文娟學(xué)號201007132106專 業(yè)軟件技術(shù)班級編碼 J101課題名稱單機(jī)版五子棋游戲課題來源二級實訓(xùn)模擬課題指導(dǎo)教師郭彥賓專業(yè)計算機(jī)科學(xué)與技術(shù)職稱集成項目經(jīng)理課題說明:五子棋是一種增強思維能力,提高智力,有助于修身養(yǎng)性的游戲,這種娛樂方式既簡單易學(xué)又具有深奧的技巧。在經(jīng)過不斷地發(fā)展后,五子棋已經(jīng)成為棋盤娛樂的一個重要的組成部分。作為一個 Java 語言的學(xué)習(xí)者,正好將學(xué)過的 Java 語言的各種知識綜合起來,用 Elipse 集成開發(fā)工具編寫一個單機(jī)版的五子棋小游戲,既是對自己學(xué)過的知識的一種檢驗,也能鞏固對于 Jav
2、a語言知識的學(xué)習(xí)。承擔(dān)的任務(wù):1 總體進(jìn)度;2 編寫代碼;3 代碼測試;I中原工學(xué)院二級課題實訓(xùn)任務(wù)書工作進(jìn)度安排:任務(wù)名稱總體進(jìn)度整理資料編寫代碼代碼測試整理文檔2011年 6 月 14日時間軸 2011-6-13至 2011-6-28(除周日)審負(fù)責(zé)人核人12345678910111230%62%8%李雨桐郭朱芳芳彥趙文娟賓朱芳芳李雨桐趙文娟朱芳芳李雨桐指導(dǎo)教師簽字:2011年6 月 28日實訓(xùn)單位意見簽章:年月日學(xué)院意見簽章:年月日II中原工學(xué)院二 級 課題實訓(xùn)評審表學(xué)號201007132106 姓名趙文娟專業(yè)軟件技術(shù)班級編碼 J101題目單機(jī)版五子棋游戲指導(dǎo)教師評語成績(百分制):指導(dǎo)
3、教師簽名:2011 年6 月日III軟件學(xué)院二級課題實訓(xùn)報告課題名稱:單機(jī)版五子棋游戲?qū)I(yè):軟件技術(shù)班級:編碼 J101學(xué)號:201007132106學(xué)生姓名:趙文娟指導(dǎo)教師:郭彥賓2011年6月28日IV摘要五子棋是一種開發(fā)智力的趣味性小游戲,在我國有著悠久的歷史。隨著IT 技術(shù)的發(fā)展,五子棋游戲已經(jīng)被搬到了計算機(jī)里大眾娛樂。 五子棋不僅能增強思維能力, 提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征,又有古典哲學(xué)的高深學(xué)問;它既有簡單易學(xué)的特征,為廣大群眾需哦喜聞樂見,又有深奧的技巧和高水平的國際性比賽;它的棋文化淵源流長, 具有東方的神秘和西方的直觀。 它是中西文化
4、的交流電,是古今哲理的結(jié)晶。通過一系列的變化,使五子棋這一簡單的游戲系統(tǒng)化、規(guī)范化,最終成為今天的一種國際化比賽。本程序是采用 Java 作為開發(fā)語言。 Java 語言作為一種面向?qū)ο蟮木幊陶Z言,易學(xué)易用,對學(xué)習(xí)者掌握技能,開拓思維又很大的幫助。在系統(tǒng)的學(xué)習(xí)了 Java 語言之后,用它來做一些小程序,將學(xué)過的 Java 語言中的各種技術(shù)綜合起來編寫一個單機(jī)版的五子棋小游戲,以鞏固 Java 語言的學(xué)習(xí)。報告結(jié)合五子棋這個游戲的特點,將闡述單機(jī)版五子棋的算法及設(shè)計。單機(jī)版五子棋是兩個人通過交替使用同一臺計算機(jī)來進(jìn)行下棋。所有的操作都必須在同一臺計算機(jī)上來完成。關(guān)鍵詞:單機(jī)版五子棋游戲事件監(jiān)聽器數(shù)
5、組判斷V目錄摘 要 .V第 1 章 項目分析 .11.1問題描述 .11.2技術(shù)分析 .11.3工程進(jìn)度計劃 .1第 2 章 系統(tǒng)分析與設(shè)計 .22.1系統(tǒng)分析 .22.1.1參與者 .22.1.2用例及用例規(guī)約 .22.2系統(tǒng)設(shè)計 .22.2.1順序圖 .32.2.2類圖 .43.1功能模塊 .43.1.1活動圖 .93.1.2界面 .103.1.3代碼 .103.1.4測試用例 .16第 4 章 結(jié)束語 .20附錄 A: 主要源程序 .22趙文娟:單機(jī)版五子棋游戲第1章項目分析單機(jī)版五子棋游戲項目要實現(xiàn)其功能,必須有棋盤,棋子,“新游戲”,“黑棋”,“白棋”按鈕,以及添加按鈕的事件監(jiān)聽,判
6、斷輸贏等。1.1 問題描述此項目包括用 Graphics 類繪制五子棋的棋盤和棋子,刷新棋盤,用Button 添加按鈕,用 ActionListener 事件監(jiān)聽器,判斷輸贏等問題。1.2 技術(shù)分析此單機(jī)版五子棋游戲采用Java作為開發(fā)語言,用elipse 集成開發(fā)工具編寫的小程序。用 awt 包和 applet 包作為開發(fā)使用的基礎(chǔ)包。1.3 工程進(jìn)度計劃1,首先對課題進(jìn)行一個系統(tǒng)的分析和規(guī)劃;計劃用時:半天。2,然后開始整理和課題有關(guān)的資料和信息等等;計劃用時: 12 天。3,接下來進(jìn)行初步的代碼編寫;計劃用時: 12 天 .4,完善編寫的代碼,然后進(jìn)行代碼測試,這個階段最為重要,分析已寫
7、代碼的可運行度,再進(jìn)一步的對代碼修改,運行;計劃用時: 35 天5,如果代碼成功并且簡捷易懂并且方便,則開始整理文檔;計劃用時: 12 天。6,最后進(jìn)行實踐報告。計劃用時: 12 天??偺鞎r間段進(jìn)度為: 2011 年 6 月 13 日 2011 年 6 月 28 日1趙文娟:單機(jī)版五子棋游戲第 2 章 系統(tǒng)分析與設(shè)計單機(jī)版五子棋游戲采用Java語言設(shè)計,用 awt 和 applet 來處理棋盤和棋子的繪制、刷新,用數(shù)組來保存棋盤,最后判斷輸贏。2.1 系統(tǒng)分析游戲的基本步驟為:a.開始游戲;b.用鼠標(biāo)點擊在棋盤中下棋;c.判斷輸贏,若繼續(xù)玩游戲則重復(fù)b;d.游戲結(jié)束。2.1.1 參與者小組成員
8、:朱芳芳,李雨桐,趙文娟以及指導(dǎo)老師2.1.2 用例及用例規(guī)約用例:五子棋用例規(guī)約:五子棋是黑白雙方的競技活動。一方先下,交替執(zhí)行,只要有一方的棋子連成一線,即為贏。2.2 系統(tǒng)設(shè)計采用 Graphics 類來繪制棋盤和棋子,數(shù)組來保存棋盤,繼而用init() 方法來刷新棋盤 ,用 Button 來定義按鈕“新游戲” 、“黑棋”、“白棋”。用 ActionListener 來監(jiān)聽 Button“新游戲”、“黑棋”、“白棋”。用 mouseDown 是鼠標(biāo)點擊,在棋盤中下棋。最后用 panduan()方法,利用數(shù)學(xué)知識來判斷輸贏。2趙文娟:單機(jī)版五子棋游戲2.2.1 順序圖圖 2.1.1五子棋順
9、序圖3趙文娟:單機(jī)版五子棋游戲2.2.2 類圖圖 2.1.2 五子棋類圖第 3 章 實現(xiàn)與測試經(jīng)過一系列的分析和設(shè)計,五子棋代碼的編寫已經(jīng)完成,開始進(jìn)入代碼的實現(xiàn)與測試階段,實現(xiàn)五子棋的功能。3.1 功能模塊首先,繪制棋盤,先繪制一個確定的矩形,然后在矩形中畫線,形成一個15*15 的棋盤:g.setColor(Color.lightGray);g.fill3DRect(0, 0, size * 30, size * 30, true);g.setColor(Color.black);for (int i = 1; i < 15; i+)g.drawLine(30, i * 30, 28
10、 * size, i * 30 );for (int i = 1; i < 15; i+)g.drawLine(i * 30 , 30, i *30 , 28 * size);其次,用數(shù)組保存棋盤,用init() 方法來刷新棋盤:public void init()4趙文娟:單機(jī)版五子棋游戲for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qipanij=0;然后,對 Button 按鈕“新游戲”、“黑棋”、“白棋”添加監(jiān)聽器 ,利用 ActionListener 來監(jiān)聽:black.addActionListene
11、r(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=black)temp = true;);white.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=white)temp = false;);button.addActionListener(new ActionListener
12、()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=button)init(););在后來,監(jiān)聽鼠標(biāo)在棋盤中的位置,以及下棋子:public boolean mouseDown(Event e, int x, int y) if (x % 30 < 15&&x>14)dx = x - x % 30 - size;elsedx = x - x % 30 + size;if (y % 30 < 15&&y>14)5趙文娟:單機(jī)版五子棋游戲dy
13、 = y - y % 30 - size;elsedy = y - y %30 + size;int zx = dx + size;int zy = dy + size;/下棋子if (qipanzx / 30zy / 30 = 0) if (temp = true) / 每下一個棋子改變一下顏色qipanzx / 30zy / 30 = 1;/1代表黑棋temp = false;else qipanzx / 30zy / 30 = 2;/2代表白棋temp = true;repaint();return true;最后,按照水平方向,豎直方向,左上到右下方向,右上到左下方向來判斷輸贏:pub
14、lic int panduan()/ 水平方向for (int i = 0; i < 15; i+)for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (j + n < 15) if (qipanij + n = 1) /判斷水平方向hq+;if (qipanij + n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;6趙文娟:單機(jī)版五子棋游戲/ 垂直方向for (int i = 0; i < 15; i+
15、) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15) if (qipani + nj = 1)/判斷垂直方向hq+;if (qipani + nj = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 斜方向 左上 到 右下 (即 方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq
16、= 0;for (int n = 0; n < 5; n+) if (i + n < 15 && j + n < 15) if (qipani + nj + n = 1) hq+;if (qipani + nj + n = 2)bq+;if (hq = 5)return 1;if (bq = 5)7趙文娟:單機(jī)版五子棋游戲return 2;/ 斜方向 右上 到 左下 (即 /方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (in
17、t n = 0; n < 5; n+) if (i + n < 15 && j - n > 0) if (qipani + nj - n = 1) hq+;if (qipani + nj - n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;return 0;8趙文娟:單機(jī)版五子棋游戲3.1.1 活動圖圖 3.1.1五子棋活動圖9趙文娟:單機(jī)版五子棋游戲3.1.2 界面圖 3.1.2五子棋界面3.1.3 代碼import java.applet.Applet;import java.awt.Button;im
18、port java.awt.Color;import java.awt.Event;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class 五子棋extends Appletprivate int size = 15;10趙文娟:單機(jī)版五子棋游戲private int dx;private int dy;private boolean temp = true;private Button button = new Button(&qu
19、ot;新游戲 ");private Button black = new Button ("黑棋 ");private Button white = new Button ("白棋 ");private int qipan =new intsizesize;/刷新棋盤public void init()for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qipanij=0;/ 添加按鈕 add(button); add(black); add(white);/ 對“新游戲”
20、、“黑棋”、“白棋”按鈕添加監(jiān)聽器black.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=black)temp = true;);white.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=white)temp = false;);butt
21、on.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自動生成方法存根if(e.getSource()=button)11趙文娟:單機(jī)版五子棋游戲init(););repaint();/限制下棋的范圍,并監(jiān)聽鼠標(biāo)在棋盤中點擊的位置public boolean mouseDown(Event e, int x, int y) if (x % 30 < 15&&x>14)dx = x - x % 30 - size;elsedx = x - x
22、 % 30 + size;if (y % 30 < 15&&y>14)dy = y - y % 30 - size;elsedy = y - y %30 + size;int zx = dx + size;int zy = dy + size;/下棋子if (qipanzx / 30zy / 30 = 0) if (temp = true) / 每下一個棋子改變一下顏色qipanzx / 30zy / 30 = 1;/1代表黑棋temp = false;else qipanzx / 30zy / 30 = 2;/2代表白棋temp = true;repaint();
23、return true;/用 Graphics 類繪制棋盤,棋子public void paint(Graphics g)/ 背景顏色g.setColor(Color.lightGray);/繪制一個長寬確定的矩形g.fill3DRect(0, 0, size * 30, size * 30, true);/ 繪制棋盤( drawLine(int x1,int y1,int x2,int y2)中在( x1,y1) 和( x2,y2)/ 之間畫一條直線)g.setColor(Color.black);for (int i = 1; i < 15; i+)12趙文娟:單機(jī)版五子棋游戲g.d
24、rawLine(30, i * 30, 28 * size, i * 30 );for (int i = 1; i < 15; i+)g.drawLine(i * 30 , 30, i *30 , 28 * size);/ 繪制棋子(用fillOval ( int x,int y,int width,int height)繪制棋子)for (int i = 0; i < 15; i+)for (int j = 0; j < 15; j+) if (qipanij = 1) g.setColor(Color.black); /1 代表黑色g.fillOval(i *30 - s
25、ize, j * 30 - size, 30, 30);if (qipanij = 2) g.setColor(Color.white);g.fillOval(i * 30 - size, j * 30 - size, 30, 30);/ 畫出棋子并填充為白色/ 判斷輸贏int panduan = panduan(); if (panduan = 1) g.setColor(Color.red);g.drawString(" 黑棋勝! ", 450, 100);try /游戲結(jié)束后,等待2000 毫秒后可從新開始Thread.sleep(2000);catch (Inter
26、ruptedException e) e.printStackTrace();/判斷后返回init ()重新開局init();else if (panduan = 2) g.setColor(Color.red);g.drawString(" 白棋勝! ", 450, 100);try Thread.sleep(2000);catch (InterruptedException e) e.printStackTrace();13趙文娟:單機(jī)版五子棋游戲init();public int panduan()/ 水平方向for (int i = 0; i < 15; i+
27、)for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (j + n < 15) if (qipanij + n = 1) /判斷水平方向hq+;if (qipanij + n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 垂直方向for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n
28、 = 0; n < 5; n+) if (i + n < 15) if (qipani + nj = 1)/判斷垂直方向hq+;if (qipani + nj = 2) bq+;if (hq = 5)14趙文娟:單機(jī)版五子棋游戲return 1;if (bq = 5)return 2;/ 斜方向 左上 到 右下 (即 方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15
29、 && j + n < 15) if (qipani + nj + n = 1) hq+;if (qipani + nj + n = 2)bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 斜方向 右上 到 左下 (即 /方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15 && j - n > 0
30、) if (qipani + nj - n = 1) hq+;if (qipani + nj - n = 2) bq+;15趙文娟:單機(jī)版五子棋游戲if (hq = 5)return 1;if (bq = 5)return 2;return 0;3.1.4 測試用例水平方向:圖 3.1.3 五子棋測試用例水平方向豎直方向:16趙文娟:單機(jī)版五子棋游戲圖 3.1.4 五子棋測試用例豎直方向17趙文娟:單機(jī)版五子棋游戲斜方向右上到左下:圖 3.1.5五子棋測試用例斜方向右上到左下18趙文娟:單機(jī)版五子棋游戲斜方向左上到右下:圖 3.1.6 五子棋用例測試斜方向左上到右下19趙文娟:單機(jī)版五子棋游戲
31、第4章結(jié)束語經(jīng)過長達(dá)三個星期的實訓(xùn),因為有了團(tuán)隊的合作,有了老師的熱心指導(dǎo),有了同學(xué)的幫助,我覺得實訓(xùn)很好完成。在實訓(xùn)完成之際,我要感謝所有給了我莫大支持和指導(dǎo)建議的老師和同學(xué)。在整個實訓(xùn)的過程中,總結(jié)其中的經(jīng)驗和教訓(xùn),有以下幾點體會:1. 在系統(tǒng)分析之前,要準(zhǔn)備充分,在設(shè)計階段要做的盡可能詳細(xì)、全面,以免在以后的階段中返工,浪費時間和精力;2. 要做好備份,防止文件的丟失;3. 有問題多請教老師或者同學(xué),只有他們的幫助才可以做到盡善盡美等?;仡櫸遄悠宓恼麄€設(shè)計過程,我覺得我的Java 語言的知識不夠融匯貫通,有些知識寄的也不清楚,所以在以后的學(xué)習(xí)中要加強訓(xùn)練,熟練基礎(chǔ)知識。而且游戲行業(yè)的正在
32、迅速的發(fā)展,作為一種簡單的休閑游戲五子棋也在不斷地改善前進(jìn),所以我們要時時刻刻的學(xué)習(xí) Java 語言,和同學(xué)、老師共同進(jìn)步。在遇到問題時,向老師請教或者和同學(xué)討論并且查閱課本。我們要熟悉自己的優(yōu)勢和劣勢和別人的優(yōu)勢,也就是所謂的“知己知彼,才能百戰(zhàn)百勝”。總之,這次實訓(xùn)教會了我在以后的生活和學(xué)習(xí)中要認(rèn)真仔細(xì),教會我做人的道理,和同學(xué)互相幫助,團(tuán)結(jié)友愛。在這里,更要感謝老師的認(rèn)真輔導(dǎo)和支持。20趙文娟:單機(jī)版五子棋游戲參考文獻(xiàn)1 Y .Daniel Liang. Java 語言程序設(shè)計基礎(chǔ)篇 M機(jī)械工業(yè)出版社,2008.62 Y .Daniel Liang. Java 語言程序設(shè)計進(jìn)階篇 M機(jī)械
33、工業(yè)出版社,2008.621趙文娟:單機(jī)版五子棋游戲附錄 A: 主要源程序import java.applet.Applet;import java.awt.Button;import java.awt.Color;import java.awt.Event;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class 五子棋extends Appletprivate int size = 15;private int dx;private
34、 int dy;private boolean temp = true;/定義“新游戲” 、“黑棋”、“白棋”按鈕private Button button = new Button("新游戲 ");private Button black = new Button ("黑棋 ");private Button white = new Button ("白棋 ");/定義二維數(shù)組private int qipan =new intsizesize;/刷新棋盤public void init()for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qip
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書驗收合同范例范例
- CEBPB基因調(diào)控絨山羊毛囊干細(xì)胞增殖及其與產(chǎn)絨性狀相關(guān)研究
- 基于SEER數(shù)據(jù)庫的脂肪肉瘤主要亞型患者的預(yù)后影響因素分析
- 注意分配在二語語音協(xié)同中的作用研究
- 代購專柜采購合同范本
- 農(nóng)村安裝空調(diào)工程合同范例
- 農(nóng)村用電合同范本
- 公司收購資產(chǎn)合同范例
- 借貸協(xié)議合同范例
- 上海廠房出售合同范例
- 廣東省廣州市2024年中考數(shù)學(xué)真題試卷(含答案)
- 存款代持協(xié)議書范文模板
- 國家基本藥物培訓(xùn)課件
- KPI績效考核管理辦法
- 2024年深圳市優(yōu)才人力資源有限公司招考聘用綜合網(wǎng)格員(派遣至吉華街道)高頻難、易錯點500題模擬試題附帶答案詳解
- 零星維修工程投標(biāo)方案(技術(shù)方案)
- 華能內(nèi)蒙古東部能源有限公司招聘筆試題庫2024
- 橫紋肌溶解癥護(hù)理查房
- 2023年部編人教版三年級《道德與法治》下冊全冊課件【全套】
- 部編版六年級語文下冊(10-古詩三首)課件
- 風(fēng)機(jī)高空逃生裝置使用
評論
0/150
提交評論