Java实现五子棋游戏的完整代码

论坛 期权论坛 脚本     
niminba   2021-5-23 02:46   1484   0

用Java编写简单的五子棋,供大家参考,具体内容如下

前言

这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的:

界面很丑我知道,本人虽有几年PS基础,但知识浅薄,审美观不尽人意,做到如此实属极限(其实我懒得做了),大家将就着看看吧。

下面放出代码,为方便大家参考,我几乎每条代码都标有注释。   

测试类代码

public class Test {
 public static void main(String[] args) {
 MyJFrame mj=new MyJFrame();
 mj.myJFrame();
 }
}

MyJFrame类代码

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class MyJFrame extends JFrame implements MouseListener {
 int qx = 20, qy = 40, qw = 490, qh = 490;//棋盘位置、宽高
 int bw = 150, bh = 50, bx = 570, by = 150;//按钮宽高、位置
 int x = 0, y = 0;//保存棋子坐标
 int[][] SaveGame = new int[15][15];//保存每个棋子
 int qc = 1;//记录白棋=2,黑棋=1
 int qn = 0;//判断棋子是否重复
 boolean canplay = true;//判断游戏是否开始和结束
 String go = "黑子先行";//游戏信息


 //---------------------------------------------------------------------------------------------------------------------
 //窗体
 public void myJFrame() {

 this.setTitle("五子棋"); //标题
 this.setSize(800, 550); //窗口大小
 this.setResizable(false); //窗口是否可以改变大小=否
 this.setDefaultCloseOperation(MyJFrame.EXIT_ON_CLOSE);//窗口关闭方式为关闭窗口同时结束程序

 int width = Toolkit.getDefaultToolkit().getScreenSize().width;//获取屏幕宽度
 int height = Toolkit.getDefaultToolkit().getScreenSize().height;//获取屏幕高度
// System.out.println("宽度:"+width);//测试
// System.out.println("高度:"+height);//测试

 this.setLocation((width - 800) / 2, (height - 600) / 2); //设置窗口默认位置以屏幕居中

 this.addMouseListener(this);

 this.setVisible(true); //窗口是否显示=是
 }


 //---------------------------------------------------------------------------------------------------------------------
 //覆写paint方法,绘制界面
 public void paint(Graphics g) {

 //双缓冲技术防止屏幕闪烁
 BufferedImage bi = new BufferedImage(800, 550, BufferedImage.TYPE_INT_ARGB);
 Graphics g2 = bi.createGraphics();

 //获取图片路径
 BufferedImage image = null;
 try {
  image = ImageIO.read(new File("D:/#Java/五子棋/tp/wzqbj.jpg"));
 } catch (IOException e) {
  e.printStackTrace();
 }
 g2.drawImage(image, 10, 10, this);//显示图片

 g2.setColor(Color.BLACK);//设置画笔颜色
 g2.setFont(new Font("华文行楷", 10, 50));//设置字体
 g2.drawString("晓时五子棋", 525, 100);//绘制字符

 //棋盘
 g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//设置画笔颜色
 g2.fillRect(qx, qy, qw, qh);//绘制棋盘背景矩形

 //开始按钮
 g2.setColor(Color.WHITE);//设置画笔颜色
 g2.fillRect(bx, by, bw, bh);//绘制开始按钮
 g2.setFont(new Font("华文行楷", 10, 30));//设置字体
 g2.setColor(Color.black);//设置画笔颜色
 g2.drawString("开始", 615, 185);//绘制字符

 //悔棋按钮
 g2.setColor(Color.LIGHT_GRAY);//设置画笔颜色
 g2.fillRect(bx, by + 60, bw, bh);//绘制悔棋按钮
 g2.setFont(new Font("华文行楷", 10, 30));//设置字体
 g2.setColor(Color.WHITE);//设置画笔颜色
 g2.drawString("悔棋", 615, 245);//绘制字符

 //认输按钮
 g2.setColor(Color.GRAY);//设置画笔颜色
 g2.fillRect(bx, by + 120, bw, bh);//绘制认输按钮
 g2.setFont(new Font("华文行楷", 10, 30));//设置字体
 g2.setColor(Color.WHITE);//设置画笔颜色
 g2.drawString("认输", 615, 305);//绘制字符

 //游戏信息栏
 g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//设置画笔颜色
 g2.fillRect(550, 350, 200, 150);//绘制游戏状态区域
 g2.setColor(Color.black);//设置画笔颜色
 g2.setFont(new Font("黑体", 10, 20));//设置字体
 g2.drawString("游戏信息", 610, 380);//绘制字符
 g2.drawString(go, 610, 410);//绘制字符
 g2.drawString("作者:晓时谷雨", 560, 440);//绘制字符
 g2.drawString("联系方式:", 560, 465);//绘制字符
 g2.drawString("qq 717535996", 560, 490);//绘制字符


 g2.setColor(Color.BLACK);//设置画笔颜色

 //绘制棋盘格线
 for (int x = 0; x <= qw; x += 35) {
  g2.drawLine(qx, x + qy, qw + qx, x + qy);//绘制一条横线
  g2.drawLine(x + qx, qy, x + qx, qh + qy);//绘制一条竖线
 }

 //绘制标注点
 for (int i = 3; i <= 11; i += 4) {
  for (int y = 3; y <= 11; y += 4) {
  g2.fillOval(35 * i + qx - 3, 35 * y + qy - 3, 6, 6);//绘制实心圆
  }
 }


 //绘制棋子
 for (int i = 0; i < 15; i++) {
  for (int j = 0; j < 15; j++) {
  if (SaveGame[i][j] == 1)//4(=*4(I5Ё4((=(5Ё4((=4(5Ё4(4(v4(nb"GWj*^c*r'rZ34(nkr'j?"?{:c4(нMх}?"?4(нMх}?"?4(нMх}ZZ_"?nB 4(нMх}M<:p4(нMх}?"?4(нM乡х}?"?4(brZj3ro疒j惚r'&*rokkR2
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP