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

📄 jumpcanvas.java

📁 j2me的一个手机游戏
💻 JAVA
字号:
package net.frog_parrot.jump;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


public class JumpCanvas extends javax.microedition.lcdui.game.GameCanvas
{
	static int GROUND_HRIGHT = 32;
	static int CORNER_X;
	static int CORNER_Y;
	static int DISP_HEIGHT;
	static int FONT_HEIGHT;
	static Font FONT;
	static int SCORE_WIDTH;
	static int TIME_WIDTH;
	Display myDisplay;
	Jump myJump;
	JumpManager myManager;
	static boolean myGameOver;

	int myScore = 0;
	int myInitialGameTicks = 950;
	int myOldGameTicks = myInitialGameTicks;
	int myGameTicks = myOldGameTicks;
	boolean myInitialized;
	static String myInitialString = "1:00";
	String myTimeString = myInitialString;

	static void setGameOver()
	{	
		myGameOver = true;
		GameThread.requestStop();
	}
	
	static boolean getGameOver()
	{
		return(myGameOver);
	}

	public JumpCanvas(Jump midlet)
	{
		super(false);
		myDisplay = Display.getDisplay(midlet);
		myJump = midlet;
	}
	
	void start()
	{
		myGameOver = false;
		myDisplay.setCurrent(this);
		repaint();
	}

	void reset()
	{
		myManager.reset();
		myScore = 0;
		myGameOver = false;
		myGameTicks = myInitialGameTicks;
		myOldGameTicks = myInitialGameTicks;
		repaint();
	}

	void flushKeys()
	{
		getKeyStates();
	}
	
	public void paint(Graphics g)
	{
		if(!myInitialized)
		{	
		  CORNER_X = g.getClipX();
 		  CORNER_Y = g.getClipY();
    		  DISP_WIDTH = g.getClipWidth();
    		  DISP_HEIGHT = g.getClipHeight();
    		  FONT = g.getFont();
    		  FONT_HEIGHT = FONT.getHeight();
    		  SCORE_WIDTH = FONT.stringWidth("Score: 000");
     		  TIME_WIDTH = FONT.stringWidth("Time: " + myInitialString);
     		  myInitialized = true;

		}
		g.setColor(0xffffff);
		g.fillRect(CORNER_X, CORNER_Y, DISP_WIDTH, DISP_HEIGHT);
		g.setColor(0x0000ff00);
		g.fillRect(CORNER_X,CORNER_Y+DISP_HEIGTH-GROUND_HEIGHT,
			DISP_WIDTH,DISP_HEIGHT);

		try
		{
			if(myManager == null)
			{
				myManager = new JumpManager(CORNER_X,CORNER_Y+FONT_HEIGHT*2,
				DISP_WIDTH,DISP_HEIGHT-FONT_HEIGHT*2-GROUND_HEIGHT);
			}
			myManager.paint(g);
		}
		catch(Exception e)
		{
			errorMsg(g,e);
		}
		
		g.setColor(0);
		g.setFont(FONT);
		g.drawString("Score:" + myScore, (DISP_WIDTH - SCORE_WIDTH)/2,
				DISP_HEIGHT + 5 - GROUND_HEIGHT, g.TOP|g.LEFT)

		g.drawString("Time:" + formatTime(),(DISP_WIDTH-TIME_WIDTH)/2, 
				CORNER_Y + FONT_HEIGHT, g.TOP|g.LEFT);

		if(myGameOver)
		{
			myJump.setNewCommand();
			g.setColor(0xffffff);
			g.fillRect(CORNER_X,CORNER_Y,DISP_WIDTH,FONT_HEIGHT*2+1);
			int goWidth = FONT.stringWidth("Game Over");
			g.setColor(0);
			g.setFont(FONT);
			g.drawString("Game Over",(DISP_WIDTH - goWidth)/2,
				CORNER_Y + FONT_HEIGHT, g.TOP|g.LEFT)
		}
	}

	public String formatTime()
	{
		if((myGameTicks / 16) != myOldGameTicks)
		{
			myTimeString = "";
			myOldGameTicks = (myGameTicks/16)+1;
			int smallPart = myOldGameTicks%60;
			int bigPart = myOldGameTicks/60;
			myTimeString += bigPart + ":";
			if(smallPart /10 <1)
			{
				myTimeString += smallPart;
			}

			return(myTimeString);
		} 

		void advance()
		{
			myGameTicks--;
			myScore += myManager.advance(myGameTicks);
			if(myGameTicks == 0)
			{
				setGameOver();
			}
		 	try
			{
				paint(getGraphics());
				flushGraphics();
			}
			catch(Exception e)
			{
				errorMsg(e);
			}

			synchronized(this)
			{
				try
				{wait(1);}
				
				catch(Exception e) {}
			}
	
		}

		public void checkKeys()
		{
			if(!myGameOver)	
			{
				int keyState = getKeyStates();
				if((keyState & LEFT_PRESSED)!= 0)
				{
					myManager.setLeft(true);
				}
				
				if((keyState & RIGHT_PRESSED)!= 0)
				{
					myManager.setLeft(false);
				}
				
				if((keyState & UP_PRESSED) != 0)
				{
					myManager.jump();
				}
			}
		}

		void errorMsg(Exception e)
		{
			errorMsg(getGraphics(),e);
			flushGraphics();
		}

		void errorMsg(Graphics g, Exception e)
		{
			if(e.getMessage() == null)
			{
				errorMsg(g, e.getClass().getName());
			}
			else
			{
				errorMsg(g, e.getClass().getName() + ":" + e.getMessage());
			}
		}

		void errorMsg(Graphics g, String msg) {
    			// clear the screen
    		    g.setColor(0xffffff);
   		    g.fillRect(CORNER_X, CORNER_Y, DISP_WIDTH, DISP_HEIGHT);
  		    int msgWidth = FONT.stringWidth(msg);
 		    // write the message in red
 		    g.setColor(0x00ff0000);
		    g.setFont(FONT);
		    g.drawString(msg, (DISP_WIDTH - msgWidth)/2, 
 	                 (DISP_HEIGHT - FONT_HEIGHT)/2, g.TOP|g.LEFT);
  		     myGameOver = true;
  		}


		
	}
}



















⌨️ 快捷键说明

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