这是本人最近一段时间写的五子棋的java代码,大体框架都实现了,一些细节还需要优化。

package basegame;

import java.awt.Color;
import java.awt.Point; import javax.swing.JFrame;
import javax.swing.JOptionPane; /***************************************************************************
* TODO
* <br>Created on 2013-6-28 下午7:45:13<br>
* @author daicy
***************************************************************************/
public class GameFrame extends JFrame { private Player[] players = new Player[2]; private GameThread gameThread; private ChessBoard chessBoard; public int lordIndex = -1; public int turnIndex = -1; public int id; public GameFrame(String name){ initMain();// 初始化 //this.setlord(1);
reStart(); setVisible(true); //new Thread(new PaintThread()).start(); } // 初始化窗体
private void initMain() {
{
setBackground(new Color(0, 112, 26)); // 背景为绿色
setTitle("五子棋");
setSize(536,546);
setResizable(false);
setLocationRelativeTo(getOwner()); // 屏幕居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} } // 初始化窗体
public void reStart() { if(null!=chessBoard){
this.remove(chessBoard);
} chessBoard = new ChessBoard(this); add(chessBoard); players[0] = new Player(0+"",0);
players[0].userState = 0;
players[0].setChessNum(1); players[1] = new Player(1+"",1);
players[1].userState = 0;
players[1].setChessNum(2); gameThread = new GameThread(this); gameThread.start(); gameThread.gameState = 2; turnIndex = 1; } public static void main(String args[]) {
GameFrame GamePanel = new GameFrame("daicy"); } public Player[] getPlayers() {
return players;
} public void setPlayers(Player[] players) {
this.players = players;
} public ChessBoard getChessBoard() {
return chessBoard;
} public void setChessBoard(ChessBoard chessBoard) {
this.chessBoard = chessBoard;
} public void sendXY(int id,Point point){
getPlayers()[id].setCurrentChesse(point);
getChessBoard().chesses[point.x][point.y] = getPlayers()[id].getChessNum();
getChessBoard().repaint(); if (new FiveChessAI(getChessBoard().chesses,2,1).
showWin(point.x, point.y, getPlayers()[id].getChessNum())) {
setWinById(getPlayers()[id].getChessNum());
} turnIndex = (id+1)%2;
} public void setWinById(int id){
gameThread.gameState = -1;
chessBoard.removeMouseListener(chessBoard);
chessBoard.removeMouseListener(chessBoard);
String s = "恭喜电脑" + id + ",赢了! 你的智商有待提高哦";
JOptionPane.showMessageDialog(this, s);
this.reStart(); } }
package basegame;
import java.awt.Point; public class GameThread extends Thread {
private GameFrame mainPanel ; public int gameState; //0准备 1 抢地主2出牌; -1 结束 public GameThread(GameFrame mainPanel) {
this.mainPanel = mainPanel;
} @Override
public void run() {
while (true) {
if(gameState==-1){
break;
}
switch (gameState) {
case 0: break;
case 1: break;
case 2:
if(mainPanel.turnIndex==0){ }else if(mainPanel.turnIndex>0){
// Integer x = (int) (Math.random() * 14);
// Integer y = (int) (Math.random() * 14);
int num = new FiveChessAI(mainPanel.getChessBoard().chesses,2,1).makeResultPoint();
Point point = new Point();
point.x = (num / 15);
point.y = (num % 15);
mainPanel.sendXY(mainPanel.turnIndex,point);
}
break;
}
}
} }

package basegame;

import java.awt.Point;

public class Player {

    public Point currentChesse ;        //用于记录自己刚走过的棋子 

	private String name ;

	private Integer id ;

	private Integer chessNum ;

	public int userState = -1; // 0 准备  1 抢地主  2 出牌;

	public Player(String name, Integer id) {
super();
this.name = name;
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public Point getCurrentChesse() {
return currentChesse;
} public void setCurrentChesse(Point currentChesse) {
this.currentChesse = currentChesse;
} public Integer getChessNum() {
return chessNum;
} public void setChessNum(Integer chessNum) {
this.chessNum = chessNum;
} }

java——棋牌类游戏五子棋(singlewzq1.0)之一的更多相关文章

  1. android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏

    标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/a ...

  2. CCF201512-2 消除类游戏 java(100分)

    试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进 ...

  3. 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享

    该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考 ...

  4. java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)

    1.本工具类继承于  spring-webmvc-4.0.4jar文件心中的一个类   AbstractExcelView 2.代码如下 package com.skjd.util; import j ...

  5. C++ MFC棋牌类小游戏day1

    好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏. 我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单 ...

  6. JAVA小项目之五子棋

    五子棋V1.0 功能: 人人对战,人机对战(初级) 记录双方分数: 主要知识点: 二维坐标系中,各方向坐标的关系及规律. 效果图: 主框架类: package com.gxlee.wzq; /** * ...

  7. 《Unity3D/2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  8. Java太阳系小游戏分析和源代码

    Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...

  9. 消除类游戏(js版)

    最近一直在玩一款消灭星星的消除类游戏,周末无聊就用js也写了一遍,感觉玩比写还困难一直玩不到10000分.废话不多说直接上源码. 效果图(ps 页面有点难看木有美工) 代码总共456行,未经过严格测试 ...

  10. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

随机推荐

  1. 鸿蒙系统(HarmonyOS)全局弹窗实现

    全局弹窗相对于自定义弹窗有以下优点: 封装更彻底,一行代码就能调用 跟组件耦合度低,只需要传入组件的UIContext对象,不需要跟自定义弹窗一样需要在组件内部实例化CustomDialogContr ...

  2. OSG开发笔记(三十):OSG加载动力学仿真K模型文件以及测试Demo

    前言   Osg需要打开模型文件,但是遇到显示动力学仿真的K模型文件,.k文件是一种描述材料属性的文件,比如密度.弹性模量等,该模型文件不是常规中间开放格式,无法直接支持,需要自定义解析并且重建三维模 ...

  3. map的线程安全,boost库读写锁的实现

       *************** map的线程安全 ********************  *  * 参考1  * map要实现线程安全必须要加锁,如果使用mutex会产生大量的线程等待,可以 ...

  4. Vue3——环境变量的配置

    vue3环境变量的配置 开发环境(development) 测试环境(testing) 生产环境(production) 项目根目录分别添加 开发.生产和测试环境的文件! .env.developme ...

  5. C#爬取动态网页上的信息:B站主页

    目录 简介 获取 HTML 文档 解析 HTML 文档 测试 参考文章 简介 动态内容网站使用 JavaScript 脚本动态检索和渲染数据,爬取信息时需要模拟浏览器行为,否则获取到的源码基本是空的. ...

  6. 【VMware VCF】使用 SFTP 服务器备份 VCF 核心组件的配置文件。

    可以定期对 VMware Cloud Foundation 环境中的相关核心组件(如 SDDC Manager.NSX Manager 以及 vCenter Server 等)创建配置备份,以防止当意 ...

  7. linux 内核中READ_ONCE宏定义

    在Linux内核编程中,READ_ONCE 宏用于确保从内存中读取一个变量的值时,编译器不会对这个读取操作进行优化,从而保证了读取操作的原子性.这个宏通常在需要防止编译器优化.多线程或中断上下文中使用 ...

  8. vue本地项目启动时遇到coreJs相关报错问题处理

    启动项目的时候报错 : 是因为core.js这个包丢失,需要大家重新下载即可 : yarn add core-js

  9. KubeSphere 3.1.1 发布,可以接入集群已有的 Prometheus

    KubeSphere 作为一款面向应用的开源容器平台,经过 3 年的发展和 10 个版本的迭代,收获了两百多位开源贡献者,超过十万次下载,并有数千名社区用户用 KubeSphere 作为企业容器平台. ...

  10. KubeSphere 社区双周报 | 功能亮点抢“鲜”看 | 2022-09-16

    KubeSphere 从诞生的第一天起便秉持着开源.开放的理念,并且以社区的方式成长,如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一.这些都离不开社区小伙伴的共同努力,你们为 Ku ...