当前位置: 首页 > news >正文

Java+Swing实现的五子棋游戏

Java+Swing实现的五子棋游戏

  • 一、系统介绍
  • 二、功能展示
    • 1.游戏展示
  • 三、系统实现
    • 1.ChessFrame .java
  • 四、其它
    • 1.其他系统实现

一、系统介绍

五子棋游戏实现人机对战、人人对战两个模式。

二、功能展示

1.游戏展示

在这里插入图片描述

三、系统实现

1.ChessFrame .java

package five;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;import view.UserFrame;public class ChessFrame extends JFrame implements ActionListener {public static boolean iscomputer = true, checkcomputer = true;private String[] strsize = {"标准棋盘", "改进棋盘", "扩大棋盘"};private String[] strmode = {"人机对战", "人人对战"};private int width, height;private ChessModel cm;private MainPanel mp;public ChessFrame() {this.setTitle("五子棋游戏");cm = new ChessModel(1);mp = new MainPanel(cm);Container con = this.getContentPane();con.add(mp, "Center");this.setResizable(false);this.addWindowListener(new ChessWindowEvent());MapSize(14, 14);JMenuBar mbar = new JMenuBar();this.setJMenuBar(mbar);JMenu gameMenu = new JMenu("游戏");mbar.add(makeMenu(gameMenu, new Object[]{"开局", null, "棋盘", null, "模式", null, "退出"}, this));JMenu lookMenu = new JMenu("外观");mbar.add(makeMenu(lookMenu, new Object[]{"类型一", "类型二", "类型三"}, this));JMenu userMenu = new JMenu("用户管理");mbar.add(makeMenu(userMenu, new Object[]{"用户管理"}, this));JMenu helpMenu = new JMenu("版本");mbar.add(makeMenu(helpMenu, new Object[]{"关于"}, this));this.setLocationRelativeTo(null);}public JMenu makeMenu(Object parent, Object items[], Object target) {JMenu m = null;if (parent instanceof JMenu)m = (JMenu) parent;else if (parent instanceof String)m = new JMenu((String) parent);elsereturn null;for (int i = 0; i < items.length; i++)if (items[i] == null)m.addSeparator();else if (items[i] == "棋盘") {JMenu jm = new JMenu("棋盘");ButtonGroup group = new ButtonGroup();JRadioButtonMenuItem rmenu;for (int j = 0; j < strsize.length; j++) {rmenu = makeRadioButtonMenuItem(strsize[j], target);if (j == 0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);} else if (items[i] == "模式") {JMenu jm = new JMenu("模式");ButtonGroup group = new ButtonGroup();JRadioButtonMenuItem rmenu;for (int h = 0; h < strmode.length; h++) {rmenu = makeRadioButtonMenuItem(strmode[h], target);if (h == 0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);} elsem.add(makeMenuItem(items[i], target));return m;}public JMenuItem makeMenuItem(Object item, Object target) {JMenuItem r = null;if (item instanceof String)r = new JMenuItem((String) item);else if (item instanceof JMenuItem)r = (JMenuItem) item;elsereturn null;if (target instanceof ActionListener)r.addActionListener((ActionListener) target);return r;}public JRadioButtonMenuItem makeRadioButtonMenuItem(Object item, Object target) {JRadioButtonMenuItem r = null;if (item instanceof String)r = new JRadioButtonMenuItem((String) item);else if (item instanceof JRadioButtonMenuItem)r = (JRadioButtonMenuItem) item;elsereturn null;if (target instanceof ActionListener)r.addActionListener((ActionListener) target);return r;}public void MapSize(int w, int h) {setSize(w * 24, h * 27);if (this.checkcomputer)this.iscomputer = true;elsethis.iscomputer = false;mp.setModel(cm);mp.repaint();}public boolean getiscomputer() {return this.iscomputer;}public void restart() {int modeChess = cm.getModeChess();if (modeChess <= 3 && modeChess >= 0) {cm = new ChessModel(modeChess);MapSize(cm.getWidth(), cm.getHeight());}}public void actionPerformed(ActionEvent e) {String arg = e.getActionCommand();try {if (arg.equals("类型三"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");else if (arg.equals("类型二"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");elseUIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");SwingUtilities.updateComponentTreeUI(this);} catch (Exception ee) {}if (arg.equals("标准棋盘")) {this.width = 14;this.height = 14;cm = new ChessModel(1);MapSize(this.width, this.height);SwingUtilities.updateComponentTreeUI(this);}if (arg.equals("改进棋盘")) {this.width = 18;this.height = 18;cm = new ChessModel(2);MapSize(this.width, this.height);SwingUtilities.updateComponentTreeUI(this);}if (arg.equals("扩大棋盘")) {this.width = 22;this.height = 22;cm = new ChessModel(3);MapSize(this.width, this.height);SwingUtilities.updateComponentTreeUI(this);}if (arg.equals("人机对战")) {this.checkcomputer = true;this.iscomputer = true;cm = new ChessModel(cm.getModeChess());MapSize(cm.getWidth(), cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if (arg.equals("人人对战")) {this.checkcomputer = false;this.iscomputer = false;cm = new ChessModel(cm.getModeChess());MapSize(cm.getWidth(), cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if (arg.equals("开局")) {restart();}if (arg.equals("关于"))JOptionPane.showMessageDialog(null, " 第一版\nR数学192 董磊 1918180232", "版本", JOptionPane.PLAIN_MESSAGE);if (arg.equals("退出"))System.exit(0);if (arg.equals("用户管理")){new UserFrame();}}
}

四、其它

1.其他系统实现

Java+Swing实现学生选课管理系统
Java+Swing图书管理系统


http://www.mrgr.cn/news/21885.html

相关文章:

  • 单GPU一分钟生成16K高清图像!新加坡国立发布LinFusion:无缝兼容Stable Diffusion插件
  • Ubuntu22.04回退系统内核
  • SQL的增删改查CRUD练习知识点(day27)
  • 一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)
  • 《战锤40K:星际战士2》超越《黑神话》 登Steam热销榜首
  • 分布式锁-Redisson 可重入锁
  • 算法:判断一个整数是不是2的阶次方
  • win11如何录屏
  • Java | Leetcode Java题解之第392题判断子序列
  • 配置Microsoft Exchange接受域的详细指南
  • XGBoost算法-上
  • 什么是Kubernetes RBAC?
  • mac|安装nginx
  • 【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述
  • golang学习笔记10——golang 的 Gin 框架,快速构建高效 Web 应用
  • 一维数组呢 ,怎么转换成 批次 句子长度 特征值 python pytorch lstm 编程 人工智能
  • 华为 HCIP-Datacom H12-821 题库 (13)
  • Chapter 13 普通组件的注册使用
  • 初步了解VTK装配体
  • c语言 #define 详解