java課程設(shè)計(jì)報(bào)告(學(xué)生用表)_第1頁
java課程設(shè)計(jì)報(bào)告(學(xué)生用表)_第2頁
java課程設(shè)計(jì)報(bào)告(學(xué)生用表)_第3頁
java課程設(shè)計(jì)報(bào)告(學(xué)生用表)_第4頁
java課程設(shè)計(jì)報(bào)告(學(xué)生用表)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論