java吧 关注:1,237,508贴子:12,707,684
  • 15回复贴,共1

求助贴吧大神

只看楼主收藏回复

我最近在做一个新的小游戏,打砖块。基本功能已经实现,现在需要实现一个 “重新开始游戏 ”的新功能,在这个 “ 重新开始方法” 中我重置了很多的数据,包括分数,速度,以及挡板,小球和砖块的初始化,但是在小球初始化的过程中碰到一个解决不了的问题,原因是 我小球移动通过一个线程控制画面的刷新去实现的,在 “重新开始游戏 ” 方法中,我用 interrupt方法去终止该线程,但是最后实现的效果却是小球没有初始化到最早的位置,而是 再停止之前小球又移动了一次,导致了这个bug的存在,并且这个bug的位置,跟重新开始游戏之前小球的方向属性有关。我上个图给大家看看
画面有点丑。。见谅。。只为锻炼自己逻辑实现功能


IP属地:上海1楼2016-02-20 12:11回复
    二楼


    IP属地:广东来自Android客户端2楼2016-02-20 12:12
    回复



      IP属地:上海3楼2016-02-20 12:17
      回复
        我自己分析的原因可能有如下,
        1控制小球移动的线程并行运行在我的主线程旁,所以我在初始化变量的同时,小球还是在进行着移动,所以就算之后线程被终止了,小球还是移动了一次到了bug的位置。
        2游戏控制器里的小球移动线程是用匿名线程,然后赋值给了 成员变量的 线程;而终止线程时,是直接通过调用游戏控制器里的线程 的终止方法,会不会两个线程 并不是同一个线程,但是仔细又想了想,如果线程没有被终止,则小球会一直移动下去,但是现在的情况并不一样,线程是被终止了,并且程序没有报错,只是位置在一个bug的位置


        IP属地:上海4楼2016-02-20 12:21
        回复
          我自己解决的话,我一开始设置一个全局的变量,通过这个变量开关控制线程的执行,但是没有奏效,也不知道是我代码写的有问题还是什么。。搞了很久一直也没解决。。。求助大神来帮忙啊,下面上一下 相关代码片段,真心求助


          IP属地:上海5楼2016-02-20 12:23
          回复
            int result = JOptionPane.showConfirmDialog(null, "啊噢,挂了,要重新开始吗?");
            if(result == 0){
            //X:要重新开始应该重置关卡 TODO
            restart();
            return;
            }else {
            //不要重新开始,退出
            System.exit(0);
            }
            这是重新开始游戏的起点,是通过砖块消完之后触发的


            IP属地:上海6楼2016-02-20 12:25
            收起回复
              1,重新开始游戏的起点,通过砖块消完后触发

              2,业务逻辑真正初始化游戏 的方法

              3,游戏控制器中控制画面刷先来实现小球移动的方法


              IP属地:上海7楼2016-02-20 12:35
              回复
                重要的就是以上的这些来,并且我通过控制台输出,游戏最开始的初始化小球坐标,以及重新开始游戏方法 初始化小球坐标 两次都是一致的....求大神解答啊 不要沉啊


                IP属地:上海8楼2016-02-20 12:36
                回复
                  有大神帮忙解决吗?或者有其他更好的方法,教教小弟啊 ,谢谢啊


                  IP属地:上海9楼2016-02-20 12:37
                  回复
                    我要自顶了。。。。。。。


                    IP属地:上海10楼2016-02-20 12:38
                    回复


                      IP属地:上海11楼2016-02-20 12:38
                      回复
                        太长没人看么。。


                        IP属地:上海12楼2016-02-20 12:40
                        回复
                          ....真心求助没人看吗


                          IP属地:上海来自iPhone客户端13楼2016-02-20 14:17
                          回复
                            不要沉啊...


                            IP属地:上海来自iPhone客户端14楼2016-02-20 14:17
                            回复


                              IP属地:上海来自iPhone客户端15楼2016-02-20 14:17
                              回复