📄 canvas.java
字号:
import javax.microedition.lcdui.Graphics;
public class Canvas extends javax.microedition.lcdui.Canvas implements Runnable{
static final short WIDTH = 176;
static final short HEIGHT = 208;
static final byte G_MENU = 0;
static final byte G_SERVER = 1;
static final byte G_CLIENT = 2;
static final byte G_OK = 3;
private byte G_STATE;
private int count;
private int loadcount;
private Server server;
private Client client;
private boolean isServer;
private String data="0";
public Canvas(){
this.setFullScreenMode(true);
G_STATE=0;
count=0;
loadcount=0;
new Thread(this).start();
}
protected void paint(Graphics g) {
clearscreen(g,0xFFFFFF);
// TODO 自动生成方法存根
switch(G_STATE){
case G_MENU:
g.setColor(0x000000);
g.drawRect(0,HEIGHT / 8 +20+count*20,WIDTH-1,20-1);
if(count==0){
g.setColor(0x000000);
}else{
g.setColor(0x666666);
}
g.drawString("建立游戏", WIDTH / 2, HEIGHT / 8+20+2, Graphics.HCENTER| Graphics.TOP);
if(count==1){
g.setColor(0x000000);
}else{
g.setColor(0x666666);
}
g.drawString("加入游戏", WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);
pcommand(g, "返回", "确定");
break;
case G_SERVER:
g.setColor(0x666666);
g.drawString("我的地址:", WIDTH / 2, HEIGHT / 8+20, Graphics.HCENTER| Graphics.TOP);
g.drawString(server.getAdd(), WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);
pcommand(g, "退出", "");
break;
case G_CLIENT:
if(count<0){
pcommand(g, "", "搜索");
}else{
if(client.getAddsize()<1){
char[] cha={'查','找','服','务','中','.','.','.'};
int w=g.getFont().charWidth(cha[0]);
g.setColor(0x666666);
for(int i=0;i<cha.length;i++){
if(loadcount%9==i){
g.drawChar(cha[i],WIDTH / 2-4*w+i*w,HEIGHT / 8+20-2+20,Graphics.LEFT| Graphics.TOP);
}else{
g.drawChar(cha[i],WIDTH / 2-4*w+i*w,HEIGHT / 8+20+2+20,Graphics.LEFT| Graphics.TOP);
}
}
pcommand(g, "返回", "搜索");
}else{
g.setColor(0x666666);
g.drawString("搜索到的地址:", WIDTH / 2, HEIGHT / 8, Graphics.HCENTER| Graphics.TOP);
g.setColor(0x000000);
g.drawRect(0,HEIGHT / 8 +20+count*20,WIDTH-1,20-1);
for(int i=0;i<client.getAddsize();i++){
if(count==i){
g.setColor(0x000000);
}else{
g.setColor(0x666666);
}
g.drawString(client.getAdd(i), WIDTH / 2, HEIGHT / 8+20+2+20*i, Graphics.HCENTER| Graphics.TOP);
}
pcommand(g, "连接", "搜索");
}
}
break;
case G_OK:
g.setColor(0x000000);
g.drawString(data, WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);
break;
}
}
private void clearscreen(Graphics g, int color) {
g.setClip(0, 0, WIDTH, HEIGHT);
g.setColor(color);
g.fillRect(0, 0, WIDTH, HEIGHT);
}
private void pcommand(Graphics g, String left, String right) {
g.setColor(0x000000);
if (!left.equals("")) {
g.drawString(left, 0, HEIGHT, Graphics.LEFT | Graphics.BOTTOM);
}
if (!right.equals("")) {
g.drawString(right, WIDTH, HEIGHT, Graphics.RIGHT| Graphics.BOTTOM);
}
}
public void run() {
// TODO 自动生成方法存根
while(true){
switch(G_STATE){
case G_MENU:
case G_SERVER:
case G_CLIENT:
case G_OK:
loadcount++;
break;
}
try{
Thread.sleep(100);
}catch(Exception e){}
repaint();
}
}
static final int UP = -1;
static final int DOWN = -2;
static final int LEFT = -3;
static final int RIGHT = -4;
static final int FIRE = -5;
static final int SOFTKEY1 = -6;
static final int SOFTKEY2 = -7;
public void keyPressed(int keyCode) {
switch(G_STATE){
case G_MENU:
switch(keyCode){
case UP:
count=0;
break;
case DOWN:
count=1;
break;
case SOFTKEY1:
Midlet.exit();
break;
case SOFTKEY2:
if(count==0){
isServer=true;
server=new Server(this);
count=0;
G_STATE=G_SERVER;
}else{
isServer=false;
client=new Client(this);
count=-1;
G_STATE=G_CLIENT;
}
break;
}
break;
case G_SERVER:
switch(keyCode){
case UP:
break;
case DOWN:
break;
case SOFTKEY1:
break;
case SOFTKEY2:
break;
}
break;
case G_CLIENT:
switch(keyCode){
case UP:
break;
case DOWN:
break;
case SOFTKEY1:
client.makeConn(count);
G_STATE=G_OK;
break;
case SOFTKEY2:
count=0;
client.dosearch();
break;
}
break;
case G_OK:
switch(keyCode){
case UP:
if(isServer){
server.send("1");
}else{
client.send("1");
}
break;
case DOWN:
if(isServer){
server.send("2");
}else{
client.send("2");
}
break;
case SOFTKEY1:
if(isServer){
server.send("3");
}else{
client.send("3");
}
break;
case SOFTKEY2:
if(isServer){
server.send("4");
}else{
client.send("4");
}
break;
}
break;
}
}
public void change() {
// TODO 自动生成方法存根
G_STATE=G_OK;
}
public void read(byte[] temp){
data=new String(temp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -