java五子棋小游戏

  • j2_323096
    了解作者
  • 787.5KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-15 07:20
    上传日期
内含 程序原代码 jar包(可双击直接进入游戏) word功能描述文档
五子棋.rar
  • wuziqiDemo.jar
    23.2KB
  • www
  • aFiveChese.class
    5.6KB
  • Test.java
    930B
  • 白纸.png
    26.1KB
  • GameUitl.java
    476B
  • FiveChese.java
    5.8KB
  • 五子棋.doc
    706.5KB
  • 5e.jar
    59KB
  • bin
  • 白纸.png
    26.1KB
内容介绍
package www; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JOptionPane; public class FiveChese extends JFrame implements MouseListener{ //取得屏幕的宽度和高度 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; //初始化背景图片 BufferedImage bgimage = null; int x;int y; //保存之前下过的全部棋子的坐标 int[][] a = new int[20][20]; //表示当前是黑棋还是白棋走下一步 boolean isBlack; //标识当前游戏是否可以继续 boolean play = true; public FiveChese(){ //设置标题 this.setTitle(" "); //设置窗体大小 this.setSize(600, 600); //设置居中显示 this.setLocation((width-600)/2, (height-600)/2); //将窗体大小设置为不可变 this.setResizable(false); //点击关闭按钮时,使程序结束 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //加入鼠标监听 addMouseListener(this); try { // ImageIO.setUseCache(false); // bgimage = ImageIO.read(new File("f:/图片/白纸.png")); bgimage = ImageIO.read(new File("bin/www/白纸.png")); // bgimage = ImageIO.read(new File("bin/白纸.png")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //设置窗体是否显示(true则会显示) this.setVisible(true); } public void paint(Graphics g){ g.drawImage(bgimage, 0, 0, this); g.setFont(new Font("黑体",20,15)); g.drawString(" ", 5, 45); //画个棋盘,空隙25,共19条线可落子 for(int i =0;i<19;i++){ g.drawLine(75, 75+i*25, 525, 75+i*25); g.drawLine(75+i*25, 75, 75+i*25, 525); } //标点 //g.drawRect(x, y, 17, 17); g.fillOval(122, 122, 6, 6); g.fillOval(122, 523-50, 6, 6); g.fillOval(523-50, 123, 6, 6); g.fillOval(523-50, 523-50, 6, 6); g.fillOval(297, 297, 6, 6); //中心 //画棋子 1为黑2为白 for(int i=0;i<19;i++){ for(int j =0;j<19;j++){ if(a[i][j] == 1){ int tempx=i*25+75; int tempy=j*25+75; g.fillOval(tempx-7,tempy-7, 14, 14); } if(a[i][j] == 2){ int tempx=i*25+75; int tempy=j*25+75; g.setColor(Color.white); g.fillOval(tempx-7, tempy-7, 14, 14); g.setColor(Color.black); g.drawOval(tempx-7, tempy-7, 14, 14); } } } } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { // System.out.println("x坐标-->"+e.getX()); // System.out.println("y坐标-->"+e.getY()); x = e.getX(); // y = e.getY(); // if(play==true){ if(x>=75&&x<=525&&y>=75&&y<=525){ /* x=(x-75)/25; y=(y-75)/25;*/ if((x-75)%25*2 >= 25){ x=(x-75)/25+1; }else{ x=(x-75)/25; } if((y-75)%25*2 >= 25){ y=(y-75)/25+1; }else{ y=(y-75)/25; } //判断要下的是白还是黑 if(a[x][y]==0){ if(isBlack == true){ a[x][y]=1; isBlack=false; } else{ a[x][y] =2; isBlack=true; } } else{ Component panel = null; JOptionPane.showMessageDialog(this, "此处已有棋子,换个位置落子"); } //五子连珠 胜负已分 游戏结束 boolean winFlag = this.win(); if(winFlag == true){ play=false; JOptionPane.showMessageDialog(this, " 游戏结束,"+(a[x][y]==1?" 黑方":"白方"+"胜利")); } this.repaint(); } } if(e.getX()>=107&&e.getX()<=179&&e.getY()>=39&&e.getY()<=64){ int result = JOptionPane.showConfirmDialog(this, "重新开始游戏?"); if(result==0){ for(int i=0;i<19;i++){ for(int j=0;j<19;j++){ a[i][j]=0; } } this.repaint(); play=true; } } if(e.getX()>=236&&e.getX()<=328&&e.getY()>=39&&e.getY()<=66){ JOptionPane.showMessageDialog(this, "达到→,↑,↗,↘四个方向相同颜色的棋子5个即为胜利"); } if(e.getX()>=388&&e.getX()<=501&&e.getY()>=39&&e.getY()<=64){ int result = JOptionPane.showConfirmDialog(this, " →_→ ,我认输还不行嘛,老子不玩了"); if(result == 0){ if(isBlack){ JOptionPane.showMessageDialog(this, "黑方认输,游戏结束!"); } else{ JOptionPane.showMessageDialog(this, "白方认输,游戏结束!"); } play=false; } } } private boolean win(){ boolean flag = false; int color = a[x][y]; //判断横向是否有5个棋子相连 int count=1; /* if(color==a[x+1][y]){ if(color==a[x+2][y]){ count++; if(color==a[x+3][y]){ count++; if(color==a[x+4][y]){ count++; } } } }*/ int i = 1; while(color==a[x+i][y]){ count++; i++; } i = 1; while(color==a[x-i][y]){ count++; i++; } if(count>=5){ flag=true; } //判断竖着的是否有5个棋子相连 int j =1; int count2=1; while(color==a[x][y+j]){ count2++; j++; } j = 1; while(color==a[x][y-j]){ count2++; j++; } if(count2>=5){ flag=true; } //判断左上到右下是否有5个相连 int p=1; int count3=1; while(color==a[x+p][y+p]){ p++; count3++; } p=1; while(color==a[x-p][y-p]){ p++; count3++; } if(count3>=5){ flag=true; } //判断左下-右上是否有5个相连的 int q =1;int count4=1; while(color==a[x-q][y+q]){ q++; count4++; } q=1; while(color==a[x+q][y-q]){ q++; count4++;} if(count4>=5){ flag=true; } return flag; } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } } //
评论
    相关推荐
    • Java
      Java
    • java
      Java
    • Java
      Java
    • Java
      Java项目
    • Java
      Java 对于Java练习
    • java
      Java 此回购包括我学习Java的旅程。
    • java
      Java Java基础
    • Java
      Java
    • Java
      Java 我创建的Java项目
    • Java
      Java 2021/02/19 .java Main.java 学生.java Bmi.java 。班级 Bmi类 主类 MyBmi.class 学生班 学生样本类 2021/02/20 .java DeleteFile.java WriteFile.java MyDataPrint.java 。班级 DeleteFile.class ...