代码:
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);
}
}
}
运行时显示:
分享到:
相关推荐
J2ME 拼图游戏源码 J2ME 拼图游戏源码 J2ME 拼图游戏源码
本游戏实现了拼图游戏的基本功能,另外有计时,计步,暂停,重新开始,RMS持久存储,支持图像的动态切分。。。。。
j2me Picpuzzle 拼图游戏 可选择自己喜欢的背景图片 操作简单
j2me拼图游戏+游戏动画.。
实现了J2me拼图小游戏,可以选择图片,难度,分别有3x3,4x4,5x5,游戏中进行了计时,计步数。根据时间,步数进行评分,给出最后得分并根据不同等级显示不同的图片
J2ME游戏开发 J2ME游戏开发 J2ME游戏开发
j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解
J2ME开发 J2ME开发 J2ME开发 J2ME开发
java毕业设计——java基于J2ME的手机游戏开发设计与实现(论文+源代码).zip java毕业设计——java基于J2ME的手机游戏开发设计与实现(论文+源代码).zip java毕业设计——java基于J2ME的手机游戏开发设计与实现(论文+源...
《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》...
j2me拼图游戏,利用面向对象实现。是中国移动mm培训讲师讲的一个项目
j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发
Java写的j2me拼图游戏源码,代码中的注释非常多,学习来说比较有用,两种方法编辑本拼图游戏源代码: 用eclipse打开:在eclipse左侧包资源管理器中右键选择导入,然后选择现有项目到工作空间中,点下一步,在选择...
j2me手机游戏开发j2me手机游戏开发技术详解
很简单的j2me拼图游戏用canvas做的
一个简单的j2me拼图游戏,如果有兴趣可以下载试一下。。。
基于j2me的手机游戏开发
关于J2ME手机游戏开发的一个毕业论文,有需要的可以看看
J2ME手机游戏开发详解--快速入门难点剖析商业案例光盘源码。本书是一本介绍J2ME无线开发的实训教程,面向具有基本J2ME无线开发基础的开发人员。本书通过7个典型的例子,从不同的方面分别介绍了J2ME游戏开发的实用...
这个程序是基于J2ME的简单拼图,有三个管卡可以选择。包内不仅有项目还有实验报告,比较清楚的介绍了我的这个实验项目