5.2 蜘蛛随机改变方向线程完成了游戏画布类框架的开发后,就可以开发蜘蛛随机改变方向的线程类了。此线程所起的作用是每隔一定的时间随机改变蜘蛛的移动方向,这样可以增加游戏的不确定性,使游戏更有趣。将如下SpiderDirectionThread类的代码添加到MyGameCanvas的类体中。public class SpiderDirectionThread extends Thread{ public void run(){ while(flag){ //游戏未结束时不断循环 try{Thread.sleep(5000);//每次随机改变方向后休息5秒}catch(Exception e){e.printStackTrace();}//随机产生方向 int tempDirection=(int)new Date().getTime()%4; while((spiderDirection>=2)&&(tempDirection>=2) ||(spiderDirection<=1)&&(tempDirection<=1)){ //当方向与原来一样时重新产生tempDirection=(int)new Date().getTime()%4; } spiderDirection=tempDirection; }}}由于大部分手机设备都是CLDC1.1及以下标准的,因此不支持使用“Math.random()”来产生随机数,这时一般都采用获取时间毫秒数来替代的方式。5.3 蜘蛛移动线程的开发完成了蜘蛛随机改变方向线程的开发后,就可以开发蜘蛛移动线程了,此线程主要是负责蜘蛛按照一定的速度沿当前方向移动。将如下SpiderThread类的代码添加到MyGameCanvas的类体中:public class SpiderThread extends Thread{ public void run(){ while(flag){ //游戏未结束时不断循环 try { Sprite sp=gd.getSpider(); int sx=sp.getX(); //获取蜘蛛当前X坐标 int sy=sp.getY(); //获取蜘蛛当前Y坐标 if(spiderDirection==0){//当前方向向下 sy=sy+4;//向下移动蜘蛛 if(sy>=getHeight()-16||sp.collidesWith(gd.getBasePool(),true)){ sy=sy-4;spiderDirection=1; //方向改变为向上} sp.setTransform(sp.TRANS_NONE); } else if(spiderDirection==1||sp.collidesWith(gd.getBasePool(),true)){//当前方向向上 sy=sy-4; //向上移动蜘蛛if(sy<=0){sy=sy+4;spiderDirection=0; //方向改变为向下} sp.setTransform(sp.TRANS_ROT180); } else if(spiderDirection==2||sp.collidesWith(gd.getBasePool(),true)){//当前方向向左 sx=sx-4; //向左移动蜘蛛 if(sx<=0){sx=sx+4; spiderDirection=3; //方向改变为向右} sp.setTransform(sp.TRANS_ROT90);} else if(spiderDirection==3||sp.collidesWith(gd.getBasePool(),true)){//当前方向向右
·2024年9月目录 ·2024年8月目录 ·2024年7月目录 ·2024年6月目录 ·2024年5月目录 ·2024年4月目录 ·2024年3月目录 ·2024年2月目录 ·2024年1月目录 ·2023年12月目录 ·2023年11月目录 ·2023年10月目录 ·2023年9月目录 ·2023年8月目录