这是本人最近一段时间写的五子棋的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. Java连接MySQL示范

    通过驱动连接mysql数据库,驱动得跟源码在一块,如图 先分析这句 3306 是本地端口 students是要连接的数据库的名字 账号和密码,之前已经设置 接下来分析这个数据库内容: 这个要查的表是 ...

  2. spark 中时间和日期 操作,怎么找到前几天后几天

    1. timestamp 增加减少一个 time delta df.withColumn("added_hours",col("input_timestamp" ...

  3. 万字长文全面详解现代C++智能指针:原理、应用和陷阱

    现代C++智能指针详解:原理.应用和陷阱 智能指针是C++11引入的新特性.本篇文章详细介绍了C++智能指针的原理.应用与陷阱,通过丰富的代码实例介绍了三种智能指针:std::unique_ptr.s ...

  4. Rounding

    前言 以前写过一篇关于 Rouding 的 decimal, double, float, 但有点杂乱, 这篇做一个整理. Why need rouding? 除法会诞生小数. 甚至会诞生无限小数 ( ...

  5. 2019牛客暑期多校训练营(第四场)J-free(分层图最短路)

    >传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Co ...

  6. 图解连接阿里云(二)使用Paho-MQTT(支持FreeRTOS版本、Linux版本)连接1MQTT测试服务器 2阿里云物联网平台

    前沿提要: MQTT是什么不知道? 看这一篇:https://www.cnblogs.com/happybirthdaytoyou/p/10362336.html 阿里云官网玩不转? 看这一篇: ht ...

  7. Wpf使用NLog将日志输出到LogViewer

    1 LogViewer LogViewer是通过UDP传输的高性能实时log查看器. 具有一下特性: 通过UDP读取日志 通过文件导入日志 导出日志到一个文件中 排序.过滤(日志树,日志等级)和查找 ...

  8. (九)Redis 哨兵机制与集群

    主从复制中,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,但是如果主库发生故障了肿么办呢?读请求,那还可以由从库继续提供服务,写请求就么得办法了.此时,哨兵机制就登场了,解决3个问题: ...

  9. 关于 xfg 的班会

  10. Laravel视图共享数据

    Laravel视图共享数据 最近在用lavavel过程中想实现公共头部尾部需要的配置数据在所有的页面中都可以使用,便查看了官方文档,在此做一个总结: 一. 修改 ComposerServiceProv ...