一些制作贪食蛇小游戏中遇到的问题
写在前面
整个小项目通俗上说是在画板上不断的画画,所以每当画完一次变化后,一定要repaint();!repaint();!repaint();!以及需要时间和动画一起进行,所以要让time动起来time.start();!
1.在data_input资料类中若先创建一组头部URL运行start类后,再添加后面的URL对象后,会报空指针异常?
解决方法:1.有可能是你的资源路径选择有问题,相对路径换成绝对路径可能会解决问题。
2.如果不是因为路径问题,那么就是因为idea中后面对象创建但并没有被加载进start启动类中,这时需要删除项目下的out文件夹下的项目.class文件,重启idea再编译运行就不再报错了。
2.当按下空格后,屏幕中间的字体并没有变换?
解决方法:一定注意在构造方法中设置捕获键盘监听函数!!!
一定注意在构造方法中设置捕获键盘监听函数!!!
一定注意在构造方法中设置捕获键盘监听函数!!!
没有捕获键盘,输入再多也没有进来。。。
3.当设置吃食物看起来明明吃到了,但是系统判断没有吃到的原因?
解决方法:这里的原因是没有完全按照要求的坐标去判断。
//食物碰撞判断
if(snakeX[0]==foodx&&snakeY[0]==foody){
length++;
score+=10;
//重新生成食物
foodx =25+ 25*random.nextInt(10);
foody =75+25*random.nextInt(10);
//foody=70+25*random.nextInt(10);
}
如代码中所示,若设置foody的坐标不是严格对照头部对应中心坐标,这里就会判断成没有碰撞,所以坐标对应计算精确很重要!
注:还有一种解决办法,就是允许蛇头可以在目标食物坐标小范围出现,不一定要精准定位到相等。但是,随之而来的可能是由于精准度带来的误判问题,有想法的小伙伴可以尝试一下。
4.打包成jar包
参考狂神视频教学:链接: link
最后
虽然是一个很小很小的小项目,但是当自己动手还是会出现各种各样的问题,感谢B站狂神的视频教学!