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

📄 qt_canvas.java

📁 自己看吧
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
import java.util.Random;

//import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import com.nokia.mid.ui.FullCanvas;

/**TODO
 * 移植相关数据在最下方,
 * 如果游戏运行慢有可能是休息时间过长,请找变量 i_time 去修改休息时间
 * 如果修改后还是慢、卡,那就请便宜行事
 * 
 * 中间在画UI的地方,需要根据屏幕大小的不同重新定位 查找 img_UI 就能找到
 */

public class qt_Canvas extends FullCanvas implements Runnable
{
	public qt_Canvas(qt_MIDlet mid)
	{
		super();
		i_time = 100;
//		setFullScreenMode(true);
		this.mid = mid;
		angle = new qt_Angle[6];
		for(i = 0;i < 6;++i)
			angle[i] = new qt_Angle();
		mask = new qt_rms();
		
		init();
		
		thr = new Thread(this);
		is_run = true;
		is_pause = true;
		thr.start();
	}
	
	protected void showNotify()
	{
		is_pause = true;
	}
	
	protected void hideNotify()
	{
		is_pause = false;
	}
	
	public void init()
	{
		img_LOGO = new Image[3];
		img_BackDrop = new Image[4];
		img_UI = new Image[2];
		img_Item = new Image[5];
		img_Ammo = new Image[7];
		img_NPC = new Image[7];
		img_Player = new Image[3];
		img_Letter = new Image[3];
		
////*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*
//		zong0 = GAMELOAD;
//		i_time = 40;
//		scene = 1;
//		try
//		{
//			if(img_BackDrop[0] == null)
//				img_BackDrop[0] = Image.createImage("/img/backdrop0.png");
//			if(img_Item[0] == null)
//				img_Item[0] = Image.createImage("/img/item0.png");
//		}
//		catch (Exception e)
//		{
//		}
////*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*测试*
		initdata();
		initIma();
	}
	
	public void initdata()
	{
		menu = 0;
		
		num_man = 3;
		num_item1 = 3;
		man_speed = 2;
		
		map11X = new int[8];
		is_map11 = new boolean[8];
		map21X = new int[8];
		is_map21 = new boolean[8];
		map22X = new int[8];
		is_map22 = new boolean[8];

		npc_cla = new Random();
		npc_paint = new boolean[6];
		NPC_dead = new boolean[6];
		npc_cla_state = new int[6];
		NPC_state = new int[6];
		is_npc = new boolean[6];
		npcX = new int[6];
		npcY = new int[6];
		npcY_temp = new int[6];
		is_npcB = new boolean[6];
		npcBX = new int[3];
		npcBY = new int[3];
		
		is_item = new boolean[10];
		is_itemstate = new boolean[10];
		npc_item = new boolean[6];
		item_state = new int[6];
		i_itemX = new int[10];
		i_itemY = new int[10];
	}
	
	public void initIma()
	{
		try
		{
			switch(zong0)
			{
			case GAMELOGO:
				for(i = 0;i < 2;++i)
				{
					img_LOGO[i] = Image.createImage("/img/logo"+i+".png");
				}
				break;
			case GAMEMENU:
				if(img_BackDrop[0] == null)img_BackDrop[0] = Image.createImage("/img/backdrop0.png");
				if(img_Item[0] == null)img_Item[0] = Image.createImage("/img/item0.png");
				for(i = 0;i < 3;++i)
					if(img_Player[i] == null)img_Player[i] = Image.createImage("/img/player"+i+".png");

				img_MENU = Image.createImage("/img/menu.png");
				break;
			case GAMECONT:
			case GAMELOAD:
				switch(i_load)
				{
				case 1:
					freeIma();
					break;
				case 3:
					if(img_BackDrop[0] == null)
						img_BackDrop[0] = Image.createImage("/img/backdrop0.png");
					break;
				case 4:
					if(img_Item[0] == null)
						img_Item[0] = Image.createImage("/img/item0.png");
				case 5:
					//以下需要进入就加载
					if(img_num == null)
						img_num = Image.createImage("/img/num.png");
					break;
				case 6:
					if(img_UI[0] == null)
						img_UI[0] = Image.createImage("/img/UI0.png");
					break;
				case 7:
					if(img_UI[1] == null)
						img_UI[1] = Image.createImage("/img/UI1.png");
					break;
				case 8:
					if(img_Letter[0] == null)
						img_Letter[0] = Image.createImage("/img/letter0.png");
					break;
				case 9:
					if(img_Letter[1] == null)
						img_Letter[1] = Image.createImage("/img/letter1.png");
					break;
				case 10:
					if(img_Letter[2] == null)
						img_Letter[2] = Image.createImage("/img/letter2.png");
					break;
				case 11:
					if(img_Item[1] == null)
						img_Item[1] = Image.createImage("/img/item1.png");
					break;
				case 12:
					if(img_Item[2] == null)
						img_Item[2] = Image.createImage("/img/item2.png");
					break;
				case 13:
					if(img_Item[3] == null)
						img_Item[3] = Image.createImage("/img/item3.png");
					break;
				case 14:
					if(img_Item[4] == null)
						img_Item[4] = Image.createImage("/img/item4.png");
					break;
				case 15:
					if(img_Ammo[0] == null)
						img_Ammo[0] = Image.createImage("/img/ammo0.png");
					break;
				case 16:
					if(img_Ammo[1] == null)
						img_Ammo[1] = Image.createImage("/img/ammo1.png");
					break;
				case 17:
					if(img_Ammo[2] == null)
						img_Ammo[2] = Image.createImage("/img/ammo2.png");
					break;
				case 18:
					if(img_Ammo[3] == null)
						img_Ammo[3] = Image.createImage("/img/ammo3.png");
					break;
				case 19:
					if(img_Ammo[4] == null)
						img_Ammo[4] = Image.createImage("/img/ammo4.png");
					break;
				case 20:
					if(img_Ammo[5] == null)
						img_Ammo[5] = Image.createImage("/img/ammo5.png");
					break;
				case 21:
					if(img_Ammo[6] == null)
						img_Ammo[6] = Image.createImage("/img/ammo6.png");
					break;
				case 22:
					if(img_NPC[0] == null)
						img_NPC[0] = Image.createImage("/img/npc0.png");
					break;
				case 24:
					if(img_NPC[1] == null)
						img_NPC[1] = Image.createImage("/img/npc1.png");
					break;
				case 26:
					if(img_NPC[2] == null)
						img_NPC[2] = Image.createImage("/img/npc2.png");
					break;
				case 27:
					if(img_NPC[3] == null)
						img_NPC[3] = Image.createImage("/img/npc3.png");
					break;
				case 31:
					if(img_NPC[4] == null)
						img_NPC[4] = Image.createImage("/img/npc4.png");
					break;
				case 36:
					if(img_NPC[5] == null)
						img_NPC[5] = Image.createImage("/img/npc5.png");
					break;
				case 41:
					if(img_NPC[6] == null)
						img_NPC[6] = Image.createImage("/img/npc6.png");
					break;
				case 43:
					if(img_Player[0] == null)
						img_Player[0] = Image.createImage("/img/player0.png");
					break;
				case 51:
					if(img_Player[1] == null)
						img_Player[1] = Image.createImage("/img/player1.png");
					break;
				case 59:
					if(img_Player[2] == null)
						img_Player[2] = Image.createImage("/img/player2.png");
					break;
				case 65:
					//以下需要分关加载
					if(scene == 1)
					{
						if(img_BackDrop11 == null)
							img_BackDrop11 = Image.createImage("/img/backdrop11.png");
					}
					if(scene == 2)
					{
						if(img_BackDrop21 == null)
							img_BackDrop21 = Image.createImage("/img/backdrop21.png");
						if(img_BackDrop22 == null)
							img_BackDrop22 = Image.createImage("/img/backdrop22.png");
					}
					if(scene == 3)
					{
						if(img_BackDrop31 == null)
							img_BackDrop31 = Image.createImage("/img/backdrop31.png");
					}
					break;
				case 70:
					//以下需要分关加载
					if(scene == 1)
					{
						if(img_BackDrop[1] == null)
							img_BackDrop[1] = Image.createImage("/img/backdrop1.png");
					}
					if(scene == 2)
					{
						if(img_BackDrop[2] == null)
							img_BackDrop[2] = Image.createImage("/img/backdrop2.png");
					}
					if(scene == 3)
					{
						if(img_BackDrop[3] == null)
							img_BackDrop[3] = Image.createImage("/img/backdrop3.png");
					}
					break;
				case 80:
					//以下需要分关加载
					if(scene == 1)
					{
						if(img_BOSS == null)
							img_BOSS = Image.createImage("/img/boss0.png");
					}
					if(scene == 2)
					{
						if(img_BOSS == null)
							img_BOSS = Image.createImage("/img/boss1.png");
					}
					if(scene == 3)
					{
						if(img_BOSS == null)
							img_BOSS = Image.createImage("/img/boss2.png");
					}
					break;
				case 95:
					if(img_BOSS0 == null)
						img_BOSS0 = Image.createImage("/img/boss3.png");
					break;
				}
				++i_load;
				break;
			}
		}
		catch(Exception e)
		{
		}
	}
	
	public void free()
	{
		freeIma();
		
		img_LOGO = null;
		img_BackDrop = null;
		img_UI = null;
		img_Item = null;
		img_Ammo = null;
		img_NPC = null;
		img_BOSS = null;
		img_Player = null;
		img_Letter = null;
	}
	
	public void freeIma()
	{
		switch(zong0)
		{
		case GAMELOGO:
			for(i = 0;i < 2;++i)
				img_LOGO[i] = null;
			break;
		case GAMESTAR:
			img_MENU = null;
			break;
		case GAMERUN:
			//以下需要回到主菜单才能释放
			img_num = null;
			for(i = 0;i < 7;++i)
			{
				if(i < 3)
				{
					if(i < 2)
						img_UI[i] = null;
					img_Letter[i] = null;
				}
				if(i > 0 && i < 5)
					img_Item[i] = null;
				img_NPC[i] = null;
				img_Ammo[i] = null;
			}
			break;
		case GAMELOAD:
			//以下需要过关才能分关释放
			if(scene == 2)
			{
				img_BOSS = null;
				img_BackDrop[1] = null;
				img_BackDrop11 = null;
			}
			if(scene == 3)
			{
				img_BOSS = null;
				img_BackDrop[2] = null;
				img_BackDrop21 = null;
				img_BackDrop22 = null;
			}
			break;
		case GAMEEXIT:
			img_BackDrop[0] = null;
			img_Item[0] = null;
			for(i = 0;i < 3;++i)
				img_Player[i] = null;
			break;
		}
		System.gc();
	}
	
	
//****paint****
	protected void paint(Graphics g)
	{
		paintTimeS = System.currentTimeMillis();
		g.setClip(0,0,G_WW,G_WH);
		
		switch(zong0)
		{
		case GAMELOGO:
			logopaint(g);
			break;
		case GAMEMENU:
			menupaint(g);
			break;
		case GAMESTAR:
			starpaint(g);
			break;
		case GAMECONT:
			loadpaint(g);
			break;
		case GAMEHELP:
			helppaint(g);
			break;
		case GAMEABOUT:
			aboutpaint(g);
			break;
		case GAMEEXIT:
			exitpaint(g);
			break;
		case GAMELOAD:
			loadpaint(g);
			break;
		case GAMEVOL:
			volpaint(g);
			break;
		case GAMERUN:
			if(gamepausemenu)
			{
//				if(is_sound)
//					soundmenu(g);
//				else 
				if(backmenu)
					menuback(g);
				else
					runmenu(g);
			}
			else if(gamepause)
			{
				pausegame(g);
			}
			else
				runpaint(g);
			break;
		}
		
		paintTimeE = System.currentTimeMillis();
	}
	
	public void logopaint(Graphics g)
	{
		if(i_num < 20)
		{
			g.setColor(0xffffff);
			g.fillRect(0,0,G_WW,G_WH);
			g.drawImage(img_LOGO[0],G_WW >> 1,G_WH >> 1,3);
		}
		else if(i_num < 40)
		{
			g.setColor(0xffffff);
			g.fillRect(0,0,G_WW,G_WH);
			g.drawImage(img_LOGO[1],G_WW >> 1,G_WH >> 1,3);
		}
		if(i_num > 40)
		{
			freeIma();
			zong0 = GAMEMENU;
			initIma();
		}
	}
	
	public void menupaint(Graphics g)
	{
		g.drawImage(img_MENU,0,0,20);
		g.setColor(0xffffff);
		g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_MEDIUM));
		g.drawString("确定",5,G_WH - 5,36);
		draw(g,img_Player[i_num%2],0,2,45,90 + menu,MAN_PIC_W,MAN_PIC_W,20);
	}
	
	public void starpaint(Graphics g)
	{
		g.drawImage(img_BackDrop[0],0,0,20);
		g.setColor(0xffffff);
		g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));
		g.drawString("关 卡 选 择",G_WW >> 1,G_WH / 3,65);
		g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_LARGE));
		g.drawString("第 一 关",G_WW >> 1,G_WH >> 1,65);
		g.drawString("第 二 关",G_WW >> 1,(G_WH >> 1) + 20,65);
		g.drawString("第 三 关",G_WW >> 1,(G_WH >> 1) + 40,65);
		g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_LARGE));
		if(i_guan == 0)
		{
			g.drawString("已锁",G_WW / 5,(G_WH >> 1) + 20,65);
			g.drawString("已锁",G_WW / 5,(G_WH >> 1) + 40,65);
		}
		else if(i_guan == 1)
			g.drawString("已锁",G_WW / 5,(G_WH >> 1) + 40,65);
		g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_MEDIUM));
		g.drawString("选择",5,G_WH - 5,36);
		g.drawString("返回",G_WW - 5,G_WH - 5,40);
		draw(g,img_Player[i_num%2],0,2,
				G_WW / 5 - MAN_HCENTER_PENG,(G_WH >> 1) - (MAN_PIC_W>>1) - 10 + menu,
				MAN_PIC_W,MAN_PIC_W,20);
	}
	
	public void contpaint(Graphics g)
	{
		g.drawImage(img_BackDrop[0],0,0,20);
	}
	

⌨️ 快捷键说明

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