资源简介
这是本人初次MVC的练习,关于俄罗斯方块的控制代码借鉴了网上的一些资料,不足之处尽请谅解。
注:本程序存在一个偶尔会发生的方块堆积到顶端时无法停止游戏的bug,原因未知。
详见:http://blog.csdn.net/a343902152/article/details/49914759
代码片段和文件信息
package Controller;
import MySocket.ExchangeThread;
import entity.Rect;
import model.GameDao;
import view.OfflinePanel;
import view.OnlinePanel;
import javax.swing.*;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
/**
* 游戏整体控制器,比如命令方块移动,暂停游戏等
* Create by Zhou
*/
public class GameController {
public static GameController localController;
// 界面
private JPanel panel;
// 时间控制器,加载Gametask,每过一段时间,界面就变化一次
private Timer timer;
private boolean isRunning =false;
public GameDao getGamedao() {
return gamedao;
}
public Rect getCurRect() {
return curRect;
}
public Rect getNextRect() {
return nextRect;
}
// 游戏进程控制器,比如碰撞检测之类的
private GameDao gamedao;
// 当前图形与下一个图形
private Rect curRect;
private Rect nextRect;
// 远程通信用的线程
private ExchangeThread exchangeThread;
private class Gametask extends TimerTask {
private int speed = 5;
public void run() {
if(!isRunning){
return ;
}
// speed来控制时间间隔。。
if(speed <= 0){
if(gamedao.isput(curRect)){
if(gamedao.gameover()) {
System.out.println(“begin to end game“);
// 先暂停游戏
isRunning = false;
if(exchangeThread!=null){
exchangeThread.sendMessage(“gameover“);
int myScore = gamedao.score;
int remoteScore = RemoteController.remoteController.getGameDao().score;
String str = Integer.toString(myScore) + “比“ + Integer.toString(remoteScore) + ““;
if (myScore > remoteScore) {
// WIN
JOptionPane.showMessageDialog(panel str + “你赢了“);
} else if (myScore < remoteScore) {
// LOSE
JOptionPane.showMessageDialog(panel str + “你输了“);
} else {
// pingju
JOptionPane.showMessageDialog(panel str + “这是一场平局“);
}
}else{
int myScore = gamedao.score;
JOptionPane.showMessageDialog(panel “游戏结束.“+
“你的得分为:“+Integer.toString(myScore));
}
return;
}
Random random = new Random();
// 已经放下来了的意思
if(exchangeThread!=null){
exchangeThread.sendMessage(“isput“);
}
curRect.setColor(0);
int temp=random.nextInt(7)+1;
curRect = new Rect(nextRect.color);
nextRect = new Rect(temp);
if(exchangeThread!=null){
// 更新rect的命令只发送下一个的
exchangeThread.sendMessage(Integer.toString(temp));
}
if(gamedao.ispop()){
// 消去一行
if(exchangeThread!=null){
exchangeThread.sendMessage(“ispop“);
}
}
}else{
curRect.down();
if(exchangeThread!=null)
exchangeThread.sendMessage(“down“);
}
// 如果没有放下来,就down
panel.repaint();
speed=10-gamedao.level;
}
else{
speed--;
}
}
}
public GameController(JPanel panel){
this.panel=(OfflinePanel)panel;
}
public GameController(ExchangeThread threadOnlineP
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-11-14 21:05 Project2_newTetris\
文件 301 2015-11-12 13:27 Project2_newTetris\.classpath
目录 0 2015-11-14 21:05 Project2_newTetris\.git\
文件 110 2015-11-12 22:56 Project2_newTetris\.git\FETCH_HEAD
文件 23 2015-11-12 22:52 Project2_newTetris\.git\HEAD
文件 315 2015-11-12 22:53 Project2_newTetris\.git\config
文件 73 2015-11-12 22:52 Project2_newTetris\.git\desc
目录 0 2015-11-14 21:04 Project2_newTetris\.git\hooks\
文件 177 2015-11-12 22:52 Project2_newTetris\.git\hooks\README.sample
文件 6112 2015-11-13 23:27 Project2_newTetris\.git\index
目录 0 2015-11-14 21:04 Project2_newTetris\.git\info\
文件 113 2015-11-12 22:52 Project2_newTetris\.git\info\exclude
目录 0 2015-11-14 21:04 Project2_newTetris\.git\logs\
文件 387 2015-11-12 22:53 Project2_newTetris\.git\logs\HEAD
目录 0 2015-11-14 21:04 Project2_newTetris\.git\logs\refs\
目录 0 2015-11-14 21:04 Project2_newTetris\.git\logs\refs\heads\
文件 387 2015-11-12 22:53 Project2_newTetris\.git\logs\refs\heads\master
目录 0 2015-11-14 21:04 Project2_newTetris\.git\logs\refs\remotes\
目录 0 2015-11-14 21:04 Project2_newTetris\.git\logs\refs\remotes\origin\
文件 144 2015-11-12 22:53 Project2_newTetris\.git\logs\refs\remotes\origin\master
目录 0 2015-11-14 21:05 Project2_newTetris\.git\ob
目录 0 2015-11-14 21:04 Project2_newTetris\.git\ob
文件 1132 2015-11-12 22:53 Project2_newTetris\.git\ob
目录 0 2015-11-14 21:04 Project2_newTetris\.git\ob
文件 83 2015-11-12 22:53 Project2_newTetris\.git\ob
目录 0 2015-11-14 21:04 Project2_newTetris\.git\ob
文件 1217 2015-11-12 22:53 Project2_newTetris\.git\ob
文件 813 2015-11-12 22:53 Project2_newTetris\.git\ob
目录 0 2015-11-14 21:04 Project2_newTetris\.git\ob
文件 289 2015-11-12 22:53 Project2_newTetris\.git\ob
文件 168 2015-11-12 22:53 Project2_newTetris\.git\ob
............此处省略254个文件信息
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
- java8学习教程之lambda表达式的使用方法
评论
共有 条评论