版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程 學(xué)號(hào) 姓名 班級(jí) 教師 時(shí)間課程設(shè)計(jì)報(bào)告(本科)面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)1010411331010411061周云揚(yáng) 駱秀秀 汪雋2010級(jí)計(jì)算機(jī)科學(xué)與技術(shù)(應(yīng)用班)朱強(qiáng)2012/12/17 2013/01/07計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)計(jì)名稱:簡(jiǎn)易的五子棋小游戲設(shè)計(jì)內(nèi)容、目的與要求:設(shè)計(jì)內(nèi)容:簡(jiǎn)單五子棋小游戲功能要求:可兩人對(duì)下(用鼠標(biāo)操作),判斷勝負(fù)。并且可實(shí)現(xiàn)悔棋,重置,實(shí) 現(xiàn)顯示下棋的總步數(shù)以及判斷每步棋子的位置!界面要求:美觀簡(jiǎn)潔,有簡(jiǎn)單操作說(shuō)明。計(jì)劃與進(jìn)度安排:12月17日12月21日:完成設(shè)計(jì)思路并作出草稿,考慮這個(gè)程序所要用到的主 要方法,并著手把程序的大致寫(xiě)出來(lái)。12月22日
2、12月27日:接著,我們就要詳細(xì)的寫(xiě)這個(gè)程序,完成對(duì)基本功能 的修改并運(yùn)行無(wú)誤。12月28日01月03日:為了使界面變得更加完美。我么要修改程序,添加一 些方法。而且要對(duì)這個(gè)程序有深透的了解。01月04日01月07日:準(zhǔn)備好材料,并填寫(xiě)好實(shí)驗(yàn)報(bào)告書(shū),準(zhǔn)備答辯。具體分工任務(wù):駱秀秀負(fù)責(zé)五子棋顯示窗口的設(shè)計(jì)以及使用繪圖類劃分五子棋盤(pán), 使用的 函數(shù)如 卜:public class WuZiQi extends JFrame implements MouseListener , public void paint (Graphics g) , public void updeta(Graphics
3、g)。汪雋負(fù)責(zé)五子棋落子之后,判斷五子是否成型,判斷黑白子輸贏 的問(wèn)題!使用多種算法實(shí)現(xiàn)其功能!使用的函數(shù)如下:public void victory(intx,inty,Vectorcontain)JOptionPane.showMessageDi alog等等。周云楊負(fù)責(zé)設(shè)置鼠標(biāo)控制下棋、悔棋、和判斷棋子落下的位置是 否符合實(shí)際要求等功能。使用的函數(shù)如下:public void mouseClicked(MouseEvent e), e.getButton ().設(shè)計(jì)過(guò)程、步驟(可加頁(yè)):一、程序流程圖:開(kāi)始初始化(1)棋盤(pán)的繪制為主模塊(2)建立兩個(gè)玩家(3)每人走一步(4)如果有五個(gè)連
4、續(xù)的棋子,就判斷其勝利二、程序中主要方法說(shuō)明(1)建立一個(gè)主方法wuziqi并采用構(gòu)造方法用super去調(diào)用父類wuziqipublic wuziqi()super("五子棋)this.setDefaultCloseOperation(JFrame,EXIT_ON_CLOSE); 關(guān)閉按鈕 Container con=this.getContentPane();this.addMouseListener(this),添加監(jiān)聽(tīng)tool, add (bt nstart);/添加按鈕tool.add(btnstop);this. setSize(55O.5OO)設(shè)置窗體大小 this.se
5、tVisible(ti-ue);)int w=20: 間距大小是雙數(shù)int px=100.py=100; 棋盤(pán)的坐標(biāo)int pxw=(px+w). pyw=(py+w);int width=w* 16,height=w* 16;int vline=(width+px); 垂直線的長(zhǎng)度int hline=(height+py); 水平線的長(zhǎng)度/*畫(huà)棋盤(pán)*/public void paint(Graphics g)g.clearRect(O. 0. this.getWidth。,this.getHeight。); 清除面板g.setColor(Color.BLACK); 設(shè)置網(wǎng)格顏色g.drawR
6、ect(px, py, width, height); 網(wǎng)格大小 g.drawString("簡(jiǎn)易五子棋”,110,70);for(int i=0;i<15;i+)g.drawLine(pxw+i*w.py.pxw+i*w.hline); 每條橫線和豎線 g.drawLine(px,pyw+i*w,vline,pyw+i*w);)建立判斷勝利的方法victory。并采用有參函數(shù)傳遞采用if-else的方法實(shí)現(xiàn)輸贏public void victory(int xjnt y,Vector contain) 判斷勝利的方法int cv=0; 計(jì)算垂直的變量int ch=0; 計(jì)算水
7、平的變量intcil=0;計(jì)算斜面的變量1int ci2=0; 計(jì)算斜面的變量2for(int i=l;i<5;i+)if(contain.contains(x+i)+M-H+y) ch+;else break;)(3)建立 mouseClicked建立對(duì)象getButton()用if-else循環(huán)判斷是否有悔棋public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTONl)int x=e.getX();int y=e.getY();x=(x-x%w)+(x%w>w/2?w:0):y=(y-y%W)+(y%W>
8、;w/2?W:0); x=(x-px)/w;y=(y-py)/w;if(x>=O&&y>=O&&x<= 16&&y<= 16)if(v.contains(x+,-,+y)System. out. printing 已有棋了 ”); ) elsev.add(x+H-H+y);this.repaint();if(v.size()%2=0)black.add(x+M-H+y);this.victory(x, y.black);System, out. printing黑棋”);) elsewhite.add(x+H-n+y);t
9、his.victory(x, y,white);System, out. printing 白棋) )System.out.println(e.getX()+N-M+e.getY(); )結(jié)果與分析(可以加頁(yè)):3.1程序運(yùn)行結(jié)果圖2游戲剛開(kāi)始開(kāi)始時(shí)白棋先走,然后黑棋,這樣交替的下棋。看誰(shuí)能贏。圖3黑棋贏了黑棋,白棋交替下,最后黑棋贏了,然后彈出對(duì)話框“恭喜你黑棋嬴了” 游戲做完之后不能直接退出。存在的問(wèn)題:(1)游戲設(shè)置較簡(jiǎn)單,想讓那個(gè)棋贏就能贏。(2)不能直接重新開(kāi)始。(3)程序無(wú)限時(shí),不能規(guī)定時(shí)間。設(shè)計(jì)體會(huì)與建議:設(shè)計(jì)體會(huì):通過(guò)這次課程設(shè)計(jì),我們收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還
10、有 編程時(shí)應(yīng)注意的流程。這個(gè)系統(tǒng)主要是我們小組做的,但也得到了老師和同學(xué)的很大幫助。我正在 做系統(tǒng)的過(guò)程中遇到了很多問(wèn)題,有的是知識(shí)存儲(chǔ)不足,有的是考慮不夠周全, 之所以能夠順利實(shí)現(xiàn)基本功功能,離不開(kāi)老師和同學(xué)的幫助。事實(shí)證明,只靠自 己是不能順利完成一套功能完整的系統(tǒng)的,必須充分利用團(tuán)隊(duì)的力量。開(kāi)發(fā)一個(gè)系統(tǒng),最重要的是細(xì)心,并不是一定要做到面面俱到,但也要充分 考慮到客戶的需求和現(xiàn)實(shí)意義,不管什么系統(tǒng),只用運(yùn)用到實(shí)際應(yīng)用中,才具有 先現(xiàn)實(shí)意義。所以在準(zhǔn)備工作中要正確分析社會(huì)需求了解現(xiàn)實(shí)應(yīng)用,畫(huà)出流程圖, 把大體框架做好,然后再逐一細(xì)化??傊ㄟ^(guò)本次實(shí)驗(yàn),掌握了使用Java語(yǔ)言進(jìn)行面向?qū)ο笤O(shè)計(jì)
11、的基本方法,提高 運(yùn)用面向?qū)ο笾R(shí)解決實(shí)際問(wèn)題的能力。提高面向?qū)ο蟪绦蛟O(shè)計(jì)的能力附錄:源程序代碼import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.*;public class WuZiQi extends J Frame implements MouseListenerpublic static void main(String args)WuZiQi d=new WuZiQi。; Ve
12、ctor v=new Vector();Vector white=new Vector();Vector black=new Vector();/JButton btnstart =new JButton(" 開(kāi)始)/ JButton btnstop =new JButton("停止)/ JTooIBar tool=new JToolBar();boolean b: 用來(lái)判斷白棋還是黑棋int blackcount,whitecount; 計(jì)算悔棋* 構(gòu)造方法* /public WuZiQi()super("五子棋)this.setDefaultCk>seO
13、peration(JFrame,EXIT_ON_CLOS 玲;關(guān)閉按鈕Container con=this.getContentPane();this.addMouseListener(this);/添力 II 監(jiān)聽(tīng)/tooLadd(btnstart),添加按鈕/ tool.add(btnstop);this. setSize(55O.5OO):設(shè)置窗體大小this.setVisible(tnie),將窗體設(shè)置為可視int w=20; 間距大小 是雙數(shù)int px=100.py=100: 棋盤(pán)的坐標(biāo)int pxw=(px+w), pyv=(py+w);int width=w* 16,heigh
14、t=w* 16;int vline=(vvidth+px); 垂直線的長(zhǎng)度int hline=(height+py); 水平線的長(zhǎng)度 /* 畫(huà)棋盤(pán)* /public void paint(Graphics g)g.clearRect(O, 0, this.getWidth(), this.getHeight。); 清除面板g.setColor(Color.BLACK); 設(shè)置網(wǎng)格顏色g.drawRect(px. py, width, height); 網(wǎng)格大小g.drawString("簡(jiǎn)易五子棋”,110, 70);for(int i=0;i<15;i+)g.drawLine
15、(pxw+i*w,py,pxw+i*w,hline);/每條橫線和豎線g.dravvLine(px.pyw+i*w,vline,pyw+i*w);for(int x=0:x<v,size();x+)String str=(String)v.get(x);String tmp=slr.split(',-M);int a=Integer.parseInl(tmp|OJ);int b=lnteger.parselnt(tmp( 1 );a=a*w+px;b=b*w+py;if(x%2=0)g.setColor(Color. white);elseg.setColor(Color.BLA
16、CK);g.fillArc(a-w/2. b-w/2, w. w.0,360);畫(huà)棋子public void updeta(Graphics g)this.paint(g);/public void viclory(int x,int y,Vector contain) 判斷勝利的方法int cv=0: 計(jì)算垂直的變量int ch=0:計(jì)算水平的變量int cil =0; 計(jì)算斜面的變量Iint ci2=0;計(jì)算斜面的變量2for(int i=l:i<5:i+)if(contain.contains(x+i)+”-”+y) 測(cè)試指定的對(duì)象是否為此向量中的組件。 ch+;elsebreak
17、:“System. out. printin("前面執(zhí)行了“+ch+”次)for(int i=l;i<5:i+)if(contain.contains(x-i)+H-n+y)ch+;elsebreak:/System.out.printing后面執(zhí)行+ch+”次) for(int i=l:iv5;i+)if(contain.contains(x+n-H+(y+i)cv+;elsebreak:for(int i=l:i<5;i+)if(contain.contains(x+M-H+(y-i)cv+;elsebreak:for(int i=l:i<5;i+)if(con
18、tain.contains(x+i)+,-,'+(y+i)cil+:elsebreak:for(int i=l:i<5;i+)if(contain.contains(x-i)+H-"+(y-i)cil+;elsebreak:for(int i=l;i<5:i+)if(contain.contains(x-i)+H-H+(y+i)ci2+:elsebreak:for(int i=l:iv5;i+)if(contain.contains(x+i)+"-M-Hy-i)ci2+:elsebreak:if(ch>=4llcv>=4llci 1>=
19、4llci2>=4)Systen】.out.prinUn(v.size()+“ 步棋");if(v.size()%2=0)( 判斷偶數(shù)是黑棋勝利,奇數(shù)白棋勝利JOptionPane.showMessageDialog(nunJ恭喜你 黑棋贏了 "); elseJOptionPane.showMessageDialogSullJ恭喜你 白棋贏 了");this.v.clear();this.black.clear();this.white.clear();this.repaint();System.out.println(ch+K H+cv+,' ,&
20、#39;+ciI+H H+ci2);小public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTONl)intx=e.getX();/返回事件相對(duì)于源組件的水平x坐標(biāo)int y=e.getY();x=(x-x%w)+(x%w>w/2?w:0);y=(y-y%W)+(y%W>w/2?W:0);x=(x-px)/w;y=(y-py)/w;if(x>=O&&y>=O&&x<= 16&&y<= 16)if(v.contains(x+n-,+y)System.out.printin("已有棋 / ");elsev.add(x+M-H+y);this.repaint();if(v.size()%2=0)black.add(x+"-M+y);this.victory(x, y.black);System. out. printin(“黑棋”);else(white.add(x+“-"+y); 將指定元素追加到此向量的末尾。this.victory(x, y,white);System.out.prinllM"白棋)System.out.println(e.ge
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024裝修合同范本版
- 個(gè)人倉(cāng)庫(kù)租賃協(xié)議樣本
- 小學(xué)食堂食品供應(yīng)合同
- 2024年冷鏈車(chē)運(yùn)輸合同
- 校企合作框架協(xié)議書(shū)范例
- 2024售樓處物業(yè)服務(wù)合同(物業(yè))
- 2024英文股份合同范本英文股份合同
- 2024個(gè)人裝修房屋合同范本
- 2024《鋁合金門(mén)窗合同》
- 機(jī)動(dòng)車(chē)輛交易協(xié)議文本
- 2024年公安機(jī)關(guān)人民警察高級(jí)執(zhí)法資格考試試卷含答案(案例分析題 論述題)
- Unit8WXYZ(課件)牛津自然拼讀Level1
- (高清版)DZT 0341-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 建筑用石料類
- 幼兒園教師教育教學(xué)能力
- 家長(zhǎng)社群運(yùn)營(yíng)與家校溝通策略
- 護(hù)理液體掛錯(cuò)不良事件
- 2024年法律知識(shí)法治建設(shè)知識(shí)競(jìng)賽-殘疾人保障法知識(shí)競(jìng)賽筆試歷年真題薈萃含答案
- 繼承優(yōu)良傳統(tǒng)弘揚(yáng)中國(guó)精神 (模板)
- 學(xué)校筑牢安全防線
- 碳?xì)质珰秩蚴袌?chǎng)研究報(bào)告 - 2024 年至 2030 年產(chǎn)業(yè)分析、規(guī)模、份額、成長(zhǎng)、趨勢(shì)與預(yù)測(cè)
- 2024年太原幼兒師范高等??茖W(xué)校高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論