📄 drawcanvas.java
字号:
import javax.microedition.lcdui.*;
public class DrawCanvas extends Canvas
{
private final int UNITY;
private final int UNITX;
private Game m_game;
//所指向的行与列
private short m_x;
private short m_y;
private boolean m_turn;
private Image m_imgGround;
private Image m_imgBlack;
private Image m_imgWhite;
DrawCanvas(Game game)
{
m_x = m_y = 1;
m_turn = AllDef.BLACK;
m_game = game;
m_game.turn = AllDef.BLACK;
this.setFullScreenMode(true);
int unitY = getHeight() > getWidth() ? 12:10;
int unitX = getHeight() > getWidth() ? 10:12;
if(getHeight() == getWidth())
{
unitX = unitY = 10;
}
UNITY = getHeight() / unitY;
UNITX = getWidth() / unitX;
try
{
m_imgGround = Image.createImage("/ground.png");
}catch(java.io.IOException e){}
try
{
m_imgBlack = Image.createImage("/black.png");
m_imgBlack = transImage.scale(m_imgBlack, UNITX*3/4, UNITY*3/4);
}catch(java.io.IOException e){}
try
{
m_imgWhite = Image.createImage("/white.png");
m_imgWhite = transImage.scale(m_imgWhite, UNITX*3/4, UNITY*3/4);
}catch(java.io.IOException e){}
}
protected void paint(Graphics g)
{
g.drawImage(m_imgGround, getWidth()/2, getHeight()/2,
Graphics.VCENTER | Graphics.HCENTER);
drawRect(g);
drawBoard(g);
}
protected void keyPressed(int deyCode)
{
int gameAction = getGameAction(deyCode);
switch (gameAction)
{
case UP:
if(m_x == 1)
{
break;
}
m_x--;
repaint();
break;
case DOWN:
if(m_x == 8)
{
break;
}
m_x++;
repaint();
break;
case LEFT:
if(m_y == 1)
{
break;
}
m_y--;
repaint();
break;
case RIGHT:
if(m_y == 8)
{
break;
}
m_y++;
repaint();
break;
case FIRE:
fire();
repaint();
break;
}
}
///////////////////
//具体
private void drawRect(Graphics g)
{
for(int x=1; x<=8; x++)
{
for(int y=1; y<=8; y++)
{
g.setColor(0x0000ff);
g.drawRect(x*UNITX, y*UNITY, UNITX, UNITY);
}
}
}
private void drawBoard(Graphics g)
{
for(int x=1; x<=8; x++)
{
for(int y=1; y<=8; y++)
{
if(null == m_game.black.getChess(y, x))
{
continue;
}
else if(AllDef.BLACK == m_game.black.getChess(y, x).toBool())
{
g.drawImage(m_imgBlack, x*UNITX+UNITX/2, y*UNITY+UNITY/2,
Graphics.VCENTER | Graphics.HCENTER);
//g.drawRegion(m_imgBlack, 0, 0, UNITX, UNITX, Sprite.TRANS_MIRROR,
// x*UNITX+UNITX/2, y*UNITY+UNITY/2, Graphics.VCENTER | Graphics.HCENTER);
}
else if (AllDef.WHITE == m_game.white.getChess(y, x).toBool())
{
g.drawImage(m_imgWhite, x*UNITX+UNITX/2, y*UNITY+UNITY/2,
Graphics.VCENTER | Graphics.HCENTER);
//g.drawRegion(m_imgWhite, 0, 0, UNITX, UNITX, Sprite.TRANS_MIRROR,
// x*UNITX+UNITX/2, y*UNITY+UNITY/2, Graphics.VCENTER | Graphics.HCENTER);
}
}
}
g.setColor(0x00ff00);
g.drawRect(m_y*UNITX, m_x*UNITY, UNITX, UNITY);
g.setColor(0x0000ff);
String strNum = "Black: " + m_game.black.getNum() +" Blue: " + m_game.white.getNum();
g.drawString(strNum, getWidth()/2, 9*UNITY, Graphics.HCENTER | Graphics.TOP);
other(g);
}
private void fire()
{
if( AllDef.BLACK == m_turn )
{
if(m_game.black.setChess(m_x, m_y))
{
m_turn = !m_turn;
}
}
repaint();
if( AllDef.WHITE == m_turn )
{
int x[] = m_game.white.aiXY();
if(m_game.white.setChess(x[0], x[1]))
{
m_turn = !m_turn;
}
}
repaint();
}
private void other(Graphics g)
{
//NOSET
if(AllDef.NOSET == m_game.black.result())
{
m_turn = AllDef.WHITE;
}
if(AllDef.NOSET == m_game.white.result())
{
m_turn = AllDef.BLACK;
}
String strMsg = m_turn ? "White set!":"Black set!";
//WIN
if(AllDef.WIN == m_game.black.result())
{
strMsg = "Black win!";
m_game.black.init();
}
else if(AllDef.WIN == m_game.white.result())
{
strMsg = "White win!";
m_game.white.init();
}
if(m_game.white.getNum()+m_game.black.getNum() == 64)
{
strMsg = (m_game.white.getNum() > m_game.black.getNum()) ? "White win":"Wlack win";
if(m_game.white.getNum() == m_game.black.getNum())
{
strMsg = "Ping Ju!";
}
m_game.black.init();
m_game.white.init();
}
g.drawString(strMsg, getWidth()/2, 10*UNITY, Graphics.HCENTER | Graphics.TOP );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -