J2ME 拼图游戏 快速开发 全过程 (三)——新游戏界面
来源:互联网 发布:哪些淘宝店衣服好看 编辑:程序博客网 时间:2024/05/17 01:53
代码:
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 拼图游戏 快速开发 全过程 (五)——游戏帮助界面
- J2ME 拼图游戏 快速开发 全过程 (一)——开发环境及游戏菜单
- J2ME 拼图游戏 快速开发 全过程 (一)——最佳成绩显示界面
- J2ME 拼图游戏 快速开发 全过程 (七)——设置图片后的图片预览界面
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(6 )——欢迎界面、游戏结束后的等待界面与增加用户名字界面
- J2ME 拼图游戏 快速开发 全过程 (二)——游戏开始界面设计
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(2 )——游戏数据库与游戏模型开发
- J2ME 拼图游戏 快速开发 全过程 (六)——图片设置界面设计
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(1 )——程序入口与控制器开发
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(3 )——拼图的方格类、个人信息类、选择背景拼图的列表类
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(4 )——图片操作类、图片预览后处理类
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(5 )——记录集操作类、序列的奇偶性检查类
- 游戏王千金囊开发实录十七 ——拼图游戏
- 用NetBeans开发J2ME游戏实例讲解(三)
- j2me 拼图游戏
- iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(三·完结)
- 求助啊~~
- POJ 1637 混合图的欧拉回路
- Android 之 Spinner 键值对的绑定
- PHP分页功能
- ALSA编程指南
- J2ME 拼图游戏 快速开发 全过程 (三)——新游戏界面
- StringBuffer及String笔试题集锦
- linux的文件目录
- J2ME 拼图游戏 快速开发 全过程 (一)——最佳成绩显示界面
- Windows Sockets 错误码及出错原因
- J2ME 拼图游戏 快速开发 全过程 (四)——游戏选项设置界面
- poj2418 - Hardwood Species
- valueforkey和objectforkey
- RPM的安装与使用