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

📄 harddrivecanvas.java

📁 it is a 2d game example
💻 JAVA
字号:
import java.io.IOException;
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


class HardDriveCanvas 
extends GameCanvas 
implements Runnable
{
	private HardDriveMIDlet midlet;
 	private Sprite carSprite;
    	
	private LayerManager layerManager;
	private ObstacleManager obsManager;


	private boolean gameRunning;
	private boolean collision = false;

    	private int width;
    	private int height;

	private long gameDuration;
	
	public HardDriveCanvas(HardDriveMIDlet hdmidlet, String carImageName, String obsImageName)
	throws IOException 
	{
  		super(true);

		this.midlet = hdmidlet;  //used later

		layerManager = new LayerManager();

		width = getWidth(); 
     		height = getHeight();

		layerManager.setViewWindow(1,1,width - 2, height -2);

		createCar(carImageName);
 
		obsManager = new ObstacleManager( this, layerManager, obsImageName);
		
	} 

	private void createCar(String carImageName) throws IOException 
	{
		Image carImage = Image.createImage(carImageName);
		carSprite = new Sprite(carImage);

		// Put the sprite close to bottom center
		carSprite.setPosition(width/2,height - 30);
	
		layerManager.append(carSprite);
	}

 
	public void start() 
	{
  		gameRunning = true;
		Thread gameThread = new Thread(this);
		gameThread.start();
	}

	public void stop() { gameRunning = false; }

	public void run() 
	{
		Graphics g = getGraphics();
		int timeStep = 300;
		obsManager.renderObstacles();
		long startTime = System.currentTimeMillis();
		while (gameRunning) //is true                                    
		{
			tick();
			input();
      		render(g);
			
			long endTime = System.currentTimeMillis();
      		long duration = (int)(endTime - startTime);
			gameDuration = duration / 1000;  //game time in seconds

			try
			{
				Thread.sleep(timeStep );//- duration); 
				obsManager.MoveObstacles();
			}
        		catch (InterruptedException ie) { stop(); }

			
		}

	}			


	private void tick() 
	{
    		if(!collision)
			checkCollision();
		if (collision) 
		{
			//Game over
			int score = obsManager.getScore();
			midlet.HardDriveCanvasGameOver(gameDuration,score);			
			//stop();	 
		}
  	}

	private void input() 
	{    
		int keyStates = getKeyStates();
		int currentY = carSprite.getY();
		int currentX = carSprite.getX( );
		if ((keyStates & LEFT_PRESSED) != 0)      
		carSprite.setPosition (Math.max(0, currentX-5), currentY);    
		if ((keyStates & RIGHT_PRESSED) != 0)      
		carSprite.setPosition(Math.min(170, currentX + 5), currentY);

	}
	private void render(Graphics g) 
	{
		g.setColor(255, 255, 255); // white
  		g.fillRect(0, 0,getWidth()-3, getHeight()-3);
  		
		layerManager.paint(g,0,0);
		
		flushGraphics();

	}

	private void checkCollision( )
	{
		if (obsManager.hitTest(carSprite) )		
			collision = true;
		
	}
}

	





⌨️ 快捷键说明

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