Main:

package BlackWhite;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel; public class Main { public static void main(String[] args)
{
new Game().startGame(); //layout(); // JFrame mainWindow=new JFrame("黑白棋");
// mainWindow.setLayout(new FlowLayout());//布局器
// mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出时关闭
// mainWindow.setSize(400,300);//大小
// mainWindow.setVisible(true);//显示
//
// JButton button=new JButton("点我");
//
// mainWindow.add(button);//这里按钮铺满了 }
public static void layout() {
JFrame mainWindow=new JFrame("黑白棋");
mainWindow.setLayout(new BorderLayout());
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setSize(400,300);
mainWindow.setVisible(true); JButton southButton=new JButton("South");
JButton NorthButton=new JButton("North");
JButton eastButton=new JButton("east");
JButton westButton=new JButton("west");
JButton centerButton=new JButton("center");
//
// mainWindow.add(southButton,BorderLayout.SOUTH);
// mainWindow.add(NorthButton,BorderLayout.NORTH);
// mainWindow.add(eastButton,BorderLayout.EAST);
// mainWindow.add(westButton,BorderLayout.WEST);
// mainWindow.add(centerButton,BorderLayout.CENTER); JPanel centerPanel=new JPanel();
centerPanel.setLayout(new FlowLayout());//布局
centerPanel.setBackground(Color.black);//背景颜色
centerPanel.add(centerButton); JPanel southPanel=new JPanel();
southPanel.setLayout(new FlowLayout());
southPanel.setBackground(Color.white);
southPanel.add(southButton); mainWindow.add(centerPanel,BorderLayout.CENTER);
mainWindow.add(southPanel,BorderLayout.SOUTH); }
}

Game:判断五子相连还有问题

package BlackWhite;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; public class Game { private JFrame mainWindow;//JFrame是顶层容器
private JPanel centerPanel;//放置棋盘
private JPanel sourthPanel;//信息提示框
private JLabel playInforLabel_1;
private JLabel playInforLabel_2;
private JButton newGameButton;
private Insets margins=new Insets(0,0,0,0);
private static JButton[][] buttonArray=new MyButton[25][25];
private int type=1;//1黑2白
private boolean isWin=false; public Game() {
mainWindow=new JFrame("五子棋");
mainWindow.setLayout(new BorderLayout());
mainWindow.setSize(600, 750);
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setResizable(false); centerPanel=new JPanel();
centerPanel.setLayout(new GridLayout(25,25));
for(int y=0;y<buttonArray.length;y++) {
for(int x=0;x<buttonArray[0].length;x++) {
buttonArray[y][x]=new MyButton(y,x);
buttonArray[y][x].setText("");
buttonArray[y][x].setMargin(margins);//
myButtonAddEvent((MyButton) buttonArray[y][x]);
centerPanel.add(buttonArray[y][x]);
}
}
sourthPanel=new JPanel();
sourthPanel.setLayout(new FlowLayout());
playInforLabel_1=new JLabel("黑方下棋");
playInforLabel_2=new JLabel("等待一方获胜");
newGameButton=new JButton("再来一局");//构建按钮
//newGameButton.setEnabled(false);
newGameButtonAddEvent( newGameButton);
mainWindow.add(centerPanel, BorderLayout.CENTER);
mainWindow.add(sourthPanel, BorderLayout.SOUTH);
sourthPanel.add(playInforLabel_1);
sourthPanel.add(playInforLabel_2);
sourthPanel.add(newGameButton); } public void startGame() {
mainWindow.setVisible(true);//显示
} public void myButtonAddEvent(MyButton button) {
button.addMouseListener(new MouseListener() {//MouseListener()是接口 @Override
public void mouseClicked(MouseEvent e) {
MyButton button =(MyButton)e.getComponent();
String butttonText=button.getText();
if(!butttonText.equals("")) {
return;
}
if(type==1) {
button.setText("●");
int x=button.getxIndex();
int y=button.getyIndex();
buttonArray[y][x].setText("●");
System.out.println(buttonArray[y][x].getText());
if(whoWin(1,y,x)) {
System.out.println("黑方获胜");
};
System.out.print(("坐标"+(button.getyIndex()+1)));
System.out.println((button.getxIndex()+1));
type=2;
playInforLabel_1.setText("白方下棋");
}else {
button.setText("○"); int x=button.getxIndex();
int y=button.getyIndex();
buttonArray[y][x].setText("○");
System.out.println(buttonArray[y][x].getText());
if(whoWin(2,y,x)) {
System.out.println("白方获胜");
};
System.out.print(("坐标"+(button.getyIndex()+1)));
System.out.println((button.getxIndex()+1));
type=1;
playInforLabel_1.setText("黑方下棋");
} } @Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub } @Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub } @Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub } @Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub } });
}
public void newGameButtonAddEvent(JButton button) {
newGameButton.addMouseListener(new MouseListener() { @Override
public void mouseClicked(MouseEvent e) {
//棋盘初始化
for(int y=0;y<buttonArray.length;y++) {
for(int x=0;x<buttonArray[0].length;x++) {
//buttonArray[y][x]=new MyButton(y,x);
buttonArray[y][x].setText("");
}
}
type=1;//回到游戏开始的黑方下棋
isWin=false;
playInforLabel_1.setText("黑方下棋");
} @Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub } });
} public static boolean whoWin(int type,int y,int x){
//判断 是否已经获胜
String qizi = null;
switch(type){
case 1 : qizi = "●"; break ;
case 2 : qizi = "○"; break ;
} //判断纵向是否5子相连
int count = 1;
for(int i = y + 1 ; i < buttonArray.length ; i++){ if(buttonArray[i][x].getText().equals(qizi)){
count ++;
}else{
break ;
}
}
for(int i = y - 1 ; i >= 0 ; i--){
if(buttonArray[i][x].getText().equals(qizi)){
count ++;
}else{
break ;
}
} if(count >= 5){
System.out.println("|相连了");
return true;
} //判断横向是否5子相连
count = 1;
for(int i = x + 1 ; i < buttonArray[0].length ; i++){
//System.out.println(buttonArray[0].length);
if(buttonArray[i][x].getText().equals(qizi)){
count ++;
}else{
break ;
}
}
for(int i = x - 1 ; i >= 0 ; i--){
if(buttonArray[i][x].getText().equals(qizi)){
System.out.println(buttonArray[i][x].getText());
count ++;
}else{
break ;
}
} if(count >= 5){
System.out.println("---相连");
return true;
} //判断/是否相连System.out.println("判断/是否相连");
count = 1;
for(int i = y + 1 , j = x + 1; i < buttonArray.length && j < buttonArray[0].length ; i++ , j++){
if(buttonArray[i][x].getText().equals(qizi)){
System.out.println(buttonArray[i][x].getText());
count ++;
}else{
break ;
}
}
for(int i = y - 1 , j = x - 1; i >=0 && j >= 0 ; i-- , j--){
if(buttonArray[i][x].getText().equals(qizi)){
System.out.println(buttonArray[i][x].getText());
count ++;
}else{
break ;
}
} if(count >= 5){
System.out.println("/相连");
return true;
} //判断\是否相连
count = 1;
for(int i = y + 1 , j = x - 1; i < buttonArray.length && j >=0 ; i++ , j--){
if(buttonArray[i][x].getText().equals(qizi)){
System.out.println(buttonArray[i][x].getText());
count ++;
}else{
break ;
}
}
for(int i = y - 1 , j = x + 1; i >=0 && j < buttonArray[0].length ; i-- , j++){
if(buttonArray[i][x].getText().equals(qizi)){
System.out.println(buttonArray[i][x].getText());
count ++;
}else{
break ;
}
} if(count >= 5){
System.out.println("\\相连");
return true;
} return false;
} }

Mybutton:

package BlackWhite;

import javax.swing.JButton;

public class MyButton extends JButton {
private int yIndex;
private int xIndex; public MyButton(int yIndex,int xIndex) {
this.xIndex=xIndex;
this.yIndex=yIndex;
}
public int getyIndex() {
return yIndex;
}
public void setyIndex(int yIndex) {
this.yIndex = yIndex;
}
public int getxIndex() {
return xIndex;
}
public void setxIndex(int xIndex) {
this.xIndex = xIndex;
} }

java带图形界面的五子棋的更多相关文章

  1. Java的图形界面依然是跨平台的

    Awt:抽象窗口工具箱,它由三部分组成: ①组件:界面元素: ②容器:装载组件的容器(例如窗体): ③布局管理器:负责决定容器中组件的摆放位置. 图形界面的应用分四步: ① 选择一个容器: ⑴wind ...

  2. Java自学-图形界面 容器

    Swing 的容器 JFrame和JDialog java的图形界面中,容器是用来存放 按钮,输入框等组件的. 窗体型容器有两个,一个是JFrame,一个是JDialog 步骤 1 : JFrame ...

  3. Java Swing 图形界面开发(目录)

    Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...

  4. Java Swing图形界面开发

    本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ...

  5. 【计项02组01号】Java版图形界面计算器

    Java版图形界面计算器1.0版本 项目分析[1.0] 组成部分 代码结构 (1)窗口的创建 在<JDK 核心 API>中我们提到,创建一个窗口需要使用 JFrame 类.在本实验中,我们 ...

  6. Java GUI图形界面开发工具

    Applet 应用程序     一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...

  7. JAVA与图形界面开发(Applet应用程序、AWT库、Swing)

    Applet 1)简单说,Applet就是嵌入到网页中的小程序,Java代码. 2)编写Applet程序,要继承JApplet类,并根据自己需要覆写相关方法(init.start.stop.destr ...

  8. Java自学-图形界面 Swing中的线程

    Swing中的线程 步骤 1 : 三种线程 在Swing程序的开发中,需要建立3种线程的概念 初始化线程 初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了. 事件调 ...

  9. memcache的带图形界面监控工具memcachephp

    memcache也有一款图形界面的监控工具(memcachephp),可以通过这个工具查看到局域网内所有部署memcache机器或者端口的memcache的运行情况,对我们监控memcache的缓存命 ...

随机推荐

  1. Javascript引擎

    注入了 浏览器对象模型BOM, 文档对象模型DOM

  2. 基于TCP的客户端、服务器端socket编程

    一.实验目的 理解tcp传输客户端服务器端通信流程 二.实验平台 MAC OS 三.实验内容 编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号,并 ...

  3. [深度学习] 各种下载深度学习数据集方法(In python)

    一.使用urllib下载cifar-10数据集,并读取再存为图片(TensorFlow v1.14.0) # -*- coding:utf-8 -*- __author__ = 'Leo.Z' imp ...

  4. META标签的设置

    ㈠定义及用法 ⑴<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. ⑵<meta> 标签位于文档的头部,不 ...

  5. QT5 Even 事件

    事件的引入: 实现功能: 1.点击button 文本框两字改变成button被按下;很简单的在button上转到槽对lineEdit->setTest()设置即可; void myWidget: ...

  6. 「TJOI2019」大中锋的游乐场

    题目链接 问题分析 比较明显的最短路模型.需要堆优化的dij.建图的时候注意细节就好. 参考程序 #include <bits/stdc++.h> #define LL long long ...

  7. HAOI2018简要题解

    大概之后可能会重写一下,写的详细一些? Day 1 T1 简单的背包:DP 分析 可以发现,如果选出了一些数,令这些数的\(\gcd\)为\(d\),那么这些数能且仅能组合成\(\gcd(d,P)\) ...

  8. Spring Boot教程(三十二)多数据源配置与使用(2)

    Spring-data-jpa支持 对于数据源的配置可以沿用上例中DataSourceConfig的实现. 新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity实体和Re ...

  9. 工具类-ApplicationContextUtil

    package com.zhouyy.netBank.util; import org.springframework.beans.BeansException; import org.springf ...

  10. JS框架_(JQuery.js)高德地图api

    百度云盘 传送门 密码 :ko30 高德地图api效果 <!doctype html> <html> <head> <meta charset="u ...