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

【华东野鸡大学】大学时候自写的【五子棋算法】

///////////////////////////////////////////////【递归实现,Java五子棋算法,自创的】

////////////////////设置下图标就OK了,呵呵。。

package javaapplication3;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

/**
*
* @author zhangbilei
*/
class 五子棋 extends JFrame implements ActionListener
{
private int x;
private int y;
int row;
int column;
private JButton button[][];
private boolean 甲[][];
private boolean 乙[][];
private boolean 记录[][];
private int count;
private JFrame f;
private JTextField text;
//private JButton 重开=new JButton("重新开局");
//Image icon=Toolkit.getDefaultToolkit().getImage("zhangbilei/图片/icon.jpg");


public 五子棋(int column,int row)
{
super();
//重开.setPreferredSize(new Dimension(20,20));
f=new JFrame();
this.row=row;
this.column=column;
count=1;
//////////////////////////////setLayout(new FlowLayout());
FlowLayout flow=new FlowLayout();
flow.setHgap(0);
flow.setVgap(0);
setLayout(flow);

button=new JButton[row][column];

甲=new boolean[row][column];
乙=new boolean[row][column];
记录=new boolean[row][column];//避免重复点击的。。。
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
{
button[i][j]=new JButton("");
button[i][j].setPreferredSize(new Dimension(20,20));
button[i][j].setIcon(null);
add(button[i][j]);
button[i][j].addActionListener(this);
}
//重开.addActionListener(this);
setBounds(200,200,20*column+20,20*row+40);
setVisible(true);
validate();


}
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
{
if(e.getSource()==button[i][j]&&记录[i][j]!=true)//点击过的不能再点
{
记录[i][j]=true;
System.out.println("i="+i+";j="+j+" ,count= "+count);

if(count%2!=0)
{
//button[i][j].setIcon("甲方");
button[i][j].setText("#");
/////////////////////

甲[i][j]=true;
//System.out.println("甲:i="+i+";j="+j+甲[i][j]);
}

else
{
//button[i][j].setIcon(new ImageIcon("Icon"));
//Graphics g=button[i][j].getGraphics();
//一定要将窗口显示出来,g画的东西才有效
//g.drawImage(icon,0,0,button[i][j].getSize().width,button[i][j].getSize().height,button[i][j]);
//button[i][j].setText("@");
//button[i][j].setIcon("乙方");
乙[i][j]=true;
//button[i][j].setIcon(); /////////////
}
count++;
}

}
if(赢的是(甲))
{
text=new JTextField("甲方赢了!",10);
System.out.println("甲方赢");
f.add(text);
//f.add(重开);
f.setBounds(100,100,100,100);
f.setVisible(true);
f.validate();

}
if(赢的是(乙))
{
text=new JTextField("乙方赢了!",10);
System.out.println("乙方赢");
f.add(text);
//f.add(重开);
f.setBounds(100,100,100,100);
f.setVisible(true);
f.validate();
}
/* if(e.getSource()==重开)
{
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
{
button[i][j].setText(null);
甲[i][j]=false;
乙[i][j]=false;
}
// f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}*/


}
public boolean 赢的是(boolean 选手[][])
{
boolean 赢=false;
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
{
int flag_L_to_R=0;//左向右斜的个数(棋子
int flag_R_to_L=0;//右向左斜的个数
int flag_row=0;//横向个数
int flag_column=0;//纵向个数


if(j<column-4)//判断横向
for(int k=0;k<5;k++)
{
if(选手[i][k+j]==true)
flag_row++;
}
if(i<row-4)//判断纵向
for(int k=0;k<5;k++)
{
if(选手[i+k][j]==true)
flag_column++;
}

///////判断斜向(都是以左边第一个为开头)
if(j<column-4)//以最后四列任意一个开头的是没有斜向的(以左边第一个为开头)
{
if(i<row-4)//判断左向右斜(\)(::当i>=row-4,没有左向右斜
{
for(int k=0;k<5;k++)
{
if(选手[i+k][j+k]==true)

flag_L_to_R++;
}
}


if(i>=4)////////判断右向左斜(/)
{
for(int k=0;k<5;k++)
{
if(选手[i-k][j+k]==true)
flag_R_to_L++;

}
}
}


if (flag_L_to_R==5||flag_R_to_L==5||flag_row==5||flag_column==5)
赢=true;
}
return 赢;

}

}

public class Main{

/**
* @param args the command line arguments
*/
public static void main(String[] args)
{

五子棋 w=new 五子棋(30,20);//可以设置长宽。。。会自己调节(列,行)

}

}

http://www.jsqmd.com/news/963900/

相关文章:

  • 高誉润滑油(青岛莱茵特斯):国产机油的卓越之选 - 资讯速览
  • 预约鱼塘防渗膜公司全维度实力测评:头部指标怎么找
  • Beyond Compare 5密钥生成架构解析:深度解析企业级授权系统设计与实践指南
  • 2026 企业云盘防坑:为什么选型只看文件预览会死得很惨?
  • 从麻将新手到高手:Akagi AI助手如何帮你实现3倍胜率提升
  • Blender里用G/R/S直接拖拽旋转缩放视角,告别XYZ轴向切换
  • 卖黄金别凭感觉!杭州多年变现老经验,避开90%的坑 - 奢侈品回收评测
  • 2026国产在线余氯仪TOP10品牌深度解析:国产替代浪潮下的技术标杆与全场景选型指南 - 仪表品牌排行榜
  • 开发提效新范式:用快马ai将自然语言描述直接转化为可执行代码
  • 工程师如何写好技术文档:从一篇蹩脚新闻稿看专业写作与沟通
  • 普宁口碑好的月子中心哪家|怎么判断口碑是真实的 - 品牌观察
  • 9针串口线测试全攻略:万用表与软件自环法精准诊断
  • 2026 CE认证指针电压表推荐:优质厂家供应商选型解析 - 资讯速览
  • 买商标不知怎么选平台?2026 热门商标购买平台深度测评,避开 90% 交易圈套 - 资讯速览
  • 利用快马平台与mcjscc快速构建前端交互原型,十分钟完成项目搭建
  • LED光效突破115流明/瓦:从芯片革新到照明系统设计变革
  • 零基础新手的第一行游戏代码:在快马上手制作Python版命令行小恐龙
  • 利用快马AI平台,五分钟快速生成ROS机器人移动控制原型
  • 3个关键步骤掌握yuzu模拟器:在电脑上免费畅玩Switch游戏的实战手册
  • 河北电力防污闪涂料优质厂家怎么选?主流决策路径全解析 - 资讯速览
  • MATLAB/Simulink与ModelSim联合仿真:原理、配置与实战指南
  • 2026年超声波泥水界面仪TOP10优质厂家深度评测:技术参数、应用案例与选型全景指南 - 仪表品牌排行榜
  • 2026上海黄金回收哪家靠谱?收的顶本地连锁实体店,全城分区上门收金 - 奢侈品回收评测
  • 华为云发布Agentic AI系列新品,打造智能时代“硅基黑土地”
  • 2026实力之选:上海别墅围栏专业金属制品企业,精致铁艺与铝艺围栏的匠心工艺解析 - 品牌企业推荐师(官方)
  • 【数据结构】 树、二叉树、完全二叉树,先序遍历、中序遍历、后序遍历
  • 麒麟桌面版本操作系统ip设置
  • 欧姆龙NJ系列PLC平滑函数功能块(Sysmac Studio软件)
  • 【限时技术红利】CSDN AI写稿对细分领域支持存在“窗口期”:Python生态支持最成熟(覆盖率91.2%),而Java微服务文档生成准确率正以每周0.8%速度提升——现在不掌握就落后
  • Video2X 6.0.0完整指南:免费AI视频放大神器让模糊视频重获新生