j2me碰撞检测问题,请前辈指教

代码是检测碰撞,碰撞发生以后不让继续前进,但是想后退或者其它方向也不知道怎么写代码移动,请前辈指点下,碰撞发生以后应该怎样写代码不让他向那个物体前进,然后可以从其它方向移动,谢谢,没什么分,请指教。

代码如下:
我的上下移动相反了,这不用提,如还有什么不好的地方也请指出来谢谢。

import java.io.IOException;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;


public class SpriteGameCanvas extends GameCanvas implements Runnable{

private int curX;
private int curY;
private int maxX;
private int maxY;
private Graphics g;
private int frame[];
private Image img;
private Image img2;
private Sprite msprite;
private long deley;
private Sprite msprite2;
private int x;
private int y;
private boolean check;
protected SpriteGameCanvas(boolean suppressKeyEvents) {
super(suppressKeyEvents);
check = false;
deley = 500;
maxX = this.getWidth();
maxY = this.getHeight();
g = this.getGraphics();
try {
 img =Image.createImage("/man.png");
 img2 = Image.createImage("/love.png");
} catch (IOException e) {
System.out.println("image file");
e.printStackTrace();
}
msprite = new Sprite(img, 24, 32);
msprite2= new Sprite(img2,128,128);
frame = new int[4];
for(int i=0;i<frame.length;i++)
{
frame[i]=i;
}
curX = (maxX-msprite.getWidth())/2 + 20;
curY = (maxY-msprite.getHeight())/2;
msprite.setFrameSequence(frame);
msprite.setPosition(curX, curY);
msprite2.setFrame(0);
msprite2.setPosition(0, curY);
msprite2.paint(g);
msprite.paint(g);
this.flushGraphics();
}

public void run() {
while(true)
{
try {
Thread.sleep(deley);
} catch (InterruptedException e) {
System.out.println("sleep file");
e.printStackTrace();
}
input();
rend();
//msprite.nextFrame();

}
}

public void start()
{
Thread t = new Thread(this);
t.start();
}
        
        public void input()
{
if(check!=true)
{
x = curX;
y = curY;
}
int keyState = this.getKeyStates();
if(((keyState & this.UP_PRESSED) !=0))
{
if(curY>0)
curY++;
}
if(((keyState & this.DOWN_PRESSED)!=0))
{
if(curY<(maxY-img.getHeight()))
{

curY--;
}else{
curY = maxY-img.getHeight();
}
}
if((keyState & this.LEFT_PRESSED)!=0)
{
if(curX>0)
curX--;
}
if((keyState&this.RIGHT_PRESSED)!=0)
{
if(curX<(maxX-img.getWidth()))
{
curX++;
}
}

}

public void rend()
{
if(!(check = msprite.collidesWith(msprite2, false)))
{
System.out.println( msprite.collidesWith(msprite2, false)+"curX: "+"curX: "   +x+"curY: "+curY );
msprite.setPosition(curX, curY);

}else{
msprite.setPosition(x, y);
System.out.println(" x: " +x+" y :"+y );
}
msprite.paint(g);
this.flushGraphics();
System.out.println("check : " + msprite.collidesWith(msprite2, false));
}
}

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值