`
java2000.net
  • 浏览: 629391 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

J2ME游戏代码示例(一)——俄罗斯方块

阅读更多
 
J2ME游戏代码示例(一)——俄罗斯方块
作者:陈跃峰
 
         下面是我写的一个简单的俄罗斯方块游戏代码,代码中主要包含3个类:
TerrisMIDlet——MIDlet类
GameCanvas——游戏界面类
GameEngine——游戏逻辑类
使用WTK2.5.1运行通过.
     具体代码如下:
//MIDlet类
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
 
public class TerrisMIDlet extends MIDlet {
         public TerrisMIDlet() {
                   Display.getDisplay(this).setCurrent(new GameCanvas());
         }
         protected void destroyApp(boolean arg0) {}
         protected void pauseApp() {}
         protected void startApp() {}
}
 
//界面类
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
 
/**
 * 俄罗斯方块游戏界面
 */
public class GameCanvas extends Canvas implements Runnable{
     GameEngine engine = new GameEngine();
     int width;
     int height;
     /**游戏结束变量*/
     boolean gameOver = false;
     /**游戏暂停变量*/
     boolean isPaused = false;
     String pauseStr = "暂停";
     String continueStr = "继续";
     public GameCanvas(){
              //全屏幕
              setFullScreenMode(true);       
              width = getWidth();
              height = getHeight();
              //启动线程
              Thread th = new Thread(this);
              th.start();
     }
    
     protected void paint(Graphics g) {
              //清屏
              clearScreen(g);
              //绘制边框
              paintBoard(g);
              //绘制背景
              engine.paintMap(g);
              //绘制当前下落方块
              engine.paintBrick(g);
              //绘制下一个方块
              engine.paintNextBrick(g);
              //绘制关卡和游戏得分
              engine.paintLevelAndScore(g);
              //绘制游戏结束
              if(gameOver){
                       g.drawString("Game Over", 30, 85,
                                          Graphics.TOP | Graphics.LEFT);
              }
              //绘制暂停按钮文字
              if(isPaused){
                       g.drawString(pauseStr,width,height,
                                          Graphics.RIGHT | Graphics.BOTTOM);
              }else{
                       g.drawString(continueStr,width,height,
                                          Graphics.RIGHT | Graphics.BOTTOM);
              }
     }
    
     public void keyPressed(int keyCode){
              if(keyCode == -7){ //右软键,暂停控制
                       isPaused = !isPaused;
              }
              if(!isPaused){
                       int action = getGameAction(keyCode);
                       switch(action){
                       case UP:
                       case FIRE:
                                 engine.changeShape();
                                 break;
                       case LEFT:
                                 engine.moveToLeft();
                                 break;
                       case RIGHT:
                                 engine.moveToRight();
                                 break;
                       case DOWN:
                                 engine.highSpeed(); //加速
                                 break;
                       }
              }
              repaint();         
     }
    
     public void keyReleased(int keyCode){
              int action = getGameAction(keyCode);
              switch(action){
              case DOWN:
                       engine.normalSpeed(); //恢复正常速度
                       break;
              }
     }
    
     /**
      * 绘制游戏区域边框
      * @param g 画笔
      */
     private void paintBoard(Graphics g){
              g.drawRect(0,0,
                                 engine.MAXCOL * engine.CELLWIDTH,
                                 engine.MAXROW * engine.CELLWIDTH);
     }
    
     /**
      * 清屏
      * @param g 画笔
      */
     private void clearScreen(Graphics g){
              g.setColor(0xffffff);
              g.fillRect(0,0,width,height);
              g.setColor(0);
     }
 
     public void run() {
              try{
                       while(true){
                                 //延时
                                 Thread.sleep(engine.speed / engine.times);
                                 //逻辑处理
                                 //如果不处于暂停状态
                                 if(!isPaused){
                                          //方块下落
                                          engine.brickDown();
                                          //游戏是否结束
                                          if(engine.isGameOver()){
                                                   //显示游戏结束
                                                   gameOver = true;
                                                   //重画
                                                   repaint();
                                                   //结束线程
                                                   break;
                                          }
                                 }
                                 //重绘
                                 repaint();
                       }
              }catch(Exception e){
                       e.printStackTrace();
              }                
     }
}
 
//游戏逻辑类
import java.util.*;
import javax.microedition.lcdui.*;
/**
 * 游戏数据和逻辑类
 * 未实现关卡变化的逻辑
 */
public class GameEngine {
     /**方块的信息, 0代表无内容,1代表有内容 */
     int[][][][] brick = {
                       {
                                 {
                                          { 0, 1, 0, 0 },
                                          { 0, 1, 0, 0 },
                                          { 0, 1, 1, 0 },
                                     { 0, 0, 0, 0 }
                                 },
                                 {
                                          { 0, 0, 0, 0 },
                                          { 0, 1, 1, 1 },
                                          { 0, 1, 0, 0 },
                                     { 0, 0, 0, 0 }
                                 },
                                 {
                                          { 0, 1, 1, 0 },
                                          { 0, 0, 1, 0 },
                                          { 0, 0, 1, 0 },
                                     { 0, 0, 0, 0 }
                                 },
                                 {
                                          { 0, 0, 0, 0 },
                                          { 0, 0, 1, 0 },
                                          { 1, 1, 1, 0 },
                                     { 0, 0, 0, 0 }
                                 }
                       },
                       {
                                 {
                                          { 0, 0, 1, 0 },
                                          { 0, 0, 1, 0 },
                                          { 0, 1, 1, 0 },
                                     { 0, 0, 0, 0 }
                                 },
                                 {
                                          { 0, 0, 0, 0 },
                                          { 0, 1, 0, 0 },
                                          { 0, 1, 1, 1 },
                                     { 0, 0, 0, 0 }
                                 },
                                 {
                                          { 0, 0, 0, 0 },
                                          { 0, 1, 1, 0 },
                                          { 0, 1, 0, 0 },
                                     { 0, 1, 0, 0 }
                                 },
                                 {
                                          { 0, 0, 0, 0 },
                                          { 1, 1, 1, 0 },
                                          { 0, 0, 1, 0 },
                                     { 0, 0, 0, 0 }
                                 }
                       },
                       {
                                 {
                                          {0,1,0,0},
                                          {0,1,0,0},
                                          {0,1,0,0},
                                          {0,1,0,0}
                                 },
                                 {
                                          {0,0,0,0},
                                          {1,1,1,1},
                                          {0,0,0,0},
                                          {0,0,0,0}
                                 }
                       },
                       {
                                 {
                                          {0,0,0,0},
                                          {0,1,1,0},
                                          {0,1,1,0},
                                          {0,0,0,0}
                                 }
                       },
                       {
                                 {
                                          {0,0,1,0},
                                          {0,1,1,0},
                                          {0,1,0,0},
                                          {0,0,0,0}
                                 },
                                 {
                                          {0,0,0,0},
                                          {0,1,1,0},
                                          {0,0,1,1},
                                          {0,0,0,0}
                                 }
                       },
                       {
                                 {
                                          {0,1,0,0},
                                          {0,1,1,0},
                                          {0,0,1,0},
                                          {0,0,0,0}
                                 },
                                 {
                                          {0,0,0,0},
                                          {0,1,1,0},
                                          {1,1,0,0},
                                          {0,0,0,0}
                                 }
                       },
                       {
                                 {
                                          {0,0,0,0},
                                          {0,0,1,0},
                                          {0,1,1,1},
                                          {0,0,0,0}
                                 },
                                 {
                                          {0,0,0,0},
                                          {0,1,0,0},
                                          {0,1,1,0},
                                          {0,1,0,0}
                                 },
                                 {
                                          {0,0,0,0},
                                          {0,1,1,1},
                                          {0,0,1,0},
                                          {0,0,0,0}
                                 },
                                 {
                                          {0,0,1,0},
                                          {0,1,1,0},
                                          {0,0,1,0},
                                          {0,0,0,0}
                                 }
                       }
     };
     /**行数*/
     final int MAXROW = 19;
     /**列数*/
     final int MAXCOL = 10;
     /**
      * 游戏界面信息,0代表无内容,1代表有内容
      */
     int[][] map = new int[MAXROW][MAXCOL];
     /**每个单元格的宽度和高度*/
     public static final int CELLWIDTH = 10;
     /**下一个方块的类型*/
     int nextBrickType = 0;
     //当前下落的方块
     /**当前格子的类型*/
     int brickType;
     /**当前变形信息*/
     int index;
     /**当前行*/
     int cRow;
     /**当前列*/
     int cCol;
     /**速度*/
     int speed = 500;
     /**加速度*/
     int times = 1;
     /**当前关卡*/
     int level = 0;
     /**积分,每消一行加10分*/
     int score = 0;
     Random r = new Random();
     public GameEngine(){
              //产生方块
  &nb
分享到:
评论

相关推荐

    Java源码包100个设计实例.zip

    java俄罗斯方块 java凭图游戏 Java利用DES私钥对称加密代码实例 Java加密解密工具集 JCT v1.0源码包.rar Java半透明图片实现的步骤及源代码.rar Java右键弹出菜单源码 Java吃豆子游戏源代码.rar Java图片加水印,...

    java源码包---java 源码 大量 实例

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    java源码包2

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    JAVA上百实例源码以及开源项目

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    JAVA上百实例源码以及开源项目源代码

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    java源码包3

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    java源码包4

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定...

Global site tag (gtag.js) - Google Analytics