📄 mc.java
字号:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MC extends Canvas implements Runnable
{
PL pl;
Image im;
int [][] pd;
int [] fs;
int x,y,z;
boolean left,down,right,up;
int cx,cy;
boolean ig;
int zz;
BiaoManager bm;
Image yin;
BG bg;
NPCManager nm;
ZBuf zb;
int vx;
public static final int CW = 176;
public static final int CH = 208;
public static final int KEY_UP = -1;
public static final int KEY_DOWN = -2;
public static final int KEY_LEFT = -3;
public static final int KEY_RIGHT = -4;
public static final int KEY_FIRE = -5;
public MC()
{
zb = new ZBuf ();
bg = new BG();
try {
im = Image.createImage( "/player.png");
yin = Image.createImage( "/ying.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
pd = new int[][]{{0,0,35,46 , 18 , 46},
{35,0,35,42 , 18 , 41},
{70,0,48,36 , 24 , 36},
{118,0,55,35 , 26 , 36},
{173,0,43,36 , 21 , 36},
{216,0,57,41 , 28 , 41},
{0, 46,44,49 , 22 , 49},
{44,42,30,53 , 15 , 53},
{74,36,31,29 , 15 , 29},
{105,35,30,50 , 15 , 50},
{135,36,50,50 , 25 , 50},
{185,42,32,39 , 16 , 39},
{217,42,41,47 , 20 , 47},
{258,42,40,44 , 20 , 44},
{0,95,38,38 , 19 , 39},
{38,95,42,28 , 21 , 28},
{90,86,51,21 , 25 , 21},
{141,86,39,32 , 19 , 32},
{180,86,28,45 , 14 , 45},
{208,89,38,39 , 19 , 39},
{246,89,36,58 , 18 , 58},
{0, 133,28,55 , 14 , 55},
{28,133,38,47 , 19 , 47},
{66,122,30,59 , 14 , 55},
{96,110,21,58 , 10 , 54},
{117,122,29,55 ,14 , 55},
{146,122,32,45 , 16 , 45},
{180,134,35,54 , 18 , 53},
{216,147,49,41 , 25 , 41},
{0,0,0,0,0,0}};
fs = new int[]{0,0,0,1,1,1};
x = 20;
z = 150;
pl = new PL(im,pd,fs,x,y,z);
ig = true;
bm = new BiaoManager(10);
vx = 7;
nm = new NPCManager(20);
this.setFullScreenMode( true);
Thread t = new Thread (this);
t.start() ;
}
protected void paint(Graphics g)
{
g.setColor( 0xffffff);
g.fillRect( 0,0,500,500);
g.setColor( 0x00ffff);
g.fillRect( 0,110,176,98);
bg.render1( g,cx,cy); //绘制下半部分地面
bg.render5( g,cx,cy); //绘制上半部分背景
bg.render7( g,cx,cy); //绘制月亮
zb.render( g,this);
bm.render( g,cx,cy);
bg.render6( g,cx,cy);
g.fillRect(25 , 18 , 75 , 7) ;
g.setColor(0xff0000) ;
g.drawRect(25 , 18 , 75 , 7) ;
g.fillRect(25 , 18 , pl.hp*5 , 7) ;
g.setColor(0x123456) ;
g.drawString("HP:" , 5 , 15 , 0) ;
g.setColor( 0x000000);
g.fillRect( 176,0,500,500);
g.fillRect( 0,208,500,500);
}
public void run()
{
while (true)
{
pl.upData( up,down,left,right,this);
nm.upData( this);
zb.upData( this);
bm.upData(this) ;
repaint();
try {
Thread.sleep( 50);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
public void keyPressed(int k)
{
if (k == KEY_UP)
{
up = down = left = right =false;
up = true;
pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
}
if (k == KEY_DOWN)
{
up = down = left = right =false;
down = true;
pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
}
if (k == KEY_LEFT)
{
vx = -7;
up = down = left = right =false;
left = true;
pl.f = true;
pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
}
if (k == KEY_RIGHT)
{
vx = 7;
up = down = left =false ;
right = true;
pl.f = false;
pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
}
if (k == 49 && pl.m != 1 )
{
up = down = left = right =false;
pl.m = 1;
pl.vy = -15;
pl.setfs(new int[]{8,8,8,7,7,6,6,6,6,6,6,8,8});
}
if (zz < 3&&k == 50&&pl.m != 2 ) //玩家普通攻击
{
pl.m = 2;
pl.n =5;
pl.setfs(new int[]{12,12,12,13,13,13});
zz++;
}
if (zz >= 3&& k == 50&&pl.m != 2) //玩家连续技能
{
pl.m = 2;
zz = -1;
pl.n =5;
pl.setfs(new int[]{20,20,20,21,21,21,22,22,22});
}
if (k == 51) //发镖
{
bm.create( pl,pl.x+3,pl.z-18+pl.y,vx);
pl.setfs(new int[]{28});
pl.m = 3;
pl.n = 8;
}
}
public void keyReleased(int k)
{
if (k == KEY_UP)
{
up = false;
if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
{
pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
}
}
if (k == KEY_DOWN)
{
down = false;
if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
{
pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
}
}
if (k == KEY_LEFT)
{
left = false;
if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
{
pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
}
}
if (k == KEY_RIGHT)
{
right = false;
if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
{
pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -