`
java-mans
  • 浏览: 11445828 次
文章分类
社区版块
存档分类
最新评论

J2ME 拼图游戏 快速开发 全过程 (三)——新游戏界面

 
阅读更多

代码:

package cn.edu.xtu.tilepuzzle.ui;


import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;


import cn.edu.xtu.tilepuzzle.GameDB;
import cn.edu.xtu.tilepuzzle.contorller.MainUIController;
import cn.edu.xtu.tilepuzzle.model.BoardModel;


public class BoardUI extends Canvas{
MainUIController mainUIController;
BoardModel boardModel;

// cell geometry in pixels
public int cellWidth;// 方格的宽
public int cellHeight;// 方格的高
// grid origin in pixels
public int gridWidth;// 所有方格的宽
public int gridHeight;// 所有方格的高
private Display dpy;

public BoardUI(MainUIController mainUIController,BoardModel boardModel,Display dpy,Displayable db) {
this.boardModel=boardModel;
this.mainUIController=mainUIController;
this.dpy=dpy;
}

public void init(){
this.setFullScreenMode(true);
this.gridWidth = getWidth();
this.gridHeight = getHeight();
//System.out.println(gridWidth+","+gridHeight);
}
public void setBoardModel(BoardModel boardModel){
this.boardModel=boardModel;
}

protected void paint(Graphics g) {
//设置绘制颜色
g.setColor(0xffffff);
//绘制一个手机全屏幕填充颜色的矩形
g.fillRect(0,0,getWidth(),getHeight());
//设置下列显示画面的颜色
g.setColor(0);

// g.translate(gridWidth, gridHeight);
g.drawRect(0, 0, boardModel.rows * cellWidth, boardModel.columns * cellHeight);

// grid[2][2].paint(g);

for (int j = 0; j <boardModel.columns ; j++) {
for (int k = 0; k < boardModel.rows; k++) {
boardModel.grid[j][k].paint(g);
}
}

if (boardModel.gameState == GameDB.WON) {
//boardModel.all[(boardModel.rows * boardModel.columns) - 1].paint(g);
//System.out.println("paint 显示。。。。。。。");
// g.translate(-g.getTranslateX(), -g.getTranslateY());
}

}

public void keyPressed(int code) {
//System.out.println("游戏界面按键:"+code);
//回到原来的界面时,要暂停计时
if(code==-7 || code==7){
//暂停计时
boardModel.sumTime+=System.currentTimeMillis()-boardModel.starTime;
boardModel.starTime=0;

dpy.setCurrent(mainUIController.mainMenuUI);
mainUIController.mainMenuUI.repaint();
//System.out.println("回到原来的界面");
return;
}

if (boardModel.gameState != GameDB.PLAYING) {
return;
}
int game = getGameAction(code);

int swapx = boardModel.blankp.x; //所在行
int swapy = boardModel.blankp.y; //所在列

int direction = (boardModel.mainUIController.gameSetUI.reversed ? (-1) : 1);

switch (game) {
case Canvas.UP:
swapx += direction;

break;

case Canvas.DOWN:
swapx -= direction;

break;

case Canvas.LEFT:
swapy += direction;

break;

case Canvas.RIGHT:
swapy -= direction;

break;

default:
return;
}
//System.out.println("======="+(boardModel.blankp.x+1)+","+(boardModel.blankp.y+1)+","+(swapx+1)+","+(swapy+1));
if ((swapx < 0) || (swapx >= boardModel.columns) || (swapy < 0) || (swapy >= boardModel.rows)) {
return;
}

boardModel.moveBlank(swapx, swapy);
repaint();

if (boardModel.isSolved()) {
boardModel.sumTime+=System.currentTimeMillis()-boardModel.starTime;
boardModel.starTime=0;
boardModel.setGameState(GameDB.WON);
}
}

}

运行时显示:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics