




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選文檔課程設(shè)計(jì)報(bào)告(本科)課程: 面對(duì)對(duì)象程序設(shè)計(jì)課程設(shè)計(jì)學(xué)號(hào):1010411013 1010411033 1010411061姓名:周云揚(yáng) 駱秀秀 汪雋班級(jí): 2010級(jí)計(jì)算機(jī)科學(xué)與技術(shù)(應(yīng)用班)老師:朱強(qiáng)時(shí)間:2012/12/17 2013/01/07計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)計(jì)名稱:簡易的五子棋小玩耍設(shè)計(jì)內(nèi)容、目的與要求:設(shè)計(jì)內(nèi)容:簡潔五子棋小玩耍功能要求:可兩人對(duì)下(用鼠標(biāo)操作),推斷勝敗。并且可實(shí)現(xiàn)悔棋,重置,實(shí)現(xiàn)顯示下棋的總步數(shù)以及推斷每步棋子的位置!界面要求:美觀簡潔,有簡潔操作說明。方案與進(jìn)度支配:12月17日12月21日: 完成設(shè)計(jì)思路并作出草稿,考慮這個(gè)程序所要用到的主 要方法
2、,并著手把程序的大致寫出來。12月22日12月27日:接著,我們就要具體的寫這個(gè)程序,完成對(duì)基本功能 的修改并運(yùn)行無誤。12月28日01月03日:為了使界面變得更加完善。我么要修改程序,添加一 些方法。而且要對(duì)這個(gè)程序有深透的了解。01月04日01月07日:預(yù)備好材料,并填寫好試驗(yàn)報(bào)告書,預(yù)備答辯。具體分工任務(wù):駱秀秀負(fù)責(zé)五子棋顯示窗口的設(shè)計(jì)以及使用繪圖類劃分五子棋盤,使用的函數(shù)如下:public class WuZiQi extends JFrame implements MouseListener , public void paint(Graphics g),public void up
3、deta(Graphics g)。 汪雋負(fù)責(zé)五子棋落子之后,推斷五子是否成型,推斷黑白子輸贏的問題!使用多種算法實(shí)現(xiàn)其功能!使用的函數(shù)如下:public void victory(intx,inty,Vectorcontain)JOptionPane.showMessageDialog等等。 周云楊負(fù)責(zé)設(shè)置鼠標(biāo)把握下棋、悔棋、和推斷棋子落下的位置是否符合實(shí)際要求等功能。使用的函數(shù)如下:public void mouseClicked(MouseEvent e),e.getButton().設(shè)計(jì)過程、步驟(可加頁):1、 程序流程圖:結(jié)束(1) 棋盤的繪制為主模塊(2) 建立兩個(gè)玩家(3) 每人
4、走一步(4) 假如有五個(gè)連續(xù)的棋子,就推斷其成功2、 程序中主要方法說明(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)聽tool.add(btnstart);/添加按鈕tool.add(btnstop);this.setSize(550,5
5、00);/設(shè)置窗體大小this.setVisible(true); int w=20; /間距大小 是雙數(shù) int px=100,py=100; /棋盤的坐標(biāo) int pxw=(px+w), pyw=(py+w); int width=w*16,height=w*16; int vline=(width+px); /垂直線的長度 int hline=(height+py); /水平線的長度 /* * 畫棋盤 */public void paint(Graphics g)g.clearRect(0, 0, this.getWidth(), this.getHeight(); /清除面板g.set
6、Color(Color.BLACK); /設(shè)置網(wǎng)格顏色g.drawRect(px, py, width, height); /網(wǎng)格大小g.drawString("簡易五子棋", 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);(2)建立推斷成功的方法victory()并接受有參函數(shù)傳遞接受if-else的方法實(shí)現(xiàn)輸贏public void victory(int x,int y,Vector co
7、ntain) /推斷成功的方法int cv=0; /計(jì)算垂直的變量int ch=0; /計(jì)算水平的變量int ci1=0; /計(jì)算斜面的變量1int ci2=0; /計(jì)算斜面的變量2for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+y)ch+;elsebreak;(3)建立mouseClicked建立對(duì)象getButton()用if-else循環(huán)推斷是否有悔棋public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=e.getX();in
8、t 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>=0&&y>=0&&x<=16&&y<=16)if(v.contains(x+"-"+y)System.out.println("已有棋了");elsev.add(x+"-"+y);this.repaint();if(v.size()%2=0)black.add(x+"
9、-"+y);this.victory(x, y,black);System.out.println("黑棋");elsewhite.add(x+"-"+y);this.victory(x, y,white);System.out.println("白棋");System.out.println(e.getX()+"-"+e.getY();結(jié)果與分析(可以加頁): 3.1 程序運(yùn)行結(jié)果圖2 玩耍剛開頭開頭時(shí)白棋先走,然后黑棋,這樣交替的下棋??凑l能贏。圖3 黑棋贏了黑棋,白棋交替下,最終黑棋贏了,然后彈出對(duì)
10、話框“恭喜你 黑棋贏了”玩耍做完之后不能直接退出。存在的問題:(1) 玩耍設(shè)置較簡潔,想讓那個(gè)棋贏就能贏。(2)不能直接重新開頭。(3)程序無限時(shí),不能規(guī)定時(shí)間。設(shè)計(jì)體會(huì)與建議: 設(shè)計(jì)體會(huì):通過這次課程設(shè)計(jì),我們收獲的不僅僅是課程上的學(xué)問得到實(shí)際應(yīng)用,還有編程時(shí)應(yīng)留意的流程。這個(gè)系統(tǒng)主要是我們小組做的,但也得到了老師和同學(xué)的很大掛念。我正在做系統(tǒng)的過程中遇到了很多問題,有的是學(xué)問存儲(chǔ)不足,有的是考慮不夠周全,之所以能夠順當(dāng)實(shí)現(xiàn)基本功功能,離不開老師和同學(xué)的掛念。事實(shí)證明,只靠自己是不能順當(dāng)完成一套功能完整的系統(tǒng)的,必需充分利用團(tuán)隊(duì)的力氣。開發(fā)一個(gè)系統(tǒng),最重要的是細(xì)心,并不是肯定要做到面面俱到,
11、但也要充分考慮到客戶的需求和現(xiàn)實(shí)意義,不管什么系統(tǒng),只用運(yùn)用到實(shí)際應(yīng)用中,才具有先現(xiàn)實(shí)意義。所以在預(yù)備工作中要正確分析社會(huì)需求了解現(xiàn)實(shí)應(yīng)用,畫出流程圖,把大體框架做好,然后再逐一細(xì)化。總之通過本次試驗(yàn),把握了使用Java語言進(jìn)行面對(duì)對(duì)象設(shè)計(jì)的基本方法,提高運(yùn)用面對(duì)對(duì)象學(xué)問解決實(shí)際問題的力量。提高面對(duì)對(duì)象程序設(shè)計(jì)的力量附錄:源程序代碼import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.*;p
12、ublic class WuZiQi extends JFrame implements MouseListenerpublic static void main(String args)WuZiQi d=new WuZiQi();Vector v=new Vector();Vector white=new Vector();Vector black=new Vector();/JButton btnstart =new JButton("開頭");/JButton btnstop =new JButton("停止");/JToolBar tool=ne
13、w JToolBar();boolean b; /用來推斷 白棋還是黑棋 int blackcount,whitecount; /計(jì)算悔棋 /* * 構(gòu)造方法 */public WuZiQi()super("五子棋");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/關(guān)閉按鈕Container con=this.getContentPane();this.addMouseListener(this);/添加監(jiān)聽/tool.add(btnstart);/添加按鈕/tool.add(btnstop);this.setSi
14、ze(550,500);/設(shè)置窗體大小this.setVisible(true);/將窗體設(shè)置為可視 int w=20; /間距大小 是雙數(shù) int px=100,py=100; /棋盤的坐標(biāo) int pxw=(px+w), pyw=(py+w); int width=w*16,height=w*16; int vline=(width+px); /垂直線的長度 int hline=(height+py); /水平線的長度 /* * 畫棋盤 */public void paint(Graphics g)g.clearRect(0, 0, this.getWidth(), this.getHei
15、ght(); /清除面板g.setColor(Color.BLACK); /設(shè)置網(wǎng)格顏色g.drawRect(px, py, width, height); /網(wǎng)格大小g.drawString("簡易五子棋", 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);for(int x=0;x<v.size();x+)String str=(String)v.get(x);String tmp=st
16、r.split("-");int a=Integer.parseInt(tmp0);int b=Integer.parseInt(tmp1);a=a*w+px;b=b*w+py;if(x%2=0)g.setColor(Color.white);elseg.setColor(Color.BLACK);g.fillArc(a-w/2, b-w/2, w, w,0,360);/畫棋子public void updeta(Graphics g)this.paint(g);/-public void victory(int x,int y,Vector contain) /推斷成功的
17、方法int cv=0; /計(jì)算垂直的變量int ch=0; /計(jì)算水平的變量int ci1=0; /計(jì)算斜面的變量1int ci2=0; /計(jì)算斜面的變量2for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+y)/測試指定的對(duì)象是否為此向量中的組件。ch+;elsebreak;/System.out.println("前面執(zhí)行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+y)ch+;els
18、ebreak;/System.out.println("后面執(zhí)行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x+"-"+(y+i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+"-"+(y-i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+(y+i)ci1+;elsebreak;fo
19、r(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y-i)ci1+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y+i)ci2+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+(y-i)ci2+;elsebreak;if(ch>=4|cv>=4|ci1>=4|ci2>=4)System.out.println
20、(v.size()+"步棋");if(v.size()%2=0) /推斷偶數(shù)是黑棋成功,奇數(shù)白棋成功JOptionPane.showMessageDialog(null,"恭喜你 黑棋贏了");elseJOptionPane.showMessageDialog(null,"恭喜你 白棋贏了");this.v.clear();this.black.clear();this.white.clear();this.repaint();System.out.println(ch+" "+cv+" "+c
21、i1+" "+ci2);/-public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=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>=0&&y>=0&&x<=16&&y<=16)if(v.contains(x+"
22、;-"+y)System.out.println("已有棋了");elsev.add(x+"-"+y);this.repaint();if(v.size()%2=0)black.add(x+"-"+y);this.victory(x, y,black);System.out.println("黑棋");elsewhite.add(x+"-"+y);/將指定元素追加到此向量的末尾。this.victory(x, y,white);System.out.println("白棋");System.out.println(e.getX()+&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煙臺(tái)大學(xué)《泌尿生殖與內(nèi)分泌系統(tǒng)醫(yī)學(xué)教程》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2031年中國電動(dòng)手動(dòng)兩用轉(zhuǎn)盤座行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025-2030年中國PET改性酚醛樹市場運(yùn)行新形勢與投資前景報(bào)告
- 婚禮發(fā)言稿模板
- 反流的臨床護(hù)理
- 廣告效果評(píng)估的管理模式
- 保安工作計(jì)劃建筑業(yè)市政工程部門
- 小腸損傷的臨床護(hù)理
- 班主任與家長的溝通策略計(jì)劃
- 引導(dǎo)幼兒參與班級(jí)建設(shè)的方案計(jì)劃
- 藍(lán)色北京師范大學(xué)4.3頂部導(dǎo)航欄博士復(fù)試模板
- 防汛減災(zāi)小知識(shí)
- 2024年四川宜賓環(huán)球集團(tuán)有限公司招聘考試真題
- 期中測試(范圍:第1-4章)(A卷·夯實(shí)基礎(chǔ))-北師大版七年級(jí)數(shù)學(xué)下冊(cè)(原卷版)
- 2025時(shí)政試題及答案(100題)
- 《旅行社經(jīng)營與管理》電子教案 5-2 旅行社接待業(yè)務(wù)2
- 醫(yī)療器械操作規(guī)范與安全知識(shí)培訓(xùn)試題庫
- 視力檢查方法課件
- 2025固體礦產(chǎn)地質(zhì)調(diào)查規(guī)范1:25000
- 2025-2030中國具身智能行業(yè)研發(fā)創(chuàng)新策略與未來前景展望報(bào)告
- 智慧樹知到《藝術(shù)與審美(北京大學(xué))》期末考試附答案
評(píng)論
0/150
提交評(píng)論