有关俄罗斯方块的问题,标题要长长长长长长长长长长长长

jiuren337 2009-10-28 12:22:52
小弟新学J2ME,写了个俄罗斯方块,其他的地方都还好,就是按下键盘的时候总是走两个格子(以一个方块为一格),给人的感觉就是按了两下键盘,可我只按了一下,求解!!
...全文
59 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuren337 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouyongyang 的回复:]
可能是你的算法写错了吧,,这个可能性最大
[/Quote]

谢谢您的赐教,呵呵
jiuren337 2009-10-28
  • 打赏
  • 举报
回复
protected final void keyPressed(int keyCode){
//
this.keyCode = keyCode;
if(handler != null){ //监视器回调接口中的方法处理按下键事件
handler.microKeyPressed(keyCode);
}

synchronized(listener){
pressed = true;
pressedTime = System.currentTimeMillis();
listener.notifyAll();
}
}
jiuren337 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouyongyang 的回复:]
可能是你的算法写错了吧,,这个可能性最大
[/Quote]

请问,您说的是键盘处理事件的算法还是有关方块的算法?


贴一段代码吧我

////键盘事件处理方法,如果按下键,该方法将被调用
public void microKeyPressed(int keyCode) {
// TODO Auto-generated method stub
int gameAction = getGameAction(keyCode);
synchronized(board){
if(gameAction == Canvas.DOWN){
board.down();
}
else if(gameAction == Canvas.LEFT){
board.left();
}
else if(gameAction == Canvas.RIGHT){
board.right();
}
else if(gameAction == Canvas.FIRE ||
gameAction == Canvas.UP){
board.circumrotate();
}
repaint();
}
}

public void left(){
//
boolean canMove = true;
int x = 0;
int y = 0;
for(int i=0;i<block.length;i++){
x = getX(block[i])-1;
y = getY(block[i]);
blockTemp[i] = getIndex(x,y);
if(x < 0 || state[blockTemp[i]] != 0){
canMove = false;
break;
}
}
if(canMove){
int[] temp = block;
block = blockTemp;
blockTemp = temp;
x0 -= 1;
}
}
xiguabaihe 2009-10-28
  • 打赏
  • 举报
回复
那就是你对应的函数没有写正确,我给你一个函数你自己看看有没有用!
case KeyEvent.VK_LEFT:
// 键盘左箭头处理 ======开始======
if (能左移吗())
{
左移();
}
哎你还是告诉我一个邮箱我把完整的代码发给你
gesanri 2009-10-28
  • 打赏
  • 举报
回复
找到keyPressed的相应地方,把坐标改成原来的一半
zhouyongyang 2009-10-28
  • 打赏
  • 举报
回复
可能是你的算法写错了吧,,这个可能性最大
jiuren337 2009-10-28
  • 打赏
  • 举报
回复
没人顶就自己顶吧.哎...

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧