java五子棋課程設(shè)計(jì)任務(wù)書_第1頁(yè)
java五子棋課程設(shè)計(jì)任務(wù)書_第2頁(yè)
java五子棋課程設(shè)計(jì)任務(wù)書_第3頁(yè)
java五子棋課程設(shè)計(jì)任務(wù)書_第4頁(yè)
java五子棋課程設(shè)計(jì)任務(wù)書_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE棗莊學(xué)院信息科學(xué)與工程學(xué)院課程設(shè)計(jì)任務(wù)書題目:五子棋游戲?qū)W號(hào):201012110132姓名:孫飛專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)課程:java語言程序設(shè)計(jì)指導(dǎo)教師:劉夢(mèng)琳職稱:講師完成時(shí)間:2012年5月2012年6月棗莊學(xué)院信息科學(xué)與工程學(xué)院制課程設(shè)計(jì)任務(wù)書及成績(jī)?cè)u(píng)定課程設(shè)計(jì)的任務(wù)和具體要求1.基本要求實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多用戶五子棋的游戲程序,包括如下兩個(gè)界面(1)選擇對(duì)弈桌及角色(執(zhí)黑、執(zhí)白、觀看)。(2)在游戲界面,有開始,退出(游戲未結(jié)束、點(diǎn)退出自動(dòng)判負(fù));發(fā)言及顯示區(qū);用戶列表區(qū);棋盤繪制區(qū)。2.創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如改善算法性能、友好的人機(jī)界面。指導(dǎo)教師簽字:日期:指導(dǎo)教師評(píng)語成績(jī):指導(dǎo)教師簽字:日期:課程設(shè)計(jì)所需軟件、硬件等硬件環(huán)境:CPU主頻在500MHZ以上,內(nèi)存在128M以上軟件環(huán)境:JAVA虛擬機(jī)+WindowsXP或Windows2000以上操作系統(tǒng)+Eclipse課程設(shè)計(jì)進(jìn)度計(jì)劃起至日期工作內(nèi)容備注2012.5.20-2012.5.252012.5.26-2012.5.312012.6.1-2012.6.5構(gòu)思及收集資料編碼與調(diào)試撰寫論文參考文獻(xiàn)、資料索引序號(hào)文獻(xiàn)、資料名稱編著者出版單位[1].Java程序設(shè)計(jì)實(shí)例教程.吳其慶北京冶金工業(yè)出版社[2]Java語言應(yīng)用開發(fā)基礎(chǔ)柳西玲.許斌北京清華大學(xué)出版社[3]JAVA核心技術(shù)卷i:基礎(chǔ)知識(shí)(美)CayS.Horsttmann機(jī)械工業(yè)出版社[4]Java語言實(shí)用教程丁振凡北京郵電大學(xué)出版社PAGE1目錄緒論………………….……11.開發(fā)背景 ……..……………….………21.1開發(fā)環(huán)境及運(yùn)行環(huán)境……………….…..……21.1.1開發(fā)環(huán)境……………….……………….……………..……………21.1.2運(yùn)行環(huán)境……………….……….………..…………22.總體設(shè)計(jì)…………..……………22.1工作原理圖………….……………22.2功能的規(guī)劃……….………………33.詳細(xì)設(shè)計(jì) …………….……………53.1創(chuàng)建棋盤類…………….…………63.2判斷輸贏功能實(shí)現(xiàn)………….……………84.系統(tǒng)測(cè)試 …………..………………124.1進(jìn)入游戲的界面……………….…………124.2選擇角色,點(diǎn)擊開始,開始下棋……………….……134.3下完后點(diǎn)擊重新開始…………….………..…144.4游戲過程中退出,自動(dòng)判輸……………….………………..………154.5改進(jìn)想法…………165.設(shè)計(jì)總結(jié) ……………176.參考文獻(xiàn)………………….………17附錄…………18緒論Java是由美國(guó)的sunmicrosystems公司發(fā)展出來的一套面向?qū)ο蟪绦蛘Z言,因?yàn)樗拿嫦驅(qū)ο螅稚⑦\(yùn)算,跨平臺(tái)等等特性,又支持多線程。使得許多用過的人都愛不釋手。Java既是一種程序設(shè)計(jì)語言,也是一個(gè)完整的平臺(tái)。作為一種程序語言,它簡(jiǎn)潔、面向?qū)ο?、安全、健壯,以及適用于Internet技術(shù);而作為一個(gè)平臺(tái)(JRE,JavaRuntimeEnvironment,Java運(yùn)行環(huán)境或者說是Java虛擬機(jī)),對(duì)于符合Sun公司Java標(biāo)準(zhǔn)的應(yīng)用程序,都可以在Java平臺(tái)上正確運(yùn)行,與程序運(yùn)行的操作系統(tǒng)無關(guān)。Java發(fā)展到今天,已從編程語言發(fā)展成為全球第一大通用開發(fā)平臺(tái)。Java技術(shù)已被計(jì)算機(jī)行業(yè)主要公司所采納。1999年,Sun公司推出了以Java2平臺(tái)為核心的J2EE、J2SE和J2ME三大平臺(tái)。隨著三大平臺(tái)的迅速推進(jìn),全球形成了一股巨大的Java應(yīng)用浪潮。 這個(gè)五子棋游戲正是用這個(gè)平臺(tái)做的,在實(shí)踐中充分體現(xiàn)出了Java面向?qū)ο蠼o我們帶來的方便。多用戶聊天程序也讓我體會(huì)到了Java多線程的強(qiáng)大功能。1.開發(fā)背景當(dāng)前網(wǎng)絡(luò)上流傳的五子棋游戲功能并不盡善盡美,其中最主要的問題就是網(wǎng)絡(luò)對(duì)戰(zhàn)只能兩個(gè)人一起玩,所以我決定開發(fā)一個(gè)多人同時(shí)進(jìn)行網(wǎng)絡(luò)對(duì)戰(zhàn)的五子棋系統(tǒng)。1.1開發(fā)環(huán)境及運(yùn)行環(huán)境1.1.1Intel?Pentium?4l2.0GHz,512M內(nèi)存,80G硬盤Microsoft?Windows?XPProfessionallJDKl1.50Eclipse3.2l1.1.2IntelPentium?l2及以上處理器,32M以上內(nèi)存,4G以上硬盤Microsoft?Windows?l9X/NT操作系統(tǒng)800*600或以上的屏幕分辨率2.總體設(shè)計(jì)2.1工作原理圖開始開始下棋點(diǎn)擊退出判斷輸贏判斷勝負(fù)游戲結(jié)束重新開始結(jié)束程序選擇角色2.2功能的規(guī)劃1.建立一個(gè)棋盤類,繪制棋盤的樣式,在棋盤面板上添加各種按鈕及相應(yīng)胡觸發(fā)事件。同時(shí)注意面板的設(shè)計(jì),使面板設(shè)計(jì)的盡量胡的合理美觀。a.棋盤的繪制publicvoiddraw_qipan(GraphicsG)//畫棋盤15*15{ G.setColor(Color.lightGray);//設(shè)置畫刷顏色 G.fill3DRect(10,10,300,300,true);//繪制填充矩形,灰白色G.setColor(Color.black);//設(shè)置畫刷顏色 for(inti=1;i<16;i++){//繪制縱橫線 G.drawLine(20,20*i,300,20*i); G.drawLine(20*i,20,20*i,300); }}b.添加按鈕與按鈕胡規(guī)劃Buttonb1=newButton("開始"); Buttonb2=newButton("重置游戲"); LabellblWin=newLabel(""); CheckboxckbHB[]=newCheckbox[3]; Buttonexist=newButton("退出"); publicvoidinit(){ ckbHB[0]=newCheckbox("執(zhí)白",ckgHB,false); ckbHB[1]=newCheckbox("執(zhí)黑",ckgHB,false); ckbHB[2]=newCheckbox("觀看",ckgHB,false); }C.鼠標(biāo)棋子胡相應(yīng)觸發(fā)事件publicvoidmouseClicked(MouseEvente){ Graphicsg=getGraphics();//在當(dāng)前面板繪制圖像 intx1,y1; x1=e.getX();//獲取點(diǎn)擊點(diǎn)橫坐標(biāo) y1=e.getY();//獲取點(diǎn)擊點(diǎn)縱坐標(biāo) if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){//點(diǎn)擊點(diǎn)在棋盤外 return; } if(x1%20>10){//點(diǎn)擊點(diǎn)位于X相距20像素的兩點(diǎn)間 x1+=10; } if(y1%20>10){//點(diǎn)擊點(diǎn)位于y相距20像素的兩點(diǎn)間 y1+=10; } x1=x1/20*20;//確定棋子可放置的交叉點(diǎn)X位置 y1=y1/20*20;//確定棋子可放置的交叉點(diǎn)y位置 set_Qizi(x1,y1);//調(diào)用函數(shù)set_Qizi,放置棋子 m*=(-1);//某方開始放置棋子,譬如m為正則黑方下棋}d.按鈕的觸發(fā)事件publicvoidactionPerformed(ActionEvente){ Graphicsg=getGraphics();//在當(dāng)前面板繪制圖像 if(e.getSource()==b1){ Game_start();//調(diào)用函數(shù),開始游戲 } else{ Game_re();//調(diào)用函數(shù),重新開始 } if(e.getSource()==exist){ Game_re();//調(diào)用函數(shù),重新開始 lblWin.setText(Get_qizi_color(color_Qizi)+"輸了!");//調(diào)用函數(shù)Get_qizi_color(color_Qizi),其返回值為“黑子”或“白字” intGame_Start=0;//歸0操作,表明游戲尚未開始2.編寫一個(gè)功能判斷落子的位置及畫出相應(yīng)的黑白棋子publicvoidset_Qizi(intx,inty)//落子{ if(intGame_Start==0)//判斷游戲是否已開始{ return; } if(intGame_Body[x/20][y/20]!=0){//該交叉點(diǎn)已被占用 return; } Graphicsg=getGraphics();//在當(dāng)前面板繪制圖像 if(color_Qizi==1)//判斷棋子的黑白{ g.setColor(Color.black);//若棋子為黑,即color_Qizi==1,設(shè)置黑色畫筆 color_Qizi=0;//下一步由白子,故賦值為0 } else{ g.setColor(Color.white);//棋子為白子,設(shè)置畫筆為白 color_Qizi=1;//下一步為黑子,故賦值為1 } g.fillOval(x-10,y-10,20,20);//繪制填充橢圓 intGame_Body[x/20][y/20]=color_Qizi+1;//棋盤交叉點(diǎn)已占用,即不為零}3.判斷勝負(fù)if(Game_win_1(x/20,y/20))//判斷輸贏1{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_2(x/20,y/20))//判斷輸贏2{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_3(x/20,y/20))//判斷輸贏3{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_4(x/20,y/20))//判斷輸贏4{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; }3.詳細(xì)設(shè)計(jì)3.1創(chuàng)建棋盤類PublicclassWcyChessextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{ intcolor_Qizi=0;//旗子的顏色標(biāo)識(shí)0:白子1:黑子 intintGame_Start=0;//游戲開始標(biāo)志0未開始1游戲中 intintGame_Body[][]=newint[16][16];//設(shè)置棋盤棋子狀態(tài) intm=-1; Buttonb1=newButton("開始"); Buttonb2=newButton("重置游戲"); LabellblWin=newLabel(""); CheckboxckbHB[]=newCheckbox[3]; Buttonexist=newButton("退出"); CheckboxGroupckgHB=newCheckboxGroup(); NetchatClientchat=newNetchatClient();//對(duì)話框類實(shí)體 publicvoidinit(){ setLayout(null);//暫不設(shè)置布局 addMouseListener(this);//為當(dāng)前類設(shè)置鼠標(biāo)監(jiān)聽器 add(b1); b1.setBounds(330,50,80,30); b1.addActionListener(this); add(b2); b2.setBounds(330,90,80,30); b2.addActionListener(this); ckbHB[0]=newCheckbox("執(zhí)白",ckgHB,false); ckbHB[0].setBounds(320,20,60,30); ckbHB[1]=newCheckbox("執(zhí)黑",ckgHB,false); ckbHB[1].setBounds(380,20,60,30); ckbHB[2]=newCheckbox("觀看",ckgHB,false); add(ckbHB[0]); add(ckbHB[1]); add(ckbHB[2]); ckbHB[0].addItemListener(this); ckbHB[1].addItemListener(this); add(lblWin); lblWin.setBounds(330,180,80,30); lblWin.setBackground(Color.red); lblWin.setText("勝利者!");//沒有顯示? ckbHB[2].setBounds(440,20,60,30); add(exist); exist.setBounds(330,130,80,30); exist.addActionListener(this);// add(chat);chat.setBounds(20,500,300,300); chat.frame(); chat.setVisible(true); Game_start_csh(); setSize(500,600); setVisible(true); } publicvoiditemStateChanged(ItemEvente){ if(ckbHB[0].getState())//選擇黑子還是白子{ color_Qizi=0; } else{ color_Qizi=1; } } publicvoidmousePressed(MouseEvente){} publicvoidmouseClicked(MouseEvente){ Graphicsg=getGraphics(); intx1,y1; x1=e.getX(); y1=e.getY(); if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){ return; } if(x1%20>10){ x1+=10; } if(y1%20>10){ y1+=10; } x1=x1/20*20; y1=y1/20*20; set_Qizi(x1,y1); m*=(-1); } publicvoidactionPerformed(ActionEvente){ Graphicsg=getGraphics(); if(e.getSource()==b1){ Game_start(); } else { Game_re(); } if(e.getSource()==exist){ Game_re(); lblWin.setText(Get_qizi_color(color_Qizi)+"輸了!"); intGame_Start=0; } } publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} publicvoidmouseReleased(MouseEvente){} publicvoidmouseDragged(MouseEvente){} publicvoidmouseMoved(MouseEvente){} publicvoidpaint(Graphicsg){ draw_qipan(g); }3.2判斷輸贏功能實(shí)現(xiàn)if(Game_win_1(x/20,y/20)){//判斷輸贏1 lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_2(x/20,y/20)){//判斷輸贏2 lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_3(x/20,y/20))//判斷輸贏3{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_4(x/20,y/20))//判斷輸贏4{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; }//判斷輸贏程序?qū)崿F(xiàn)在詳細(xì)過程 publicbooleanGame_win_1(intx,inty){//橫向判斷輸贏 intx1,y1,t=1; x1=x; y1=y; for(inti=1;i<5;i++){ if(x1>15){ break; } if(intGame_Body[x1+i][y1]==intGame_Body[x][y]){ t+=1; } else{ break; } } for(inti=1;i<5;i++){ if(x1<1) break; } if(intGame_Body[x1-i][y1]==intGame_Body[x][y]) t+=1; } else{ break; } } if(t>4){ returntrue; } else{ returnfalse; } } publicbooleanGame_win_2(intx,inty){//縱向判斷輸贏 intx1,y1,t=1; x1=x; y1=y; for(inti=1;i<5;i++){ if(x1>15){ break; } if(intGame_Body[x1][y1+i]==intGame_Body[x][y]){ t+=1; } else{ break; } } for(inti=1;i<5;i++){ if(x1<1){ break; } if(intGame_Body[x1][y1-i]==intGame_Body[x][y]){ t+=1; } else{ break; } } if(t>4){ returntrue; } else{ returnfalse; } } publicbooleanGame_win_3(intx,inty)//左斜判斷輸贏{ intx1,y1,t=1; x1=x; y1=y; for(inti=1;i<5;i++){ if(x1>15){ break; } if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y]){ t+=1; } else{ break; } } for(inti=1;i<5;i++){ if(x1<1){ break; } if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]){ t+=1; } else{ break; } } if(t>4){ returntrue; } else{ returnfalse; }} publicbooleanGame_win_4(intx,inty){//左斜判斷輸贏 intx1,y1,t=1; x1=x; y1=y; for(inti=1;i<5;i++){ if(x1>15) { break; } if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y]) { t+=1; } else { break; } } for(inti=1;i<5;i++){ if(x1<1){ break; } if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]){ t+=1; } else{ break; } } if(t>4){ returntrue; } else{ returnfalse; } }4.系統(tǒng)測(cè)試4.1進(jìn)入游戲的界面分析:游戲開始的界面有三個(gè)選擇項(xiàng),用戶可以選擇相應(yīng)的角色,選擇完畢后點(diǎn)擊開始進(jìn)入游戲。用戶也可以在下面的聊天框中進(jìn)行聊天。4.2選擇角色,點(diǎn)擊開始,開始下棋分析:首先達(dá)到五個(gè)棋子連在一塊的贏了,并在紅色區(qū)域顯示誰贏了!4.3下完后點(diǎn)擊重新開始分析:下完一盤后游戲停止,點(diǎn)擊重新開始,界面回到初始界面,選擇角色繼續(xù)游戲.4.4游戲過程中退出,自動(dòng)判輸分析:在下棋的過程當(dāng)中誰中途退出,即點(diǎn)擊退出,系統(tǒng)自動(dòng)判斷誰輸4.5改進(jìn)想法這個(gè)系統(tǒng)基本上實(shí)現(xiàn)了要求但是在有些方面還不夠完善。觀看角色點(diǎn)擊后不會(huì)出發(fā)什么事件,雖然觀看者并不需要做什么但是點(diǎn)擊之后并沒有發(fā)生任何反應(yīng)總感覺缺點(diǎn)什么。想加個(gè)什么功能,但是又不知道加什么才不至于畫蛇添足。這是一個(gè)單機(jī)版的五子棋游戲,本來想要加入多人游戲模式,但是編程過程中遇到很多問題沒能解決,所以還需要學(xué)習(xí)更多的專業(yè)知識(shí)去完善。5.設(shè)計(jì)總結(jié)這個(gè)課設(shè)題對(duì)我來說有一定的挑戰(zhàn)性,因?yàn)槲易约阂膊恢雷约旱降讓W(xué)到了一個(gè)什么樣的境界。但可以肯定,這個(gè)課設(shè)題的要求絕對(duì)在我的能力范圍以上。之所以選擇這個(gè)題目是想逼著自己去查更多的資料,學(xué)到更多的東西。結(jié)果也確實(shí)是這樣的,我在這次課設(shè)中學(xué)到了不少東西,也理解了許多原來不理解的東西。盡管這個(gè)系統(tǒng)做的并不是那么的完善。對(duì)于Java中的引用,初始化類等,開始我并不是非常的理解,知道就這么做就能實(shí)現(xiàn)相應(yīng)的功能了,并沒有很深刻的去理解它為什么要這么做。但是真正的要用Java去做一個(gè)東西不理解它是不行的,而且其間這課設(shè)涉及到了Java中的絕大多數(shù)的知識(shí)點(diǎn),如Java圖形用戶界面設(shè)計(jì)、Java的異常處理機(jī)制、Java中的多線程程序設(shè)計(jì)、Java輸入輸出流,要應(yīng)用這些東西更要求我去好好理解Java的這些規(guī)則。好在有一定的C++基礎(chǔ)Java與C++語法類似,并把C++中一些較低級(jí)和較難以理解的功能都去掉了,如多繼承、指針等,同時(shí)Java增強(qiáng)了部分功能。所以理解起來也比較容易。但是理解了Java的規(guī)則要把這個(gè)課設(shè)做好也不是那么容易,最難的部分是如何實(shí)現(xiàn)各個(gè)功能的劃分和類的通訊問題。我在這方面就遇到了不少的問題??偨Y(jié)這次課設(shè),我還是收獲不少。雖然界面也不是很美觀,有點(diǎn)功能間的連接做的也不是特別的好,但是我能認(rèn)識(shí)到自己的不足,并且在跟同學(xué)的交流中也學(xué)到了一些他們的設(shè)計(jì)思路,也知道今后要加強(qiáng)哪些方面的知識(shí)。6.參考文獻(xiàn)1.吳其慶編著.Java程序設(shè)計(jì)實(shí)例教程.北京,冶金工業(yè)出版社2.柳西玲.許斌編著.Java語言應(yīng)用開發(fā)基礎(chǔ).北京,清華大學(xué)出版社3.(美)CayS.HorsttmannGaryCornellJAVA核心技術(shù)卷i基礎(chǔ)知識(shí)(原書第七版)機(jī)械工業(yè)出版社4.丁振凡Java語言實(shí)用教程,北京郵電大學(xué)出版社5.附錄(源代碼)importjava.io.*;importjava.applet.*;importjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;importjava.awt.Color;publicclassWcyChessextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{ intcolor_Qizi=0;//旗子的顏色標(biāo)識(shí)0:白子1:黑子 intintGame_Start=0;//游戲開始標(biāo)志0未開始1游戲中 intintGame_Body[][]=newint[16][16];//設(shè)置棋盤棋子狀態(tài) intm=-1; Buttonb1=newButton("開始"); Buttonb2=newButton("重置游戲"); LabellblWin=newLabel(""); CheckboxckbHB[]=newCheckbox[3]; Buttonexist=newButton("退出"); CheckboxGroupckgHB=newCheckboxGroup(); publicvoidinit(){ setLayout(null); addMouseListener(this); add(b1); b1.setBounds(330,50,80,30); b1.addActionListener(this); add(b2); b2.setBounds(330,90,80,30); b2.addActionListener(this); ckbHB[0]=newCheckbox("執(zhí)白",ckgHB,false); ckbHB[0].setBounds(320,20,60,30); ckbHB[1]=newCheckbox("執(zhí)黑",ckgHB,false); ckbHB[1].setBounds(380,20,60,30); ckbHB[2]=newCheckbox("觀看",ckgHB,false); add(ckbHB[0]); add(ckbHB[1]); add(ckbHB[2]); ckbHB[0].addItemListener(this); ckbHB[1].addItemListener(this); add(lblWin); lblWin.setBounds(330,180,80,30); lblWin.setBackground(Color.red); lblWin.setText("勝利者!");//沒有顯示? ckbHB[2].setBounds(440,20,60,30); add(exist); exist.setBounds(330,130,80,30); exist.addActionListener(this);// add(chat);chat.setBounds(20,500,300,300); Game_start_csh(); setSize(500,600); setVisible(true); } publicvoiditemStateChanged(ItemEvente){ if(ckbHB[0].getState())//選擇黑子還是白子 { color_Qizi=0; } else { color_Qizi=1; } } publicvoidmousePressed(MouseEvente){} publicvoidmouseClicked(MouseEvente){ Graphicsg=getGraphics(); intx1,y1; x1=e.getX(); y1=e.getY(); if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){ return; } if(x1%20>10){ x1+=10; } if(y1%20>10){ y1+=10; } x1=x1/20*20; y1=y1/20*20; set_Qizi(x1,y1); m*=(-1); } publicvoidactionPerformed(ActionEvente){ Graphicsg=getGraphics(); if(e.getSource()==b1){ Game_start(); } else{ Game_re(); } if(e.getSource()==exist){ Game_re();// color_Qizi=m; lblWin.setText(Get_qizi_color(color_Qizi)+"輸了!"); intGame_Start=0; } } publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} publicvoidmouseReleased(MouseEvente){} publicvoidmouseDragged(MouseEvente){} publicvoidmouseMoved(MouseEvente){} publicvoidpaint(Graphicsg){ draw_qipan(g); } publicvoidset_Qizi(intx,inty){//落子 if(intGame_Start==0){//判斷游戲未開始 return; } if(intGame_Body[x/20][y/20]!=0){ return; } Graphicsg=getGraphics(); if(color_Qizi==1){//判斷黑子還是白子 g.setColor(Color.black); color_Qizi=0; } else{ g.setColor(Color.white); color_Qizi=1; } g.fillOval(x-10,y-10,20,20); intGame_Body[x/20][y/20]=color_Qizi+1; if(Game_win_1(x/20,y/20)){//判斷輸贏1 lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_2(x/20,y/20)){//判斷輸贏2{ lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_3(x/20,y/20)){//判斷輸贏3 lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } if(Game_win_4(x/20,y/20)){//判斷輸贏4 lblWin.setText(Get_qizi_color(color_Qizi)+"贏了!"); intGame_Start=0; } } publicStringGet_qizi_color(intx) { if(x==0) { return"黑子"; } else { return"白子"; } } publicvoiddraw_qipan(GraphicsG){//畫棋盤15*15 G.setColor(Color.lightGray); G.fill3DRect(10,10,300,300,true); G.setColor(Color.black); for(inti=1;i<16;i++){ G.drawLine(20,20*i,300,20*i); G.drawLine(20*i,20,20*i,300); } } publicvoidGame_start(){//游戲開始 intGame_Start=1; Game_btn_enable(false); b2.setEnabled(true); } publicvoidGame_start_csh(){//游戲開始初始化 intGame_Start=0; Game_btn_enable(true); b2.setEnabled(false); ckbHB[0].setState(true); for(inti=0;i<16;i++){ for(intj=0;j<16;j++){ intGame_Body[i][j]=0; } } lblWin.setText(""); } publicvoidGame_re(){//重新開始游戲 repaint(); Game_start_csh(); } publicvoidGame_btn_enable(booleane){//設(shè)置組件狀態(tài) b1.setEnabled(e); b2.setEnabled(e); ckbHB[0].setEnabled(e); ckbHB[1].setEna

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論