WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章J2ME技术进阶教程个人对45度地图结构的思考(含代码演示)

个人对45度地图结构的思考(含代码演示)
作者:不详  来源:J2ME.com.cn  发布时间:2005-11-24 17:13:56

所以不用换算屏幕坐标,
你只要知道,你准备在屏幕的那个位置显示人物,而这个位置是固定的,然后更具人物在地图中的坐标,产生一个矩形框(大小也是固定的所以产生很容易)
,这个矩形框就是你要显示的地图内容,人物就在固定位置绘制就好了。



import java.lang.*;
import javax.microedition.lcdui.*;
import java.util.Random;
import javax.microedition.rms.*;
import java.io.*;

//import com.nokia.mid.ui.*;
//class MainPit extends FullCanvas implements Runnable
class MainPit extends Canvas implements Runnable
{

MainMid myMid;
private final byte KEY_UP = -1;
private final byte KEY_DOWN = -2;
private final byte KEY_LEFT = -3;
private final byte KEY_RIGHT = -4;
private final byte KEY_FIRE = -5;
private final byte KEY_GAM_LEFT = -6;
private final byte KEY_GAM_RIGHT = -7;
private final byte KEY_NUM0 = 48;
private final byte KEY_NUM1 = 49;
private final byte KEY_NUM2 = 50;
private final byte KEY_NUM3 = 51;
private final byte KEY_NUM4 = 52;
private final byte KEY_NUM5 = 53;
private final byte KEY_NUM6 = 54;
private final byte KEY_NUM7 = 55;
private final byte KEY_NUM8 = 56;
private final byte KEY_NUM9 = 57;
private final byte KEY_POUND = 42;
private final byte KEY_STAR = 35;

private byte KEY_CURRENT = 0;
private byte KEY_LAST = 0;

private boolean IS_UP = true;
private boolean fire = true;

//屏幕宽高
private int nWidth = getWidth();
private int nHeight = getHeight();

//单元格大小
private int cellSizeWidth = 64;
private int cellSizeHeight = 32;

private int targetSX;
private int targetSY;

private int targetMX = 0;
private int targetMY = 0;

private int personMX = 0;
private int personMY = 0;

private int mapWidth = 10;
private int mapHeight = 10;

private int currentDir = 0;

private int tally = 0;

private int mapDepth[][] =
{
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,2,3,4,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,1,2,3,4,5,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
};

Graphics gb;
Image bufImg;
Image mapImg;
Image menImg[][] = new Image[4][2];

public MainPit(MainMid mid)
{
myMid = mid;
try{
bufImg = Image.createImage(nWidth,nHeight);
mapImg = Image.createImage("/map.png");
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 2; j++)
{
menImg[j] = Image.createImage("/m"+i+""+j+".png");
}
}
gb = bufImg.getGraphics();
}catch(Exception e){}
}

public void paint(Graphics g)
{
gb = g;
}

public void run()
{
while(true)
{
dealKey();
drawMap();
drawPerson();
repaint();
serviceRepaints();
try{
System.gc();
Thread.yield();
Thread.sleep(100);
}catch(Exception e){}
}
}

public void keyReleased(int keyCode)
{
IS_UP = true;
KEY_CURRENT = 0;
}

public void keyPressed(int keyCode)
{
switch(keyCode)
{
case KEY_UP:
case KEY_DOWN:
case KEY_LEFT:
case KEY_RIGHT:
KEY_CURRENT = (byte)keyCode;
KEY_LAST = KEY_CURRENT;
IS_UP = false;
break;
case KEY_GAM_RIGHT:
myMid.exit();
break;
}
}

private void dealKey()
{
if(KEY_CURRENT != KEY_LAST)
{
KEY_CURRENT = KEY_LAST;
}

switch(KEY_CURRENT)
{
case KEY_UP:
if(targetMY > 0)
{
targetMY--;
currentDir = 0;
}
tally++;
break;
case KEY_DOWN:
if(targetMY < mapHeight - 1)
{
targetMY++;
currentDir = 1;
}
tally++;
break;
case KEY_LEFT:
if(targetMX > 0)
{
targetMX--;
currentDir = 2;
}
tally++;
break;
case KEY_RIGHT:
if(targetMX < mapWidth - 1)
{
targetMX++;

[1] [2]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码