servercanvas.java
来自「一款模仿劲舞团的手机游戏」· Java 代码 · 共 184 行
JAVA
184 行
import java.util.Hashtable;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
/**
* @author trojan
*
* �����Ƿ�����UI
*
*/
public class ServerCanvas extends Canvas {
private NetGameInformationCanvas iCanvas;// ��Canvas����
private Timer receiveTimer;// ���ն�ʱ��
private Server server;// ���������
private String sendText;// �������
private String receiveText;// �������
private int showIndex = 0;// l�ӽ��
private int width;// ��Ļ�Ŀ�
private int height;// ��Ļ�ĸ�
private MyMIDLET midlet;// �������
private Hashtable gameInfo;// ��Ϸ������
private Hashtable firstCharacterInfo;// ����һ������
private Hashtable secondCharacterInfo;// �����������
private boolean isWaiting = true;// ��ʶ�������Ƿ����ڵȴ�
private final int STRING_ANCHOR = Graphics.HCENTER | Graphics.BASELINE;// �����
private int count = 0;// l�Ӽ���
// ���췽��
public ServerCanvas(NetGameInformationCanvas canvas, Hashtable gameInfo,
Hashtable firstCharacterInfo, MyMIDLET midlet) {
// TODO �Զ���ɹ��캯����
setFullScreenMode(true);
width = getWidth();
height = getHeight();
this.midlet = midlet;
this.iCanvas = canvas;
this.gameInfo = gameInfo;
this.firstCharacterInfo = firstCharacterInfo;
secondCharacterInfo = new Hashtable();
// �����������,�ȴ�l��
server = new Server();
// ����������˶�ʱ��
receiveTimer = new Timer();
receiveTimer.schedule(new TimerRecevieServerTask(), 2000, 500);
}
// ���ͷ���
public void send() {
server.setSendText(sendText);
try {
server.send();
} catch (Exception e) {
// TODO: handle exception
}
}
// ��ͼ����
protected void paint(Graphics g) {
// �������
try {
receiveText = server.receive();
} catch (Exception e) {
// TODO: handle exception
}
// ����յ���ݲ�Ϊ��
if (receiveText != null) {
// �����Ϊ��ready��,����l���ѽ�b,������Ϸ������һ������
if (receiveText.equals("ready")) {
isWaiting = false;
count = 0;
showIndex = 1;
sendText = firstCharacterInfo.get("cName").toString()
+ firstCharacterInfo.get("cAppPath").toString()
+ gameInfo.get("musicPath").toString().substring(6, 7)
+ gameInfo.get("gameScenePath").toString().substring(6,
7);
send();
}
// ���յ�����ݳ���Ϊ��,��˵��˫����ݴ������,���ͣ�ok����ʾ���Կ�ʼ��Ϸ
if (receiveText.length() == 9) {
showIndex = 2;
sendText = "ok";
send();
secondCharacterInfo.put("cName", receiveText.substring(0, 8));
secondCharacterInfo
.put("cAppPath", receiveText.substring(8, 9));
}
// ���յ�"ok",��ʾ˫�����Ѿ���,��ʼ��Ϸ
if (receiveText.equals("ok")) {
showIndex = 3;
}
receiveText = null;
}
if ((count == 30) && (isWaiting == false)) {
showIndex = 4;
}
Font font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_LARGE);
g.setFont(font);
g.setColor(0xff000000);
g.fillRect(0, 0, width, height);
g.setColor(0xffffffff);
if (isWaiting) {
g.drawString("����", width / 2 + 55, height / 2 + 90, Graphics.LEFT
| Graphics.TOP);
}
switch (showIndex) {
case 0:
g.drawString("���ڵȴ�l��....", width / 2, height / 2, STRING_ANCHOR);
break;
case 1:
g.drawString("�ɹ���bl��....", width / 2, height / 2, STRING_ANCHOR);
break;
case 2:
g.drawString("���ڳ�ʼ����Ϸ...", width / 2, height / 2, STRING_ANCHOR);
break;
case 3:
g.drawString("��Ϸ��ʼ", width / 2, height / 2, STRING_ANCHOR);
receiveTimer.cancel();
midlet.startNetCompetition(gameInfo, firstCharacterInfo,
secondCharacterInfo, server, null);
break;
case 4:
g.drawString("l�ӳ�ʱ", width / 2, height / 2, STRING_ANCHOR);
isWaiting = true;
}
count++;
}
// ���̰����¼�
protected void keyPressed(int key) {
// ��l�����ڽ�b,�������˳�
if (isWaiting == false) {
return;
}
// ���������,���˳�
if (key == -7) {
receiveTimer.cancel();
server.close();
Display.getDisplay(midlet).setCurrent(iCanvas);
}
super.keyPressed(key);
}
// ��ʱ��,���ڶ�ʱ�������
class TimerRecevieServerTask extends TimerTask {
public void run() {
// TODO �Զ���ɷ������
repaint();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?