四子棋游戏--bingo game
最近自己编了一个四子棋的游戏。说明如下:
游戏简介: 一种常见的四子棋游戏,可以是人机对战,两人对战,或者网上对战.
游戏的双方轮流落子,每人持有21颗子.棋子共有6*7个位置,玩家的棋子总是落到
当前列的最底处.当落子后,在横,竖,正斜或着反斜方向上连成4子时,当前玩家则
胜利.当所有子均用完时,游戏结束.
类的说明:
com.lilijun.game.bingo.ui:
GameUI: 游戏的主界面
com.lilijun.game.bingo.util:
GameCtroller:包含启动游戏,终止游戏等常用操作
GameTable: 游戏数据,用来判断胜利,结束等
TestWin: 提供了判断游戏胜利的算法
com.lilijun.game.bingo.player:
Player: 所有玩家的抽象类
AIPlayer:代表电脑角色的玩家,能自动取最优的选择
ManPlayer:代表人的玩家
NetPlayer:网络上的对手
目前只能是单机游戏,双人玩。网络游戏待研究。代码会在后面随后给出
主程序:
* created on 2006-10-1
* TO Do to create a bingo game user interface
*/
package com.lilijun.game.bingo.ui;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.BorderFactory;
import javax.swing.border.BevelBorder;
import javax.swing.JOptionPane;
import java.awt.event. * ;
import java.util. * ;
import com.lilijun.game.bingo.player. * ;
import com.lilijun.game.bingo.util.GameTable;
/** */ /**
* @author Administrator
*
*/
public class MainUI extends JFrame implements Observer ... {
private static final long serialVersionUID = 1L;
private boolean begin = false;
private boolean isPlayer1Now = true;
private JPanel jContentPane = null;
private JPanel jPanel1 = null;
private JButton jButtonBegin = null;
private JButton jButtonQuit = null;
private JPanel jPanel3 = null;
private JLabel jLabel = null;
private JLabel jLabel2 = null;
private JLabel jLabel3 = null;
private JLabel jLabel4 = null;
private JPanel jPanel2 = null;
private Player player1 = null; // @jve:decl-index=0:
private Player player2 = null; // @jve:decl-index=0:
/** *//**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() ...{
if (jPanel1 == null) ...{
jPanel1 = new JPanel();
jPanel1.setLayout(null);
jPanel1.setBounds(new Rectangle(-1, 0, 115, 231));
jPanel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
jPanel1.add(getJButtonBegin(), null);
jPanel1.add(getJButtonQuit(), null);
}
return jPanel1;
}
/** *//**
* This method initializes jButtonBegin
*
* @return javax.swing.JButton
*/
private JButton getJButtonBegin() ...{
if (jButtonBegin == null) ...{
jButtonBegin = new JButton();
jButtonBegin.setBounds(new Rectangle(17, 136, 74, 23));
jButtonBegin.setText("begin");
jButtonBegin.addActionListener(new ActionListener()...{
public void actionPerformed(ActionEvent e)...{
beginGame();
}
});
}
return jButtonBegin;
}
/** *//**
* This method initializes jButtonQuit
*
* @return javax.swing.JButton
*/
private JButton getJButtonQuit() ...{
if (jButtonQuit == null) ...{
jButtonQuit = new JButton();
jButtonQuit.setBounds(new Rectangle(18, 175, 72, 25));
jButtonQuit.setText("quit");
jButtonQuit.addActionListener(new ActionListener()...{
public void actionPerformed(ActionEvent e)...{
endGame();
System.exit(0);
}
});
}
return jButtonQuit;
}
/** *//**
* This method initializes jPanel3
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel3() ...{
if (jPanel3 == null) ...{
jLabel4 = new JLabel();
jLabel4.setBounds(new Rectangle(3, 75, 30, 25));
jLabel4.setText("false");
jLabel3 = new JLabel();
jLabel3.setBounds(new Rectangle(3, 40, 30, 27));
jLabel3.setText("true");
jLabel2 = new JLabel();
jLabel2.setBounds(new Rectangle(38, 73, 50, 27));
jLabel2.setText("玩家2");
jLabel = new JLabel();
jLabel.setText("玩家1");
jLabel.setBounds(new Rectangle(38, 39, 50, 25));
jPanel3 = new JPanel();
jPanel3.setLayout(null);
jPanel3.setBounds(new Rectangle(371, 0, 94, 234));
jPanel3.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
jPanel3.add(jLabel, null);
jPanel3.add(jLabel2, null);
jPanel3.add(jLabel3, null);
jPanel3.add(jLabel4, null);
}
return jPanel3;
}
/** *//**
* This method initializes jPanel2
*
* @return bingo.ui.ChessBoardPanel
*/
private JPanel getJPanel2() ...{
if (jPanel2 == null) ...{
jPanel2 = new ChessBoardPanel();
jPanel2.setBounds(new Rectangle(114, 0, 258, 231));
jPanel2.addMouseListener(new MouseAdapter()...{
public void mouseClicked(MouseEvent e)...{
int mouseX = e.getX();
//int mouseY = e.getY();
int i = mouseX/(jPanel2.getWidth()/7);
//int j = mouseY/jPanel2.getHeight();
if(begin)...{
if(isPlayer1Now)...{
getPlayer1().putChess(i);
isPlayer1Now = !isPlayer1Now;
jLabel3.setText(""+false);
}
else ...{
getPlayer2().putChess(i);
isPlayer1Now = !isPlayer1Now;
jLabel4.setText(""+true);
}
}
jPanel2.repaint();
}
});
}
return jPanel2;
}
/** *//**
* This method initializes player1
*
* @return bingo.player.Player
*/
private Player getPlayer1() ...{
if (player1 == null)...{
player1 = new ManPlayer();
}
return player1;
}
/** *//**
* This method initializes player2
*
* @return bingo.player.Player
*/
private Player getPlayer2() ...{
if (player2 == null)...{
player2 = new ManPlayer();
}
return player2;
}
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() ...{
public void run() ...{
MainUI thisClass = new MainUI(GameTable.getInstance());
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/** *//**
* This is the default constructor
*/
public MainUI(GameTable gameTable) ...{
super();
gameTable.addObserver(this);
initialize();
}
/** *//**
* This method initializes this
*
* @return void
*/
private void initialize() ...{
this.setSize(475, 265);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/** *//**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() ...{
if (jContentPane == null) ...{
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJPanel1());
jContentPane.add(getJPanel3());
jContentPane.add(getJPanel2());
}
return jContentPane;
}
/** *//**
* TO DO to begin the game
*/
private void beginGame()...{
getPlayer1().beginGame();
getPlayer2().beginGame();
isPlayer1Now = true;
begin = true;
}
/** *//**
* TO DO to end the game
*/
private void endGame()...{
player1.endGame();
player2.endGame();
begin = false;
}
/** *//**
*
*/
public void update(Observable ob,Object arg)...{
if(isPlayer1Now) ...{
JOptionPane.showMessageDialog(null,"Player1 win!!!");
}
else...{
JOptionPane.showMessageDialog(null,"Player2 win!!!");
}
beginGame();
}
} // @jve:decl-index=0:visual-constraint="26,29"
四子棋游戏--bingo game相关推荐
- python人机对战的实验步骤_人机对战初体验:Python实现四子棋游戏
继去年3月人机大战引发全球瞩目以来,围棋AI(人工智能)再度引发跨领域的关注:一个叫Master的围棋AI,几天时间,面对中日韩顶尖职业围棋选手,已取得60胜0败的恐怖战绩,展现出的围棋技艺已经到了人 ...
- 人机对战初体验:Python基于Pygame实现四子棋游戏
人机对战初体验-四子棋游戏 继去年3月人机大战引发全球瞩目以来,围棋AI(人工智能)再度引发跨领域的关注:一个叫Master的围棋AI,几天时间,面对中日韩顶尖职业围棋选手,已取得60胜0败的恐怖战绩 ...
- 深圳大学计系汇编语言实验--四子棋游戏
题面 四子棋是个双人游戏,两人轮流下棋,棋盘由行和列组成的网格,每个选手每次下一个子直到两人中有一人的棋子连成一条水平线.垂直线或者是对角线. 本实验需要在LC-3中实现简易版四子棋的游戏,两位选手通 ...
- 北京工业大学 大一C语言课程设计--四子棋(Bingo)(连子游戏)in TurboC 3.0
连子游戏设计报告书 2009年12月 目录页 目录 1 需求分析... 3 1.1功能与数据需求... 3 1.1.1题目要求的 ...
- [源码和文档分享]基于蒙特卡洛信心上限搜索树UTC算法的四子棋游戏
1 实验任务简介 在M行N列的棋盘中,棋手每次只能在每一列当前的最底部落子,如果某一列已经落满,则不能在该列中落子,目标是在横向.纵向.两个斜向共四个方向中的任意一个方向上,使自己的棋子连成四个(或四 ...
- 四子棋 java_java智能四子棋人机大战游戏设计(附项目,以及原创PSD,设计文档)...
本项目是使用java技术+自创"假设下子"算法开发的人机大战四子棋游戏客户端. 具体项目,以及原创PSD,设计文档,在文件末尾的百度云连接. 一. 小组说明: 组名:CST 组长: ...
- 【华为OD】社招算法真题:四子棋连,下棋后,棋子会落到最底部,实现一行、一列或者一条对角线 上有四个相同颜色的棋子,获胜
四子棋 (游戏:四子连)四子连是一个两个人玩的棋盘游戏,在游戏 中,玩家轮流将有颜色的棋子放在一个m行n列的垂直悬挂的 网格中,如下所示. 这个游戏的目的是在对手实现一行.一列或者一条对角线 上有四个 ...
- java四子棋实验报告_Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
游戏规则:双方轮流选择棋盘的列号放进自己的棋子, 若棋盘上有四颗相同型号的棋子在一行.一列或一条斜线上连接起来, 则使用该型号棋子的玩家就赢了! 程序实现游戏,并将每局的数据保存到本地的文件中 首先我 ...
- 基于LC3模拟器的简单游戏设计:简易四子棋
一.实验目的 分析和理解指定的需解决问题. 利用LC-3的汇编代码设计实现相关程序. 通过LC-3仿真器调试和运行相关程序并得到正确的结果. 二.实验内容 四子棋是一款普遍流行的简易型桌面游戏,据说, ...
最新文章
- 最全Python算法实现资源汇总!
- python ctypes教程_Python ctypes: Python file object - C FILE * | 易学教程
- POPUP_GET_VALUES
- 测试串行回收与堆初始值有关系01
- 小白Linux下安装mysql
- 第一段冲刺 站立会议 5.6
- ORCALE常用查询语句
- HTML期末大作业~海贼王大学生HTML网页制作10个页面作品(HTML+CSS+JavaScript)
- 易基因|典型案例:MeRIP-seq综合分析肺腺癌中的转录组m6A甲基化组
- python 根据名称获取pid_python 使用标准库根据进程名获取进程的pid
- 最新电脑cpu性能排行服务器,服务器cpu性能排行,教您服务器cpu性能排行
- 基于html的旅游网站的设计与实现
- MTK,QAC运用minicom和tftp进行uboot
- 搬:90 个名企笔试题和算法题
- 贪吃蛇大作战ai_当玩家发现《贪吃蛇大作战》是单机游戏后 世界都炸了
- 408计算机专业统考哪些科目,408计算机考研统考科目难度分析-计算机操作系统...
- 围观手机游戏: 一场还没准备好的全民冲锋
- es6 class 跟普通function的区别
- 香港主机托管:什么是主机服务器托管?
- 十八、部署 Vue.js 项目到生产环境