📄 qt_canvas.java
字号:
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 + -