本文实例为大家分享了java实现五子棋游戏GUI,供大家参考,具体内容如下

引用包

//{Cynthia Zhang}

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.LineBorder;

import javax.swing.JOptionPane;

import javax.swing.ImageIcon;

import java.awt.Image;

import com.sun.image.codec.jpeg.*;

前期预设

//extends JApplet {

// Indicate which player has a turn, initially it is the X player

private char whoseTurn = 'X';

final int SIZE = 15;

static boolean ISOVER = false;

// Create and initialize cells

private final Cell[][] cell = new Cell[SIZE][SIZE];

// Create and initialize a status label

private final JLabel jlblStatus = new JLabel("X's turn to play",JLabel.CENTER);

设置背景板

// Initialize UI

@Override

public void init() {

// Panel p to hold cells

JPanel p = new JPanel();

p.setLayout(new GridLayout(SIZE, SIZE, 0, 0));

for (int i = 0; i < SIZE; i++) {

for (int j = 0; j < SIZE; j++) {

Cell ce = new Cell();

ce.setBackground(new Color(150,88,42)); // 背景色绝美!

p.add(cell[i][j] = ce);

}

}

// Set line borders on the cells panel and the status label

p.setBackground(new Color(143,105,94)); // 背景色绝美!

jlblStatus.setBorder(new LineBorder(new Color(255,255,255), 2)); // 白框框加宽!

// Place the panel and the label to the applet

this.getContentPane().add(p, BorderLayout.CENTER);

this.getContentPane().add(jlblStatus, BorderLayout.SOUTH);

}

主要框架段落

// This main method enables the applet to run as an application

public static void main(String[] args) {

// Create a frame

JFrame frame = new JFrame("Tic Tac Toe");

// Create an instance of the applet

Homework8 applet = new Homework8();

// Add the applet instance to the frame

frame.getContentPane().add(applet, BorderLayout.CENTER);

// Invoke init() and start()

applet.init();

applet.start();

// Display the frame

frame.setSize(600, 600);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

判断是否满了

// Determine if the cells are all occupied

public boolean isFull() {

for (int i = 0; i < SIZE; i++) {

for (int j = 0; j < SIZE; j++) {

if (cell[i][j].getToken() == ' ') {

return false;

}

}

}

return true;

}

判断是否赢了

和八皇后有点像,可以考虑那种数组优化四个方向,这里比较懒

// Determine if the player with the specified token wins

public boolean isWon(char token) {

int winNum = 5; // define the max num for a rule

for (int indexX = 0; indexX < SIZE; indexX++) {

for (int indexY = 0; indexY < SIZE; indexY++){

// in row check cell[indexX][indexY...indexY+winNum-1]

if (indexY+winNum-1

boolean flag=true;

for (int y =indexY;y

if (cell[indexX][y].getToken() != token){

flag=false; break;

}

if (flag==true) return true;

}

// in row check cell[indexX...indexX+winNum-1][indexY]

if (indexX+winNum-1

boolean flag=true;

for (int x =indexX;x

if (cell[x][indexY].getToken() != token){

flag=false; break;

}

if (flag==true) return true;

}

// check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)

if (indexX+winNum-1

boolean flag=true;

for (int x =indexX,y=indexY;x

if (cell[x][y].getToken() != token){

flag=false; break;

}

if (flag==true) return true;

}

// check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)

if (indexX+winNum-1=0){

boolean flag=true;

for (int x =indexX,y=indexY;x

if (cell[x][y].getToken() != token){

flag=false; break;

}

if (flag==true) return true;

}

}

}

return false;

}

设置棋子

// An inner class for a cell

public class Cell extends JPanel implements MouseListener {

// Token used for this cell

private char token = ' ';

public Cell() {

setBorder(new LineBorder(Color.black, 1)); // Set cell's border

addMouseListener(this); // Register listener

}

// The getter method for token

public char getToken() {

return token;

}

// The setter method for token

public void setToken(char c) {

token = c;

repaint();

}

导入图片

// Paint the cell

@Override

public void paintComponent(Graphics g) {

if (token == 'X') {

ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png");

Image image = icon.getImage();

g.drawImage(image,0,0,35,35,this);

}else if (token=='O'){

ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png");

Image image = icon.getImage();

g.drawImage(image,0,0,35,35,this);

}

super.paintComponents(g);

}

游戏结束的锁定与弹窗

// Handle mouse click on a cell

@Override

public void mouseClicked(MouseEvent e) {

if (ISOVER) return; // if game is over, any issue should be forbidden

int response=-1;

if (token == ' ') // If cell is not occupied

{

if (whoseTurn == 'X') // If it is the X player's turn

{

setToken('X'); // Set token in the cell

whoseTurn = 'O'; // Change the turn

jlblStatus.setText("The White's Turn"); // Display status

if (isWon('X')) {

jlblStatus.setText("The Black Won! The Game Is Over!");

response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n"

+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);

ISOVER = true;

if (response == 0) System.exit(0); // choose "Yes" than quit;

}

} else if (whoseTurn == 'O') // If it is the O player's turn

{

setToken('O'); // Set token in the cell

whoseTurn = 'X'; // Change the turn

jlblStatus.setText("The Black's Turn"); // Display status

if (isWon('O')) {

jlblStatus.setText("The White Won! The Game Is Over!");

response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n"

+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);

ISOVER = true;

if (response == 0) System.exit(0); // choose "Yes" than quit;

}

}

if (isFull()) {

jlblStatus.setText("Plain Game! The Game Is Over!");

response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n"

+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);

ISOVER = true;

if (response == 0) System.exit(0); // choose "Yes" than quit;

}

}

}

其他棋子信息

@Override

public void mousePressed(MouseEvent e) {

// TODO: implement this java.awt.event.MouseListener method;

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO: implement this java.awt.event.MouseListener method;

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO: implement this java.awt.event.MouseListener method;

}

@Override

public void mouseExited(MouseEvent e) {

// TODO: implement this java.awt.event.MouseListener method;

}

}

}

图片显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

java五子棋gui代码_java GUI实现五子棋游戏相关推荐

  1. java贪吃蛇代码_java实现贪吃蛇游戏代码(附完整源码)

    先给大家分享源码,喜欢的朋友点此处下载. 游戏界面 GUI界面 java实现贪吃蛇游戏需要创建一个桌面窗口出来,此时就需要使用java中的swing控件 创建一个新窗口 JFrame frame = ...

  2. java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...

    [填空题]一个类实现某个接口时必须实现接口中声明的所有方法,否则该类必须定义为(__); [单选题]若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( ) [填空 ...

  3. java 生产者消费者代码_Java生产者和消费者代码

    java 生产者消费者代码 This also helps us to understand the concept of synchronised multi-threading in java, ...

  4. java实现一个gui面板_JAVA GUI自定义JPanel画板背景

    自定义JPanel面板背景 一.前言 1.GUI全称是Graphical User Interface,就是图形用户界面.JAVA的GUI应用广泛在我们生活中也很常见.很多应用使用该GUI编程设计,像 ...

  5. java gui 结构_java gui教学图形界面的层次结构.ppt

    java gui教学图形界面的层次结构.ppt 还剩 13页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 事件 ...

  6. java gui 单选_java GUI编程(swing)之三swing单选框复选框组件

    swing复选框(JCheckBox) 单选框(JRadioButton) 特别说明:同一组单选按钮,必须先创建一个ButtonGroup,然后把单选按钮放到ButtonGroup 中 package ...

  7. java swing界面工具_Java GUI swing 工具包使用总结

    前言 最近用 swing 写了一个GUI图片接入的工具, 方便用于将图片数据通过接口推送到 web 项目中 做界面有点像写原生的 CSS 技术储备 java 基础知识, 面向对象封装, 继承, 接口, ...

  8. java paint的使用_java GUI编程之paint绘制操作示例

    本文实例讲述了java GUI编程之paint绘制操作.分享给大家供大家参考,具体如下: import java.awt.*; public class Testpint { public stati ...

  9. java的gui教程_Java GUI入门教程

    人生的烦恼,多在于知道的太多,而做的太少. Java程序中开发GUI页面.下面我主要对Java中实现图像管理.图形绘制和颜色管理等做出介绍,与此同时,Swing包也做出一部分介绍. 像素与坐标 用于表 ...

最新文章

  1. 关于编译GITHUB上的工程
  2. QT的QVarLengthArray类的使用
  3. Netflix 付费用户达2亿、苹果VR眼镜、抖音电子钱包、虚幻引擎用于电影制作等|Decode the Week...
  4. linux比较两个文件命令cmp,Linux系统中使用cmp和comm命令来比较两个文件
  5. NeurlPS 2019丨微软亚洲研究院 5 篇精选论文解读
  6. 云平台队列服务-Qbus实践
  7. ERROR in static/js/vendor.js from UglifyJs UUnexpected token: name (Dom7)
  8. 时间序列--平稳性介绍及检验方法
  9. 云通讯赛道掀起并购潮 背后有哪些新趋势暗流涌动?
  10. Delphi官方下载地址
  11. Trailing return types尾部返回类型
  12. 详解C语言中的switch语句
  13. springboot整合thymeleaf启动错误
  14. element vue 上传模板_Vue Element UI upload 组件上传文件之后 file list 依旧是空数组
  15. 孝经白话:广要道章第十二
  16. 上海市行政管理学校96计算机,上海市行政管理学校
  17. 微信小程序开发解决按钮大小问题
  18. 在这个炎炎夏日,谁对你最好?
  19. Matlab中如何对曲线进行微分,Excel 微分(怎么用excel做一阶微分)
  20. 阿里云账号实名认证、域名实名认证和域名备案有什么区别呢?

热门文章

  1. C语言88案例,经典案例带你绝对入门C编程!
  2. 思科虚拟机服务器,利用Cisco UCS管理虚拟机网络(上)
  3. 说一下软件测试行业的优缺点
  4. 0716 POJ1222 EXTENDED LIGHTS OUT
  5. 单例模式(懒汉式和饿汉式)及如何实现线程安全
  6. (NCRE网络技术)中小型网络系统总体规划与设计方法-知识点
  7. python截取字符串后三位_python如何截取字符串后几位
  8. 淘宝店主成十大高危职业 生存状态受关注
  9. Hibernate QBE 复合查询问题
  10. 公共经济学(期末复习资料)