⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 examplegamecanvas.java

📁 手机飞机游戏:在toolkit上编译运行
💻 JAVA
字号:
import javax.microedition.lcdui.*; 
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.lang.Math;
public class ExampleGameCanvas extends GameCanvas implements Runnable
{
			private Display display;
			private Command exitCommand = new Command("EXIT",Command.EXIT,1);
			private Command restartCommand = new Command("RESTART",Command.OK,2);
			//private boolean lock=false;
			private boolean isPlay;//true就循环游戏
			private long delay;
			public int currentX,currentY;
			private int width;//宽度
			private int height;//高度
			private long startTime= System.currentTimeMillis();
			//layer manager
			private LayerManager layerManager;
			//tiledlayer
			private TiledLayer tiledBackground;
			//bomb baoxian;
			Plane plane;
			Bullets bullet;
			Graphics g;
			public ExampleGameCanvas()
			{
				super(true);
				
				try
				{
						width= getWidth();
						height=getHeight();
						currentX=width/2;
						currentY=height/2;
						plane = new Plane();//g,currentX,currentY,height,width
						bullet=new Bullets(width,height);
						//baoxian=new bomb(currentX,currentY);
						delay=20;
						tiledBackground=initBackground();
						layerManager = new LayerManager();
						layerManager.append(tiledBackground);
						initBackground();
						
				}
				catch(Exception ex)
				{
							System.out.println(ex);
				}
			}
			
			public void initBackground() throws Exception
			{

						Image tileImages = Image.createImage("/icon/back_water.png");
						TiledLayer tiledLayer= new TiledLayer(10,9,tileImages,32,32);
						int[] map=
									{1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									 1,1,1,1,1,1,1,1,1,
									};
						for(int i=0;i<map.length;i++)
						{
							int column = i%10;
							int row=(i-column)/10;
							tiledLayer.setCell(column,row,map[i]);
				
						}
						return tiledLayer;
					}
			public void drawScreen(Graphics g)
			{
						//plane.input(g);
						layerManager.paint(g,0,0);
						plane.SpriteUse().setPosition(currentX,currentY);
						plane.SpriteUse().paint(g);
						bullet.drawBullets(g);									
			//			bomb.setPosition(1,1);
			//		bomb.paint(g);
						
			//			b_number.setPosition(18,1);
			//			b_number.setFrame(num);
			//			b_number.paint(g);
						//initBullets(g);
				
						//if(life==false)
						//			g.drawString("游戏结束!请按开始或退出",50,100,Graphics.TOP|Graphics.LEFT);
				
						//时间显示
						g.drawString(""+(int)((System.currentTimeMillis()-startTime)/1000)+"秒",210,5,Graphics.TOP|Graphics.LEFT);
						//放保险
						flushGraphics();
			}
			public void run()
			{
					g= getGraphics();
					while (isPlay==true)
					{
							
							drawScreen(g);
							input(g);
							try
							{
									Thread.sleep(delay);	
							}	
							catch(Exception ex)
							{
									System.out.println(ex);	
							}
					}	
			}
			public void start()
			{
					isPlay=true;
					Thread t=new Thread(this);
					t.start();	
			}
			public void stop()
			{
					isPlay =false;	
			}
			public void input(Graphics g)//输入决定飞机走向
			{

						if(plane.lifeplane()==true)//如果飞机life
						{
								int keyStates=getKeyStates();//声明keystates接受键盘输入
								plane.SpriteUse().setFrame(0);//显示正常状态的飞机
								if((keyStates&LEFT_PRESSED)!=0)//左键按下
								{
											currentX=Math.max(0,currentX-2);//向左移动
											plane.SpriteUse().setFrame(1);//向左飞的飞机图像
								}
								if((keyStates&RIGHT_PRESSED)!=0)//右键按下
											if(currentX+24<width)//留出右边框距离
											{
														currentX=Math.min(width,currentX+2);//向右移动
														plane.SpriteUse().setFrame(2);//向右飞的飞机图像
											}
								if((keyStates&UP_PRESSED)!=0)//上键按下
								{
											currentY=Math.max(0,currentY-2);//向上移动
											plane.SpriteUse().setFrame(0);//显示正常状态的飞机
								}
								if((keyStates&DOWN_PRESSED)!=0)//下键按下
											if(currentY+20<height)//留出下边框
											{
													currentY=Math.min(height,currentY+2);//向下移动
													plane.SpriteUse().setFrame(0);//显示正常状态的飞机
											}
								}
								drawScreen(g);
			}

			
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -