Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 302|回复: 0

[J2ME学习]探究MIDP2.0的游戏API(一)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 00:55:10 | 显示全部楼层 |阅读模式
    J2ME是一个很流行的用于移动设备游戏开发的平台。J2ME中的MIDP 2.0引入了一个新的API包,它提供了一些定义好的游戏结构,这在以前的1.0版中要通过很多累赘代码来实现。在这部分tutorial中,我们会学习这个API包,然后用它开发一个小游戏(为了学习需要,我们会用到包中所有的类)。这个包是javax.microedition.lcdui.game. 它的建立基于我们前两次学的J2ME概念。
    J2ME游戏API:摘要
          javax.microedition.lcdui.game包只有5个类:GameCanvas, Layer, Sprite, TiledLayer和LayerManager. 这5个类提供了开发各种游戏应用的平台。
                                                                                        
       LayerSpriteTiledLayer的父类。这个类封装了游戏中可视化元素的行为。可视化元素可以是小精灵(sprite),代表一个可以在屏幕上来回移动的独立图形(或组成动画的一组图形),
    或是一个背景层:通过很少的图片,就可以生成庞大游戏中的背景。我们可以用Layer来布置图形和进行可视化操作。Layer的子类通过重写paint(Graphics g)方法将元素绘制到屏幕上。  
      
      
    1. LayerManager类可以控制各层的绘制及绘制顺序,因此我们可以更方便地管理游戏中的可视化元素(包括小精灵和背景层)。
    复制代码
    GameCanvas类扩展了上两节我们讲过的Canvas类(画布),提供一个在屏幕后端运行(off-screen)的缓冲区,所有绘制操作都先在这个缓冲区上进行,然后再显示到屏幕。它还提供了得到用户按键信息的快捷方法。 最好的学习方法应该是写一个完整的小游戏,通过这个小游戏我们可以了解游戏制作的方方面面。我们在介绍完这个小游戏的构造后(针对目前还没有游戏开发经验的),会在开发游戏的过程中具体介绍包中的每个类。 构建游戏的简短入门  游戏和动画是建立在重复执行某段代码的机制上的。这段代码跟踪实例变量的值,然后更新相应状态。基于当前游戏状态,代码将游戏元素绘制到屏幕上。实例变量值是随着用户交互和游戏内部行为而改变的。 代码的重复执行是通过将这段代码放入循环中实现的。在进入循环前,先检查一下实例变量,看是否要继续游戏,否则退出循环。为了控制实例变量的更新频率(其实是屏幕刷新的频率),循环体中的代码应该每次休眠一段时间(毫秒计)。 游戏的结构如下列代码所示:
       
       
        //
         主类
       

        public
         
        class
         MainClass

       
        {
      private GameCanvas canvas = new MyGameCanvas();


      public MainClass()
      {
        // 开始一个线程
        canvas.start();
      }
      
      // 其他代码
    }
       



        //
         实际进行绘制的类
       

        public
         
        class
         MyGameCanvas
        extends
         GameCanvas
        implements
         Runnable

       
        {
      public MyGameCanvas()
      {
        // 初始化
      }
      
      public void start()
      {
        // 初始化
       
        // 执行绘制线程
        Thread runner = new Thread(this);
        runner.start();
      }
      
      private void run()
      {
      
        // 或者使用(keeprunning = true)
        // keeprunning是一个控制游戏状态的实例变量

        while(true)
        {


          // 检查游戏是否达到
          // 某个边界值或特殊条件
          
          verifyGameState();


          // 从用户那里得到输入,然后更新描述游戏元素状态的变量值
          
            checkUserInput();


          // 使用Graphics对象将当前游戏状态绘制到屏幕上

          updateGameScreen(getGraphics());


          // 控制屏幕更新的频率

          Thread.sleep(milliseconds);
        }
      }
    }
        我们将在以下几节中使用这个结构来开发一个游戏。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 13:37 , Processed in 0.312206 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表