您好,欢迎访问三七文档
1动画21.上一讲的程序importjavax.microedition.lcdui.Canvas;1importjavax.microedition.lcdui.Display;2importjavax.microedition.midlet.MIDlet;3importjavax.microedition.midlet.MIDletStateChangeException;456/**7*车动画8*/9publicclassCarAnimationextendsMIDlet{1011privateCanvascanvas;12privateDisplaydisplay;13这一讲我们继续学习动画。好呀,好想马上就能制作Java游戏啊。恩,学习了本讲,就离制作真正的Java程序又近了一步了啊。先来看一下上一讲我们学习的程序。214/**15*开始方法16*/17protectedvoidstartApp()throwsMIDletStateChangeException{1819display=Display.getDisplay(this);2021canvas=newCarCanvas();22display.setCurrent(canvas);23}24protectedvoidpauseApp(){25}26protectedvoiddestroyApp(booleanbool)throwsMIDletStateChangeException{27}2829}3031importjava.io.IOException;3233importjavax.microedition.lcdui.Canvas;34importjavax.microedition.lcdui.Graphics;35importjavax.microedition.lcdui.Image;363738/**39*车动画canvas40*/41publicclassCarCanvasextendsCanvasimplementsRunnable{4243privateImagecarImage;44privateintx=130;//x坐标45privateinty=130;//y坐标4647/**48*构造器493*/50publicCarCanvas(){5152try{53carImage=Image.createImage(/car2.png);54}catch(IOExceptione){55e.printStackTrace();56}5758//使用线程59Threadth=newThread(this);//制作新线程60th.start();//开始线程61}6263/**64*描画用方法65*/66protectedvoidpaint(Graphicsg){6768//描画与画面大小一样的长方形69g.setColor(255,255,255);70g.fillRect(0,0,getWidth(),getHeight());7172//显示图像73g.drawImage(carImage,x,y,Graphics.HCENTER|Graphics.VCENTER);74}7576/**77*运行线程的处理78*/79publicvoidrun(){8081while(true){82y++;83x-=2;84854//到达一端后从相反端出来86if(x0)x=getWidth();87if(ygetHeight())y=0;8889repaint();9091try{92Thread.sleep(100);//100毫秒待机93}catch(InterruptedExceptione){94}95}96}97}9852.制作游戏1.准备图像2.车的操作3.配置障碍物4.移动障碍物5.判定与障碍物的冲突2.1.准备图像上一讲我们制作了使车移动的程序,这一讲把这个程序改造一下,制作一个游戏程序怎么样?噢!游戏啊!是不是太难了啊。没关系。游戏也不复杂,小尼克应该了解的吧。是什么样的游戏呢?躲闪障碍物,最后到达终点的racinggame。来试试制作可以移动障碍物的车程序吧。真有你说的那么简单么…当然了,用目前为止咱们学的就够了。下面是制作步骤,按照这个步骤试试吧。首先要准备游戏使用的图像。本讲除了要准备车的图像之外,还要准备障碍物的车的图像。62.2.车的操作importjava.io.IOException;12importjavax.microedition.lcdui.Canvas;3importjavax.microedition.lcdui.Graphics;4importjavax.microedition.lcdui.Image;567/**8*车动画canvas9*/10publicclassCarCanvasextendsCanvasimplementsRunnable{1112privateImagecarImage;13privateintx=100;//x坐标14privateinty=180;//y坐标1516/**17*构造器18*/19publicCarCanvas(){2021try{22carImage=Image.createImage(/car3.png);23}catch(IOExceptione){24e.printStackTrace();25}26下面我们对车进行改造,利用十字键使车左右移动。要使用以前用过的keyevent吧。没错,那么尼克你就做做看吧。是这样么?改造CarCanvas,使按左右键时改变x坐标。727//使用线程28Threadth=newThread(this);//制作新线程29th.start();//开始线程30}3132/**33*描画用方法34*/35protectedvoidpaint(Graphicsg){3637//描画与画面大小一样的长方形38g.setColor(255,255,255);39g.fillRect(0,0,getWidth(),getHeight());4041//显示图像42g.drawImage(carImage,x,y,Graphics.HCENTER|Graphics.VCENTER);43}4445/**46*运行线程的处理47*/48publicvoidrun(){4950while(true){51y--;5253//到达一端后从相反端出来54if(x0)x=getWidth();55if(ygetHeight())y=0;5657repaint();5859try{60Thread.sleep(100);//100毫秒待机61}catch(InterruptedExceptione){628}63}64}6566/**************************************************67*keyevent处理68**************************************************/6970/**71*键被按下时的处理72*/73protectedvoidkeyPressed(intkey){7475intgameaction=getGameAction(key);7677switch(gameaction){78caseCanvas.RIGHT:79x+=3;80break;81caseCanvas.LEFT:82x-=3;83break;84default:85}86}87}8892.3.配置障碍物importjava.io.IOException;12importjavax.microedition.lcdui.Canvas;3importjavax.microedition.lcdui.Graphics;4importjavax.microedition.lcdui.Image;567/**8*车动画canvas9*/10publicclassCarCanvasextendsCanvasimplementsRunnable{1112privateImagecarImage;13privateImageenemyImage;14好,这样就使车移动了。下面是配置障碍物的车,先试着在(30,30)的位置配置一个看看。好的。这样就可以用左右键来控制车的左右移动了。1015privateintx=100;//x坐标16privateinty=180;//y坐标1718/**19*构造器20*/21publicCarCanvas(){2223try{24carImage=Image.createImage(/car3.png);25enemyImage=Image.createImage(/enemycar.png);26}catch(IOExceptione){27e.printStackTrace();28}2930//使用线程31Threadth=newThread(this);//制作新线程32th.start();//开始线程33}3435/**36*描画用方法37*/38protectedvoidpaint(Graphicsg){3940//描画与画面大小一样的长方形41g.setColor(255,255,255);42g.fillRect(0,0,getWidth(),getHeight());4344//显示图像45g.drawImage(carImage,x,y,Graphics.HCENTER|Graphics.VCENTER);46g.drawImage(enemyImage,30,30,Graphics.HCENTER|Graphics.VCENTER);47}4849/**5011*运行线程的处理51*/52publicvoidrun(){5354while(true){55y--;5657//到达一端后从相反端出来58if(x0)x=getWidth();59if(ygetHeight())y=0;6061repaint();6263try{64Thread.sleep(100);//100毫秒待机65}catch(InterruptedExceptione){66}67}68}6970/**************************************************71*keyevent处理72**************************************************/7374/**75*键被按下时的处理76*/77protectedvoidkeyPressed(intkey){7879intgameaction=getGameAction(key);8081switch(gameaction){82caseCanvas.RIGHT:83x+=3;84break;85caseCanvas.LEFT:8612x-=3;87break;88default:89}90}91}92使用上一讲学的就可以了吧…13importjava.io.IOException;1importjavax.microedition.lcdui.Canvas;2importjavax.microedition.lcdui.Graphics;3importjavax.microedition.lcdui.Image;456/**7*车动画canvas8*/9publicclassCarCanvasextendsCanvasimplementsRunnable{1011privateImagecarImage;12privateImageenemyImage;1314privateintx=100;//x坐标15privateinty=180;//y坐标1617privateintenem
本文标题:java动画2
链接地址:https://www.777doc.com/doc-4304246 .html