Java实现五子棋小游戏

这是一个使用Java实现的五子棋小游戏,包括棋盘绘制、棋子放置、游戏规则判断等功能。玩家可以在图形界面中进行对弈,游戏提供背景音乐,并支持时间和回合限制。程序实现了鼠标监听事件来响应玩家的落子操作,通过检查赢棋条件判断游戏结果。
摘要由CSDN通过智能技术生成

运行结果:


主类:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ChessFrame c = new ChessFrame();

        ChessFrame.MusicPlayer.playMusic(ChessFrame.MusicPlayer.BGM); //调用自定义函数播放音乐

        Scanner scan = new Scanner(System.in);
        while (true){
            System.out.println("输入0停止音乐");
            if (scan.nextInt() == 0) {
                closeMusic();    //调用自定义方法关闭音乐
                break;
            }
        }

    }

    private static void closeMusic() {
        if (ChessFrame.MusicPlayer.music!=null)    //需要判断music是否为null,避免出现空指针异常
            ChessFrame.MusicPlayer.music.stop();//暂停音乐

    }

}

 

代码:


​​​​​
import java.awt.Color;
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.sound.sampled.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class ChessFrame extends JFrame implements MouseListener,Runnable {

    /**
     *声明需要用到的主要变量
     *
     *    思路:
     *      1.绘制棋盘界面
     *      2.绘制棋子
     *      3.背景图片/
     *      4.判断输赢的方法
     *      5.时间限制(倒计时)
     *      6.鼠标事件监听
     */
    private static final long serialVersionUID = 1L;  //定义程序序列化ID

    int width = Toolkit.getDefaultToolkit().getScreenSize().width;   //取得屏幕的宽度和高度
    int height = Toolkit.getDefaultToolkit().getScreenSize().height;

    BufferedImage bgImage = null;   //背景图片

    int x = 0;//保存棋子的坐标
    int y = 0;

    //保存之前下过的全部棋子的坐标    数组中默认初始值为 0,则代表没有棋子   1代表黑子   2代表白子
    int[][] allChess = new int[19][19];

    boolean isBack = true; //标识当前是黑棋还是白棋
    int i, j;
    boolean canPlay = true;//标识当前游戏是否可以继续

    String message = "黑方先行";  //游戏信息提示

    boolean start = false;//点击开始游戏之后才可以进行操作棋盘
    int maxTime = 0;//保存最多拥有多少时间
    Thread t = new Thread(this);//做倒计时的线程类

    int blackTime = 0;    //保存黑方和白方的剩余时间
    int whiteTime = 0;

    String blackMessage = "无限制∞";    //保存黑白方剩余时间的显示信息
    String whiteMessage = "无限制∞";

    @SuppressWarnings("deprecation")
    public ChessFrame() {

        this.setTitle("*-五子棋-*");//设置标题

        this.setSize(850, 790);//设置窗体大小

        this.setLocation((width - 500) / 2, (height - 500) / 2);//设置窗体出现位置

        this.setResizable(false);//将窗体设置为大小不可改变
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //将窗体的关闭方式设置为默认关闭后程序结束
        this.setVisible(true);//将窗体显示出来
        this.addMouseListener(this);//为窗体加入监听器

        t.start();//开启线程

        t.suspend();//线程挂起

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值