资源简介
小弟写的Java版中国象棋,不足之处还请多多赐教!
代码片段和文件信息
package com.yaoyun.chess.controller;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import com.yaoyun.chess.entity.Chess;
import com.yaoyun.chess.entity.ChessMan;
import com.yaoyun.chess.panel.GamePanel;
public class Controller extends MouseAdapter {
private Chess chess;
private ChessMan chessMan;
private GamePanel gamePanel;
private boolean gameover = false;
/*
* 重新显示游戏界面
*/
public Controller(GamePanel gamePanel Chess chess ChessMan chessMan) {
this.chess = chess;
this.chessMan = chessMan;
this.gamePanel = gamePanel;
}
/*
* 鼠标点击事件(non-Javadoc)
* @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
*/
public void mouseClicked(MouseEvent e) {
// 获取鼠标的位置
int x = e.getX();
int y = e.getY();
// 如果鼠标点击的坐标有效
if ((x >= 40 && x <= 570) && (y >= 40 && y <= 630) && !gameover) {
// 把鼠标的坐标转换成棋子数组的下标
int newi = (y + 25) / 60 - 1;
int newj = (x + 25) / 60 - 1;
// 获取鼠标上一步点击位置数组的下标
int oldi = chessMan.getOldX();
int oldj = chessMan.getOldY();
// 获取保存棋子位置的数组
int[][] chessFlag = chessMan.getChessFlag();
// 判断选中的地方是否有棋子
if (chessFlag[newi][newj] == 0) {
gamePanel.setMessage(2);
// 判断上一步是否有选中棋子
if (oldi != -1 && oldj != -1) {
gamePanel.setMessage(5);
// 判断棋子是否能移动
if (isChessManMove(chessFlag newi newj)) {
//播放下棋声音
play(“go“);
// 移动棋子
chessMan.setChessFlag(newi newj chessFlag[oldi][oldj]);
chessMan.setChessFlag(oldi oldj 0);
// 移动成功后,清除上一步选中的棋子
chessMan.setOldX(-1);
chessMan.setOldY(-1);
gamePanel.dispaly(chess chessMan);
}
}
} else {
gamePanel.setMessage(3);
// 判断上一步是否有棋子
if (oldi == -1 && oldj == -1) { // 上一步没有棋子
// 如果有棋子,并且是自己
if ((oldi == newi && oldj == newj)) {
gamePanel.setMessage(6);
} else {
gamePanel.setMessage(8);
// 把选中的棋子设为选中状态
chessMan.setSelect(newi newj);
// 并把其保存为上一颗棋子
chessMan.setOldX(newi);
chessMan.setOldY(newj);
gamePanel.dispaly(chess chessMan);
}
} else { // 如果上一步有棋子
// 判断是否吃的到下一步的棋子
if (isChessManMove(chessFlag newi newj)) {
// 判断是否是自己一方的棋子
if ((chessFlag[oldi][oldj] >= 8 && chessFlag[newi][newj] < 8) || (chessFlag[oldi][oldj] < 8 && chessFlag[newi][newj] >= 8)) {
if (chessFlag[newi][newj] == 5) {
gamePanel.setMessage(9);
gameover = true;
} else if (chessFlag[newi][newj] == 14) {
gamePanel.setMessage(10);
gameover = true;
}
//播放吃棋子的声音
play(“eat“);
// 吃棋子
chessMan.setChessFlag(newi newjchessFlag[oldi][oldj]);
chessMan.setChessFlag(oldi oldj 0);
}
}
// 并
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-08-31 22:45 中国象棋(Java版)\
文件 318 2012-08-31 14:47 中国象棋(Java版)\.classpath
文件 399 2012-08-31 13:35 中国象棋(Java版)\.project
目录 0 2012-08-31 22:44 中国象棋(Java版)\.settings\
文件 598 2012-08-08 16:27 中国象棋(Java版)\.settings\org.eclipse.jdt.core.prefs
文件 132 2012-08-31 22:52 中国象棋(Java版)\@.txt
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\controller\
文件 6188 2012-08-31 16:35 中国象棋(Java版)\bin\com\yaoyun\chess\controller\Controller.class
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\entity\
文件 2239 2012-08-31 16:35 中国象棋(Java版)\bin\com\yaoyun\chess\entity\Chess.class
文件 3888 2012-08-31 16:35 中国象棋(Java版)\bin\com\yaoyun\chess\entity\ChessMan.class
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\main\
文件 2728 2012-08-31 22:40 中国象棋(Java版)\bin\com\yaoyun\chess\main\ChineseChess.class
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\panel\
文件 1676 2012-08-31 22:28 中国象棋(Java版)\bin\com\yaoyun\chess\panel\GamePanel.class
目录 0 2012-08-31 22:44 中国象棋(Java版)\bin\com\yaoyun\chess\util\
文件 376 2012-08-31 16:35 中国象棋(Java版)\bin\com\yaoyun\chess\util\Global.class
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\yaoyun\
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\yaoyun\chess\
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\yaoyun\chess\controller\
文件 9842 2012-08-31 14:48 中国象棋(Java版)\src\com\yaoyun\chess\controller\Controller.java
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\yaoyun\chess\entity\
文件 2770 2012-08-31 15:34 中国象棋(Java版)\src\com\yaoyun\chess\entity\Chess.java
文件 3755 2012-08-31 15:55 中国象棋(Java版)\src\com\yaoyun\chess\entity\ChessMan.java
目录 0 2012-08-31 22:44 中国象棋(Java版)\src\com\yaoyun\chess\main\
............此处省略12个文件信息
相关资源
- Java烟花特效(含源码).
- java 通过UDP实现一对多聊天室
- js上传zip文件java解压.txt
- java 课程设计 JPEG图片操作
-
java ba
se64的jar包 - java+jsp+oracle实现基本的用户管理系统
- java swing 企业人事管理系统(含数库)
- java+sql学生成绩管理系统有文档.rar
- Java+SQL2000学籍信息管理子系统课程设
- javafx删除table行的demo
- java串口通讯源码
- javaMail 用三种方式实现发送附件
- Google 推出的 Java 编码规范
- java 实现支付宝接口
- java,Eclipse,ATM自动柜台模拟系统
- DFA NFA java实现
- java农夫过河问题
- 图书进存销系统java完整代码
- GN算法Java版源码,个人鼎作
- java课程设计 客房管理系统
- c调用java的
- JAVA爬虫项目源代码
- java 聊天室 计算机网络
- JAVA算术编码
- 小叮当代码JAVA.rar
- java多线程文件传输基于swing
- SpringBoot实现Socket.io消息推送(java+h
- 图书馆管理系统java+S2SH+MySQL
- 数据库课程设计教务管理系统
- java数字波形生成器
评论
共有 条评论