Java實(shí)現(xiàn)五子棋單機(jī)版_第1頁(yè)
Java實(shí)現(xiàn)五子棋單機(jī)版_第2頁(yè)
Java實(shí)現(xiàn)五子棋單機(jī)版_第3頁(yè)
Java實(shí)現(xiàn)五子棋單機(jī)版_第4頁(yè)
Java實(shí)現(xiàn)五子棋單機(jī)版_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第Java實(shí)現(xiàn)五子棋單機(jī)版本文實(shí)例為大家分享了Java實(shí)現(xiàn)五子棋單機(jī)版的具體代碼,供大家參考,具體內(nèi)容如下

Java五子棋設(shè)計(jì)流程:

1.創(chuàng)建窗口和設(shè)計(jì)一個(gè)棋盤界面

2.實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊,棋子出現(xiàn),黑白棋輪流下

3.能夠判斷輸贏

4.添加按鈕功能

實(shí)現(xiàn)結(jié)果圖:

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.Cursor;

importjava.awt.FlowLayout;

importjava.awt.Graphics;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.IOException;

importjavax.imageio.ImageIO;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

publicclassTest{

publicstaticvoidmain(String[]args){

newMyFrame();

}

classMyFrameextendsJFrameimplementsMouseListener{

//保存坐標(biāo)

intx;

inty;

intx1;

inty1;

//黑子數(shù)

//白子數(shù)

//1是黑下,2是白下

//默認(rèn)開(kāi)始是黑旗先下

intflag=1;

//表示游戲是否結(jié)束

//true游戲開(kāi)始,false游戲結(jié)束,不能再下

booleancanPlay=true;

//保存之前下過(guò)的棋子的坐標(biāo)

//'0'代表沒(méi)有棋子,'1'代表黑棋,'2'代表白棋

int[][]allChess=newint[19][19];

//int[][]allChess=newint[25][25];

//當(dāng)前棋子的總數(shù)

intchessSum=0;

BufferedImagebgImage=null;

JButtonwithdraw=newJButton("悔棋");

JButtonrestart=newJButton("重新開(kāi)始");

JButtonexit=newJButton("退出");

JPanelsouth=newJPanel();

publicMyFrame(){

this.setTitle("五子棋");

setSize(630,700);

setLayout(newBorderLayout());

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try{

bgImage=ImageIO.read(newFile("C:\\Users\\us\\Desktop\\1.jpg"));

}catch(IOExceptione1){

e1.printStackTrace();

}

addMouseListener(this);//將窗體加入監(jiān)聽(tīng)

south.setLayout(newFlowLayout(FlowLayout.LEFT,60,30));

south.add(restart);

south.add(withdraw);

south.add(exit);

//初始化按鈕事件監(jiān)聽(tīng)器內(nèi)部類

MybuttonListenerbuttonListener=newMybuttonListener();

//將三個(gè)按鈕事件注冊(cè)監(jiān)聽(tīng)事件

restart.addActionListener(buttonListener);

withdraw.addActionListener(buttonListener);

exit.addActionListener(buttonListener);

//將按鈕面板加到窗體的南部

this.add(south,BorderLayout.SOUTH);

setVisible(true);

}

publicvoidpaint(Graphicsg){

inttempSum=chessSum;

//棋盤

g.drawImage(bgImage,8,30,this);

for(intcolum=58;colum600;colum=colum+30){//行

g.drawLine(38,colum,578,colum);

}

for(intrand=38;randrand=rand+30){//列

g.drawLine(rand,58,rand,598);

}

//黑點(diǎn)

g.fillOval(122,143,10,10);

g.fillOval(484,143,10,10);

g.fillOval(122,504,10,10);

g.fillOval(303,353,10,10);

g.fillOval(484,503,10,10);

g.fillOval(122,355,10,10);

g.fillOval(484,355,10,10);

g.fillOval(303,145,10,10);

g.fillOval(303,503,10,10);

for(inti=0;iallChess.length;i++){

for(intj=0;jallChess.length;++j){

//下黑子

if(allChess[i][j]==1){

inttempX=i*30+38;//左邊界到棋盤的距離

inttempY=j*30+58;//上邊界到棋盤的距離

g.setColor(Color.black);

g.fillOval(tempX-13,tempY-13,25,25);

}

//下白子

if(allChess[i][j]==2){

inttempX=i*30+38;

inttempY=j*30+58;

g.setColor(Color.white);

g.fillOval(tempX-13,tempY-13,25,25);

}

}

}

//最后棋子用紅框表示

if(chessSum0){

g.setColor(Color.red);

g.drawRect(x*30+38-13,y*30+58-13,25,25);

}

//g.setColor(Color.red);

//g.drawRect(x1*30+38-13,y1*30+58-13,25,25);

chessSum++;

System.out.println("總數(shù)為"+(chessSum-1));

}

publicvoidmouseClicked(MouseEvente){

x=e.getX();

y=e.getY();

//System.out.println("x="+e.getX()+""+"y="+e.getY());

if(canPlay){

if(x=38x=588y=58y=620){

x=(x-38)/30;//38起點(diǎn),適應(yīng)19x19

y=(y-58)/30;

if(allChess[x][y]==0){//此點(diǎn)沒(méi)有棋子,才可下

//判斷該由哪方下棋

if(flag==1){//'1'代表由黑方下

allChess[x][y]=1;//'1'表示此處放黑棋

this.checkFive();//判斷黑棋是否五子相連

flag=2;

}

else{

allChess[x][y]=2;//'2'表示此處放白棋

this.checkFive();//判斷白棋是否五子相連

flag=1;//'1'代表由黑方下

}

this.repaint();

}

}

}

}

//判斷五子相連

public

voidcheckFive(){

//把要下的棋子顏色保存

intcolor=allChess[x][y];

//計(jì)算已連棋子個(gè)數(shù)

intcount=1;

//判斷橫向右邊是否五子

for(inti=1;ii++){

if(x=15)

break;

if(color==allChess[x+i][y]){

count++;

}

checkWin(count);

}

count=1;

//判斷橫向左邊是否五子

for(inti=1;ii++){

if(x=3)//當(dāng)棋子左邊無(wú)法連成五子,直接退出

break;

if(color==allChess[x-i][y]){

count++;

}

checkWin(count);

}

count=1;

//判斷豎向下邊是否五子

for(inti=1;ii++){

if(y=15)//當(dāng)棋子左邊無(wú)法連成五子,直接退出

break;

if(color==allChess[x][y+i]){

count++;

}

checkWin(count);

}

count=1;

//判斷豎向上邊是否五子

for(inti=1;ii++){

if(y=3)//當(dāng)棋子豎向上邊無(wú)法連成五子,直接退出

break;

if(color==allChess[x][y-i]){

count++;

}

checkWin(count);

}

count=1;

//判斷右斜上邊是否五子

for(inti=1;ii++){

if(y=3||x=15)//當(dāng)棋子右斜上邊無(wú)法連成五子,直接退出

break;

if(color==allChess[x+i][y-i]){

count++;

}

checkWin(count);

}

count=1;

//判斷左斜向下邊是否五子

for(inti=1;ii++){

if(x=3||y=15)//當(dāng)棋子左斜向下邊無(wú)法連成五子,直接退出

break;

if(color==allChess[x-i][y+i]){

count++;

}

checkWin(count);

}

count=1;

//判斷左斜向上邊是否五子

for(inti=1;ii++){

if(x=3||y=3)

break;

if(color==allChess[x-i][y-i]){

count++;

}

checkWin(count);

}

count=1;

//判斷右斜向下邊是否五子

for(inti=1;ii++){

if(y=15||x=15)

break;

if(color==allChess[x+i][y+i]){

count++;

}

checkWin(count);

}

count=1;

}

publicvoidmouseEntered(MouseEvente){

x1=e.getX();

y1=e.getY();

if(x1=38x1=588y1=58y1=620){

setCursor(newCursor(Cursor.HAND_CURSOR));

}

}

publicvoidmouseExited(MouseEventarg0){

//TODOAuto-generatedmethodstub

}

publicvoidmousePressed(MouseEventarg0){

}

publicvoidmouseReleased(MouseEvente){

publicvoidcheckWin(intcount){

if(count=5){//五子相連

if(allChess[x][y]==1){

JOptionPane.showMessageDialog(this,"黑方勝出!!!!!!");

}

if(allChess[x][y]==2){

JOptionPane.showMessageDialog(this,"白方勝出!!!!!!");

}

canPlay=false;//游戲結(jié)束

}

}

//重新開(kāi)始

publicvoidrestartGame(){

溫馨提示

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

評(píng)論

0/150

提交評(píng)論