资源简介
绝对原创的可人机对战的泡泡堂。
很喜欢玩泡泡堂,但是很多时候没有网络,最初想下一些单机的泡泡堂玩,最好仿激战模式那种的单机版,但是找了好久就是找不到,要不是双人单机的,要不是和AI非常低的怪物玩。。。
在多次寻找无果的情况下,本人决定自己弄一个出来玩玩,想起来简单,做起来难啊,毕竟水平真太菜,暂时只能做到这种程度了,主要是AI的设计似乎从开始就设计跑偏,导致想进一步优化AI是在优化不来了,哎,归根到底还是水平太菜。。。
注意:
程序支持的环境为JRE1.7以上(包括1.7)
由于禁止了Frame的装饰,导致程序没有退出按钮,随意做成了按键监听,ESC键为退出程序键;
一局游戏结束,F5键可重新开始;
上下左右控制人物移动;
空格键放炮。
代码片段和文件信息
import java.awt.Point;
import java.util.HashMap;
import java.util.Map;
public class Brain {
public static Thread moveThread;
public static Brain brain= new Brain();
private Role[] role;
private Brain() {};
public void setRole(Role ... role) {
this.role = role;
}
/* 获取角色站定的方格位置
* 判断角色正中心点落于Constant.Map的哪个方格中
* */
public static int[] getRolePoint(Point point) {
double x = (double)(point.x + Constant.Length / 2) /(double)Constant.Length;
double y = (double)(point.y + Constant.Length / 2) /(double)Constant.Length;
return new int[]{(int) Math.floor(x) (int) Math.floor(y)};
}
/* 获取某一点的位置
* 判断某点落于Constant.Map的哪个方格中*/
public static boolean deathPoint(Point point Map map) {
int x = (int) Math.floor((double)(point.x) / (double)Constant.Length);
int y = (int) Math.floor((point.y) / (double)Constant.Length);
if(x == Constant.width) x = Constant.width - 1;
if(y == Constant.height) y = Constant.height - 1;
if(map.containsKey(x + “-“ + y)) {
return true;
}
return false;
}
/* 判断此方格中是否已经存在炸弹*/
public static boolean ifBombExsit(int[] point) {
boolean ifBombExsit = false;
if(Math.abs(Constant.Map[point[1]][point[0]]) > 1) {
ifBombExsit = true;
}
return ifBombExsit;
}
/* 给Constant.map的某个方格设置毒药*/
public static void setDu(int[] point) {
if(Constant.Map[point[1]][point[0]] == 0) {
Constant.Map[point[1]][point[0]] = -1;
} else if(Constant.Map[point[1]][point[0]] > 0) {
Constant.Map[point[1]][point[0]] = -1 * Constant.Map[point[1]][point[0]];
}
}
/* 判断此方格中是否已经存在毒药*/
public static boolean ifDuArea(int[] point) {
boolean ifDuArea = false;
if(Constant.Map[point[1]][point[0]] < 0) {
ifDuArea = true;
}
return ifDuArea;
}
/* 给Constant.map的某个方格设置炸弹*/
public static boolean setBomb(int[] point) {
synchronized (Constant.Map) {
if(!Brain.ifBombExsit(point)) {
long time = System.currentTimeMillis();
if(Constant.Map[point[1]][point[0]] == -1) {
Constant.Map[point[1]][point[0]] = (-1 * time);
} else if(Constant.Map[point[1]][point[0]] == 0){
Constant.Map[point[1]][point[0]] = time;
}
return true;
} else {
return false;
}
}
}
/*爆炸前的就绪工作,将由某方格内的炸弹引起的爆炸的方格存入一个MAP中*/
public static Map PreBombing(int[] point) {
Map pointMap = new HashMap();
findBomb(point[0] point[1] pointMap);
return pointMap;
}
/* 爆炸中的查询工作,找出所有属于爆炸范围的炸弹*/
public static void findBomb(int point0 int point1 Map pointMap) {
if(!pointMap.containsKey(point0 + “-“ + (point1))) {
pointMap.put(point0 + “-“ + point1 Constant.BombCount);
}
for(int i = 1; i < Constant.Power; i++) {
if(point1 - i >= 0) {
if(!pointMap.containsKey(point0 + “-“ + (point1 - i))) {
pointMap.put(point0 + “-“ + (point1 - i) Constant.BombCount);
if(Math.abs(Constant.Map[point1 - i][point0]) > 1) {
fin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 298 2015-05-04 12:54 BNB_NEW\.classpath
文件 383 2015-05-04 12:54 BNB_NEW\.project
文件 629 2015-05-04 12:54 BNB_NEW\.settings\org.eclipse.jdt.core.prefs
文件 1122 2015-05-20 14:08 BNB_NEW\bin\Brain$1.class
文件 11696 2015-05-20 14:08 BNB_NEW\bin\Brain.class
文件 1270 2015-05-20 13:37 BNB_NEW\bin\Computer$DIR.class
文件 8688 2015-05-20 13:37 BNB_NEW\bin\Computer.class
文件 5274 2015-05-20 14:05 BNB_NEW\bin\Constant.class
文件 5077 2015-05-20 13:49 BNB_NEW\bin\Drawer.class
文件 1002 2015-05-20 13:43 BNB_NEW\bin\People$State.class
文件 3794 2015-05-20 13:43 BNB_NEW\bin\People.class
文件 342 2015-05-19 18:46 BNB_NEW\bin\Role.class
文件 3435 2015-05-20 14:10 BNB_NEW\bin\Switch.class
文件 88512 2015-05-18 17:51 BNB_NEW\MUSIC\bomb.wav
文件 498320 2011-08-07 19:37 BNB_NEW\MUSIC\gamestart.wav
文件 176404 2015-05-20 13:42 BNB_NEW\MUSIC\get.wav
文件 19072 2015-05-19 13:40 BNB_NEW\MUSIC\lay.wav
文件 2646126 2015-05-19 13:29 BNB_NEW\MUSIC\ppd.wav
文件 1032 2015-05-11 17:47 BNB_NEW\PIC\Bombing.png
文件 7875 2015-05-20 12:30 BNB_NEW\PIC\Bossdown.png
文件 6524 2015-05-20 12:39 BNB_NEW\PIC\Bossleft.png
文件 6368 2015-05-20 12:48 BNB_NEW\PIC\Bossright.png
文件 6914 2015-05-20 12:48 BNB_NEW\PIC\Bossup.png
文件 6262 2015-05-20 13:26 BNB_NEW\PIC\ComputerDown.png
文件 4911 2015-05-20 13:26 BNB_NEW\PIC\ComputerLeft.png
文件 4814 2015-05-20 13:26 BNB_NEW\PIC\ComputerRight.png
文件 5004 2015-05-20 13:26 BNB_NEW\PIC\ComputerUp.png
文件 14577 2015-05-11 17:47 BNB_NEW\PIC\down.png
文件 3408 2015-05-11 17:47 BNB_NEW\PIC\Du.png
文件 2091 2015-05-11 17:47 BNB_NEW\PIC\floor1.jpg
............此处省略23个文件信息
评论
共有 条评论