📄 btdemocanvas.java
字号:
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
public class BTDemoCanvas extends Canvas implements BTListener,Runnable {
public byte gameState = 0;
protected final byte LOGIN = 0;
protected final byte MAIN = 1;
protected int width;
protected int height;
private Thread mainThd = null;
private long wait = 0;
private boolean bThread = false;
protected int counter = 0;
protected int imageCount = 1;
protected Image[] image=new Image[5] ;
public int[][] imgPos={{70,70},{70,70},{70,70},{70,70},{70,70},};
public String name[] ={"","","","","",""};
public NetLayer btnet;
public boolean startFlag;
public BTDemoCanvas(boolean arg0) {
width = getWidth();
height = getHeight();
resetGameMode(this.LOGIN);
mainThd = new Thread(this);
bThread = true;
mainThd.start();
}
protected void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
if (action == UP || action == KEY_NUM2) {
switch (gameState) {
case LOGIN:
name[0]="zhang";
break;
case MAIN:
imgPos[0][1]-=5;
break;
}
} else if (action == DOWN || action == KEY_NUM8) {
switch (gameState) {
case LOGIN:
name[0]="hai";
break;
case MAIN:
imgPos[0][1]+=5;
break;
}
} else if (action == LEFT || action == KEY_NUM4) {
switch (gameState) {
case LOGIN:
name[0]="kevin";
break;
case MAIN:
imgPos[0][0]-=5;
break;
}
} else if (action == RIGHT || action == KEY_NUM6) {
switch (gameState) {
case LOGIN:
name[0]="davy";
break;
case MAIN:
imgPos[0][0]+=5;
break;
}
} else if (action == FIRE || action == KEY_NUM5) {
switch (gameState) {
case LOGIN:
name[0]="center";
break;
case MAIN:
break;
}
}
if(gameState==MAIN)
btnet.sendString( imgPos[0][0]+"&"+imgPos[0][1]+"&");
}
private void resetGameMode(byte gState) {
counter = 0;
gameState = gState;
wait = 70;
final byte NULL = 0;
final byte GO = 1;
final byte MENU = 2;
final byte OK = 3;
final byte BACK = 1;
switch (gState) {
case LOGIN:
addCommand(BTDemo.inc.ok);
break;
case MAIN:
this.removeCommand(BTDemo.inc.ok);
break;
}
}
public void doOkApp() {
switch (gameState) {
case LOGIN:
if(name[0]=="")
break;
resetGameMode(this.MAIN);
btnet = new NetLayer();
btnet.init( name[0], this );
btnet.query();
image[0]=this.createImage("pic");
break;
case MAIN:
break;
}
}
private void gameTime() {
}
protected void paint(Graphics g) {
g.setColor(0x000000);
g.fillRect(0,0,width,height);
switch (gameState) {
case LOGIN:
g.setColor(0xffffff);
g.drawString("请输入你的名字:"+name[0],width/2 ,height/2,
Graphics.HCENTER | Graphics.TOP);
break;
case MAIN:
g.setColor(0xffffff);
if(startFlag==false)
g.drawString("等待连接…………",width/2 ,height/2,
Graphics.HCENTER | Graphics.TOP);
else
for(int i=0;i<imageCount;i++)
{
g.drawImage(image[i],imgPos[i][0] ,imgPos[i][1],Graphics.HCENTER | Graphics.TOP);
g.drawString(name[i],imgPos[i][0] ,imgPos[i][1]+18,
Graphics.HCENTER | Graphics.TOP);
}
break;
}
}
static Image createImage(String filename) {
Image image = null;
try {
image = Image.createImage("/" + filename + ".png");
} catch (Exception e) {
}
return image;
}
public void run() {
long st = 0;
long et = 0;
while (bThread) {
st = System.currentTimeMillis();
gameTime();
repaint();
et = System.currentTimeMillis();
counter++;
if ((et - st) < wait) {
try {
Thread.sleep(wait - (et - st));
} catch (Exception exp) {
}
}
}
}
/* (非 Javadoc)
* @see BTListener#handleAction(java.lang.String, java.lang.Object, java.lang.Object)
*/
public void handleAction( String event, Object param1, Object param2 )
{
if ( event.equals( BTListener.EVENT_JOIN ) )
{
EndPoint endpt = (EndPoint) param1;
name[imageCount] = endpt.remoteName;
startFlag=true;
image[imageCount++]=this.createImage("pic");
} else if ( event.equals( BTListener.EVENT_SENT ) )
{
} else if ( event.equals( BTListener.EVENT_RECEIVED ) )
{
EndPoint endpt = (EndPoint) param1;
ChatPacket msg = (ChatPacket) param2;
int sender;
for(int i=0;i<imageCount;i++)
if(endpt.remoteName==name[i])
{
imgPos[i]= decodeMsg(msg.msg);
}
} else if ( event.equals( BTListener.EVENT_LEAVE ) )
{
EndPoint endpt = (EndPoint) param1;
boolean find=false;
for(int i=0;i<imageCount;i++)
{
if(endpt.remoteName==name[i]&&i!=4)
{
find=true;
}
if(find==true)
{
name[i]=name[i+1];
imgPos[i][0]=imgPos[i+1][0];
imgPos[i][1]=imgPos[i+1][1];
}
}
image[imageCount]=null;
imageCount--;
}
}
/**
* @param msg
* @return
*/
private int[] decodeMsg(String msg) {
String[] result = null;
int index0 = 0;
int index1 = 0; int lines = 0;
Vector tempR = new Vector();
boolean wrap;
while(true)
{
wrap = false;
for( index0=index1;index1<msg.length();index1++)
{
if (msg.charAt(index1) == '&') {
index1++;
wrap = true;
break;
}
}
lines++;
if (wrap) {
tempR.addElement(msg.substring(index0, index1 - 1));
} else {
tempR.addElement(msg.substring(index0, index1));
}
if (index1 >= msg.length()) {
break;
}
}
result = new String[lines];
tempR.copyInto(result);
int[] pos=new int[2];
pos[0]=Integer.parseInt(result[0]);
pos[1]=Integer.parseInt(result[1]);
System.out.println(pos[0]+" "+pos[1]);
return pos;
}
public void addImage(EndPoint param1)
{
EndPoint endpt = (EndPoint) param1;
name[imageCount] = endpt.remoteName;
startFlag=true;
image[imageCount++]=this.createImage("pic");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -