




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 chess(cx-sx)/w(cy-sy)/w=2;g.fillOval(cx-w/2+1,cy-w/2,w-2,w-2);player=(player+1)%2;/黑白方輪流下棋g.setXORMode(chessBoard.this.getBackground();g.setColor(Color.red);/用異或方式繪制小游標(biāo)g.fillRect(cx-w/4,cy-w/2,w/2,w/2);該處代碼塊處理鼠標(biāo)單擊事件,解決當(dāng)前游標(biāo)位置下一顆棋子的顯示和記錄問(wèn)題。通過(guò)getGraphics()方法獲取畫(huà)筆進(jìn)行圖形繪制,其好處是避免畫(huà)面閃爍。publicvoidpaint(Graphi
2、csg)/繪制棋盤for(intk=0;k19;k+)g.drawLine(sx,sy+k*w,sx+w*18,sy+k*w);for(intk=0;k19;k+)g.drawLine(sx+k*w,sy,sx+k*w,sy+w*18);for(inti=0;ichess.length;i+)for(intj=0;jchess0.length;j+)if(chessij=1)g.setColor(Color.black);g.fillOval(sx+i*w-w/2+1,sx+j*w-w/2+1,w-2,w-2);elseif(chessij=2)g.setColor(Color.white);
3、g.fillOval(sx+i*w-w/2+1,sx+j*w-w/2+1,w-2,w-2);g.setXORMode(this.getBackground();g.setColor(Color.red);g.fillRect(cx-w/4,cy-w/4,w/2,w/2);此處的代碼用來(lái)繪制棋盤以及棋盤上所有棋子(3)界面情況不同顏色的界面實(shí)際中的圍棋對(duì)戰(zhàn)情況對(duì)戰(zhàn)時(shí)間更改棋盤顏色晦棋認(rèn)輸2016-6-2:9anlv退出游我棋盤上各個(gè)部件以及它們的效果(4)運(yùn)行調(diào)試與討論分析編譯整個(gè)程序的采用的是分塊編寫(xiě)的方法,在保證每個(gè)小部分代碼塊運(yùn)行正常的同時(shí)還要考慮到整個(gè)程序的協(xié)調(diào)性,首先用到的問(wèn)題是對(duì)包的
4、引用這個(gè)關(guān)系到整個(gè)后續(xù)的細(xì)節(jié)部分能否可以實(shí)現(xiàn)。定義chessGame的時(shí)候要考慮到它的各個(gè)按鈕的布局采用網(wǎng)格布局這樣效果出來(lái)后更美觀整潔。其中actionListener和actionPerformed對(duì)應(yīng)功能的適應(yīng)都是難點(diǎn)。由于對(duì)鼠標(biāo)事件的設(shè)置還掌握的不全面導(dǎo)致在設(shè)置鼠標(biāo)移動(dòng)以及小游標(biāo)的時(shí)候參考了好多資料才得以實(shí)現(xiàn)相應(yīng)的功能。在我自身調(diào)試下圍棋程序的同時(shí)總共遇到三個(gè)問(wèn)題:設(shè)置的“改變棋盤顏色”的按鈕無(wú)法改變棋盤的顏色反而是改變鼠標(biāo)小游碼的顏色。解決方法:無(wú)法通過(guò)按鈕改變棋盤的顏色,那么就從棋盤背景定義的顏色做文章Colorc=newColor(int)(Math.random()*255),
5、(int)(Math.random()*255),(int)(Math.random()*255);setBackground(c);通過(guò)定義隨機(jī)顏色c然后設(shè)置棋盤的背景顏色為c那么每次重新打開(kāi)游戲的時(shí)候棋盤的顏色都會(huì)改變。無(wú)法在文本域中插入計(jì)時(shí)器,究其原因是對(duì)java.util中的thread類的掌握不牢解決方法:改在文本域中插入進(jìn)入游戲時(shí)的時(shí)間點(diǎn)這樣就會(huì)對(duì)游戲時(shí)間有一個(gè)把握度,實(shí)現(xiàn)這個(gè)功能需要引進(jìn)java.util包中的Calender類由于它是抽象方法無(wú)法實(shí)例化所以通過(guò)CalendarrightNow=Calendar.getInstance();Stringmydate=rightNo
6、w.get(Calendar.YEAR)+-+(rightNow.get(Calendar.MONTH)+1)+-+rightNow.get(Calendar.DATE)+n+rightNow.get(Calendar.HOUR)+”時(shí)+rightNow.get(Calendar.MINUTE)+分+rightNow.get(Calendar.SECOND)+秒;TextAreat1=newTextArea(mydate,2,1);可以實(shí)現(xiàn)在文本框中插入進(jìn)入游戲時(shí)間的信息實(shí)現(xiàn)游戲退出以及菜單欄中的“x”關(guān)閉窗口解決方法:if(e.getActionCommand().equals(退出游戲)d
7、ispose。;該碼通過(guò)按鈕實(shí)現(xiàn)退出游戲classcloseWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)Windoww=e.getWindow();w.dispose();而此部分則通過(guò)窗口菜單實(shí)現(xiàn)關(guān)閉游戲的功能總結(jié):計(jì)算機(jī)編程語(yǔ)言有多種多樣,每一門都有自己獨(dú)特的特點(diǎn)。而java是面向?qū)ο缶幊痰恼Z(yǔ)言,該語(yǔ)言的學(xué)習(xí)不在于死記硬背而在于理解與靈活應(yīng)用。而學(xué)習(xí)的關(guān)鍵在于平時(shí)對(duì)基礎(chǔ)知識(shí)的掌握與基本方法的掌握以及平時(shí)多加練習(xí)熟練程度也是編程能否準(zhǔn)確有效的關(guān)建因素,在做課設(shè)的過(guò)程中讓人又氣又有興趣的是發(fā)現(xiàn)錯(cuò)誤解決錯(cuò)誤的過(guò)程,在犯錯(cuò)
8、中不斷彌補(bǔ)自己的不足。此次課設(shè)讓我熟練掌握了圖形用戶界面的編輯,顏色的調(diào)配,時(shí)間的插入以及方法的調(diào)用定義以及各種類的重新理解,可以說(shuō)此次收獲很大,更激發(fā)我深入學(xué)習(xí)的興趣,在以后的日子里我要學(xué)習(xí)更多的相關(guān)知識(shí)以便達(dá)到學(xué)以致用。參考文獻(xiàn)丁振凡.Java語(yǔ)言程序設(shè)計(jì)(第2版)清華大學(xué)出版社,20082丁振凡.利用Java在主頁(yè)上學(xué)習(xí).電腦學(xué)習(xí),2016附錄圍棋對(duì)弈界面程序源代碼:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;publicclasschessGameextendsFrameim
9、plementsActionListenerColorc=newColor(int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255);publicchessGame()super(“圍棋);chessBoardb=newchessBoard();setBackground(c);setLayout(newBorderLayout();add(Center,b);CalendarrightNow=Calendar.getInstance();Stringmydate=rightNow.get(Calenda
10、r.YEAR)+-+(rightNow.get(Calendar.MONTH)+1)+-+rightNow.get(Calendar.DATE)+n+rightNow.get(Calendar.HOUR)+時(shí)+rightNow.get(Calendar.MINUTE)+分+rightNow.get(Calendar.SECOND)+秒;/設(shè)置一個(gè)時(shí)間字符串Panelp=newPanel();Labela1=newLabel(對(duì)戰(zhàn)時(shí)間”);Buttoncolor=newButton(”更改棋盤顏色);Buttonfail=newButton(認(rèn)輸);Buttonback=newButton(”悔
11、棋);Buttonquit=newButton(“退出游戲“);TextAreat1=newTextArea(mydate,2,1);p.setLayout(newGridLayout(8,1,10,10);p.add(newLabel();/為界面美觀插入一個(gè)空標(biāo)簽p.add(color);p.add(back);p.add(a1);p.add(t1);p.add(fail);p.add(quit);add(East,p);fail.addActionListener(this);color.addActionListener(this);quit.addActionListener(thi
12、s);addWindowListener(newcloseWin();setSize(500,450);setVisible(true);publicvoidactionPerformed(ActionEvente)Colorc=newColor(int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255);setBackground(c);if(e.getActionCommand().equals(退出游戲)dispose();if(e.getActionCommand().equals(認(rèn))JOptio
13、nPane.showMessageDialog(null,你輸了);publicstaticvoidmain(Stringargs)newchessGame();classcloseWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)Windoww=e.getWindow();w.dispose();/定義完了窗體構(gòu)造classchessBoardextendsCanvasintchess=newint1919;intsx=20,sy=20;/存放棋盤子的狀態(tài)intw=20;/棋盤左上角的位置intcx=50;/棋盤每個(gè)格子的
14、寬度intcy=50;/下棋位置游標(biāo)的初值,對(duì)應(yīng)鼠標(biāo)移動(dòng)位置intplayer=1;/1表示輪下黑子,0表示輪下白子publicchessBoard()this.addMouseMotionListener(newMouseMotionAdapter()publicvoidmouseMoved(MouseEvente)Graphicsg=getGraphics();g.setXORMode(chessBoard.this.getBackground();g.setColor(Color.red);g.fillRect(cx-w/4,cy-w/4,w/2,w/2);cx=sx+(int)(e.g
15、etX()/w)*w;cy=sy+(int)(e.getY()/w)*w;g.fillRect(cx-w/4,cy-w/4,w/2,w/2););this.addMouseListener(newMouseAdapter()publicvoidmouseClicked(MouseEvente)/鼠標(biāo)單擊表示下子Graphicsg=getGraphics();if(chess(cx-sx)/w(cy-sy)/w=0)/判斷是否已有棋子if(player=1)g.setColor(Color.black);/黑棋chess(cx-sx)/w(cy-sy)/w=1;elseg.setColor(Co
16、lor.white);/白棋chess(cx-sx)/w(cy-sy)/w=2;g.fillOval(cx-w/2+1,cy-w/2,w-2,w-2);player=(player+1)%2;/黑白方輪流下棋g.setXORMode(chessBoard.this.getBackground();g.setColor(Color.red);/用異或方式繪制小游標(biāo)g.fillRect(cx-w/4,cy-w/2,w/2,w/2););publicvoidpaint(Graphicsg)/繪制棋盤for(intk=0;k19;k+)g.drawLine(sx,sy+k*w,sx+w*18,sy+k*w);for(intk=0;k19;k+)g.drawLine(sx+k*w,sy,sx+k*w,sy+w*18);for(inti=0;ichess.length;i+)for(intj=0;jchess0.length;j+)if
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)監(jiān)理合同框架協(xié)議
- 合同中安全免責(zé)協(xié)議
- 建筑掛靠資質(zhì)合同協(xié)議
- 建筑施工解約合同協(xié)議
- 三方委托加工合同協(xié)議
- 平地荒地出租合同協(xié)議
- ktv經(jīng)營(yíng)承租合同協(xié)議
- 駕校員工人員合同協(xié)議
- 店面出租合同協(xié)議經(jīng)典版
- 高危職業(yè)勞動(dòng)合同協(xié)議
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第3部分:地基處理與基礎(chǔ)工程
- 2024-2025學(xué)年統(tǒng)編版七年級(jí)語(yǔ)文下冊(cè)第四單元檢測(cè)A卷(原卷+答案)
- 醫(yī)療器械操作規(guī)范與安全知識(shí)培訓(xùn)試題庫(kù)
- 安全閥培訓(xùn)課件
- 市場(chǎng)集中度與消費(fèi)者行為-全面剖析
- 視力檢查方法課件
- 2025年詩(shī)詞大賽考試指導(dǎo)題庫(kù)300題(含答案)
- 2025年河南職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- DB65-T 4850-2024 工貿(mào)行業(yè)企業(yè)重大安全風(fēng)險(xiǎn)認(rèn)定
- 交管12123駕駛證學(xué)法減分練習(xí)題庫(kù)(1000題版)
- 核心素養(yǎng)視角下的小學(xué)科學(xué)單元整體教學(xué)設(shè)計(jì)培訓(xùn)講座
評(píng)論
0/150
提交評(píng)論