java——棋牌类游戏五子棋(singlewzq1.0)之一
这是本人最近一段时间写的五子棋的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)之一的更多相关文章
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏
标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/a ...
- CCF201512-2 消除类游戏 java(100分)
试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进 ...
- 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享
该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考 ...
- java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)
1.本工具类继承于 spring-webmvc-4.0.4jar文件心中的一个类 AbstractExcelView 2.代码如下 package com.skjd.util; import j ...
- C++ MFC棋牌类小游戏day1
好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏. 我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单 ...
- JAVA小项目之五子棋
五子棋V1.0 功能: 人人对战,人机对战(初级) 记录双方分数: 主要知识点: 二维坐标系中,各方向坐标的关系及规律. 效果图: 主框架类: package com.gxlee.wzq; /** * ...
- 《Unity3D/2D游戏开发从0到1》正式出版发行
<Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息: 书籍的名称: <Uni ...
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- 消除类游戏(js版)
最近一直在玩一款消灭星星的消除类游戏,周末无聊就用js也写了一遍,感觉玩比写还困难一直玩不到10000分.废话不多说直接上源码. 效果图(ps 页面有点难看木有美工) 代码总共456行,未经过严格测试 ...
- Java:类与继承
Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...
随机推荐
- Go语言中的交互式CLI开发:survey库简介
在构建命令行工具时,良好的用户交互体验至关重要.尤其是在需要与用户进行复杂输入的场景下,传统的命令行参数和标志可能显得笨拙.github.com/AlecAivazis/survey/v2 是一个为 ...
- UDT(一):概览
1. 参考链接 官网 https://udt.sourceforge.io/ 谷博士对UDT的简单介绍 https://udt.sourceforge.io/doc/udt-2009.ppt 获取UD ...
- WSL2
Ref: Windows Subsystem for Linux Installation Guide for Windows 10 Windows Subsystem for Linux 2: Th ...
- CSS & JS Effect – Tooltip
介绍 Tooltip 长这样 它用 popup 的方式来详细描述一个主体. 比如某个 icon 代表着什么. 参考 YouTube – How To Make Tooltips With Only C ...
- eclipse真的落后了嘛?这几点优势其他IDE比不上
序言 各位好啊,我是会编程的蜗牛,作为java开发者,我们每天都要和开发工具打交道.我以前一开始入门java开发的时候,就是用的eclipse,虽然感觉有点繁琐,但好在还能用.后来偶然间发现了IDEA ...
- Windows 缺失Qt5.xxxx.dll,无法继续执行代码
事件起因: 客户自行安装完Autodesk系软件后, 软件一直弹窗报错 AutodDesktopApp.exe - 系统错误 Windows软件报错:由于找不到Qt5.xxxx.dll,无法继续执行代 ...
- 下载 Youtube 上的视频的方法
事件起因: 某项目组同事需要下载 Youtube 上的视频作为参考视频 解决办法: https://www.converto.io/ -= 实测有效 =- 我个人一直在用该网站可以下载,非常好用,下 ...
- 【赵渝强老师】Oracle存储过程中的out参数
一.什么是存储过程 Oracle存储过程可以说是一个记录集吧,它是由一些PL/SQL语句组成的代码块,这些PL/SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取 ...
- laravel框架中上传图片,并在本地显示
1 //处理文件上传 2 if ($request->hasFile('image')&&$request->file('image')->isValid()){ 3 ...
- VB.NET 在 Windows下通过WIn32API获取CPU和内存的使用率
.net 要获取CPU和内存的使用率,一般是通过 PerformanceCounter 或者 WMI 查询得到,但是如果操作系统经常不正常断电或者别的什么原因,让系统的性能计数器抽风了,可能就会造成初 ...