www.pudn.com > jbombman.rar > BoardView.java


package example.jbombman; 
 
import javax.microedition.lcdui.*; 
 
public class BoardView extends Canvas { 
	private Board oBoard; 
	private Player oPlayer; 
	private Enemy oEnemy; 
	 
	private final int BackgroundColor = 0xffffff; 
	private final int iCellSize = 20; 
	private final int iLeft = 10; 
	private final int iTop = 10; 
	 
	public BoardView( Board board ) { 
		oBoard = board; 
	} 
	 
	public void setPlayer( Player player ) { 
		oPlayer = player; 
	} 
	 
	public void setEnemy( Enemy enemy ) { 
		oEnemy = enemy; 
	} 
	 
	public void paint( Graphics g ) { 
		synchronized( g ) { 
			if( oBoard.isGameOver ) 
				paintGameOver( g ); 
			else if( oBoard.isWin ) 
				paintWin( g ); 
			else 
				paintBoard( g ); 
		} 
	} 
	 
	private void paintGameOver( Graphics g ) { 
		g.drawImage( Img.imgGameOver, 60, 100, Graphics.LEFT|Graphics.TOP ); 
	} 
	 
	private void paintWin( Graphics g ) { 
		g.drawImage( Img.imgCongratulation, 60, 100, Graphics.LEFT|Graphics.TOP ); 
	} 
	 
	private void paintFrame( Graphics g ) { 
		g.drawRect( 0, 0, 239, 239 ); 
		g.drawRect( 1, 1, 237, 237 ); 
		g.drawRect( 2, 2, 235, 235 ); 
		g.drawRect( 3, 3, 233, 233 ); 
 
		g.drawRect( 7, 7, 225, 225 ); 
		g.drawRect( 8, 8, 223, 223 ); 
	} 
	 
	private void paintBoard( Graphics g ) { 
		if( g.getClipX() == 0 ) 
			paintFrame( g ); 
	 
		int x = ( g.getClipX() - iLeft ) / iCellSize; 
		int y = ( g.getClipY() - iTop ) / iCellSize; 
		int w = g.getClipWidth() / iCellSize; 
		int h = g.getClipHeight() / iCellSize; 
 
		//System.out.println( "paint: x=" + x + ", y=" + y  
		//						+ ", w=" + w + ", h=" + h ); 
		 
		if( h>oBoard.iRows ) 
			h = oBoard.iRows; 
		 
		for( int i=x; i= oBoard.iCols ) 
			x = oBoard.iCols - 1; 
		 
		if( x + w > oBoard.iCols ) 
			w = oBoard.iCols - x; 
		 
		if( y < 0 ) 
			y = 0; 
	 
		if( y >= oBoard.iRows ) 
			y = oBoard.iRows - 1; 
		 
		if( y + h > oBoard.iRows ) 
			h = oBoard.iRows - y; 
		 
		repaint( iLeft + x*iCellSize, iTop + y*iCellSize,  
					w*iCellSize, h*iCellSize ); 
	} 
}