Java课设对对碰_java 对对碰游戏

该博客介绍了Java实现对对碰游戏中的交换、消除和填补算法,包括八个移动方向的实现方法,并提供了doExchange()函数来处理棋盘上元素的交换。在评论区,有读者询问如何判断游戏无消去状态时重新填充,提出了两种可能的解决策略。
摘要由CSDN通过智能技术生成

交换、消除、填补算法

public void setExchange() {

if (isSelected) {

isExchange = true;

isSelected = false;

doExchange();

}

}

private void moveRightDown() {

if (currentX == BODY_W - 1 || currentY == BODY_H - 1) {

isSelected = false;

}

currentX = ++currentX % BODY_W;

currentY = ++currentY % BODY_H;

setExchange();

}

private void moveLeftDown() {

if (currentX == 0 || currentY == BODY_H - 1) {

isSelected = false;

}

currentX = (--currentX + BODY_W) % BODY_W;

currentY = ++currentY % BODY_H;

setExchange();

}

private void moveRightUp() {

if (currentY == 0 || currentX == BODY_W - 1) {

isSelected = false;

}

currentX = ++currentX % BODY_W;

currentY = (--currentY + BODY_H) % BODY_H;

setExchange();

}

private void moveLeftUp() {

if (currentX == 0 || currentY == 0) {

isSelected = false;

}

currentX = (--currentX + BODY_W) % BODY_W;

currentY = (--currentY + BODY_H) % BODY_H;

setExchange();

}

private void moveUp() {

if (currentY == 0) {

isSelected = false;

}

currentY = (--currentY + BODY_H) % BODY_H;

setExchange();

}

private void moveDown() {

if (currentY == BODY_H - 1) {

isSelected = false;

}

currentY = ++currentY % BODY_H;

setExchange();

}

private void moveLeft() {

if (currentX == 0) {

isSelected = false;

}

currentX = (--currentX + BODY_W) % BODY_W;

setExchange();

}

private void moveRight() {

if (currentX == BODY_W - 1) {

isSelected = false;

}

currentX = ++currentX % BODY_W;

setExchange();

}

private void doExchange() {

if (currentX - selectedX == -1) {

if (currentY - selectedY == -1) {

tempMove[currentX][currentY] = 9;

tempMove[selectedX][selectedY] = 1;

} else if (currentY - selectedY == 0) {

tempMove[currentX][currentY] = 6;

tempMove[selectedX][selectedY] = 4;

} else if (currentY - selectedY == 1) {

tempMove[currentX][currentY] = 3;

tempMove[selectedX][selectedY] = 7;

}

} else if (currentX - selectedX == 0) {

if (currentY - selectedY == -1) {

tempMove[currentX][currentY] = 8;

tempMove[selectedX][selectedY] = 2;

} else if (currentY - selectedY == 1) {

tempMove[currentX][currentY] = 2;

tempMove[selectedX][selectedY] = 8;

}

} else if (currentX - selectedX == 1) {

if (currentY - selectedY == -1) {

tempMove[currentX][currentY] = 7;

tempMove[selectedX][selectedY] = 3;

} else if (currentY - selectedY == 0) {

tempMove[currentX][currentY] = 4;

tempMove[selectedX][selectedY] = 6;

} else if (currentY - selectedY == 1) {

tempMove[currentX][currentY] = 1;

tempMove[selectedX][selectedY] = 9;

}

}

int temp = body[selectedX][selectedY];

body[selectedX][selectedY] = body[currentX][currentY];

body[currentX][currentY] = temp;

}

分享到:

2011-07-19 11:18

浏览 2338

评论

2 楼

programming

2011-09-20

meimei35 写道

楼主,谢谢分享。我想问下玩家已经不能消去任何图标时,将清空游戏池,用新的图标填充,这个要怎么判断没有消去的图标?

一种:横向扫一遍,纵向扫一遍,遇到可以消去则跳出,

第二各种:对这个生成数据结构进行统计。

1 楼

meimei35

2011-09-19

楼主,谢谢分享。我想问下玩家已经不能消去任何图标时,将清空游戏池,用新的图标填充,这个要怎么判断没有消去的图标?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值