⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawcanvas.java

📁 经典黑白棋游戏
💻 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 + -