知识大全 使用 Jbulider 开发 J2ME 移动游戏程序
Posted 路径
篇首语:道德可以弥补能力的不足,能力却难以掩盖道德的缺陷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用 Jbulider 开发 J2ME 移动游戏程序相关的知识,希望对你有一定的参考价值。
使用 Jbulider 开发 J2ME 移动游戏程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
作者使用JBuilder 里面自带WTK 自己下载 版本 那个默认的模拟器看着实在爽 另外 Jbuilder X下的WTK也是 的版本 Jbuilder 的WTK是 首先开启Jbuilder 建立一个Project > 然后填写名字和路径 继续 > 然后选择JDK路径 本身已有WTK 你可以选择 但是你也可以自己选择其他的WTK版本: > 点击jdk后面的路径按钮 继续: > next 工程建立完毕 接着点击file >New: > 然后在对话框左边选择Micro 你就能看到右边出现MIDlet Displayable 接上面的:如图示 > 点击MIDlet or Displayable 则让你输入MIDlet的名字 如图: > 继续下一步 让你输入一个Displayable的名字 包括类型(form canvas等) 是否自动加载Command等等 > 然后Jbuilder自动生成所需代码 以及Jbuilder自加的一些东西 你可以添加或修改之 这里我将本站一篇关于介绍Gamecanvas的文章的代码拿过来 做少量修改 作为本文章的一个演示 TestMIDlet java文件: package temps; import javax microedition midlet *; import javax microedition lcdui *; /** *Title:
* *Description:
* *Copyright: Copyright (c)
* *Company:
* * @author not attributable * @version */ public class TestMIDlet extends MIDlet private Display display; public void startApp() try display = Display getDisplay(this); Displayable gameCanvas = new Displayable (); gameCanvas start(); display setCurrent(gameCanvas); catch (Exception ex) System out println(ex); public Display getDisplay() return display; public void pauseApp() public void destroyApp(boolean unconditional) exit(); public void exit() System gc(); destroyApp(false); notifyDestroyed(); Displayable java内容: package temps; import javax microedition lcdui *; import java util Random; import javax microedition lcdui game *; /** *Title:
* *Description:
* *Copyright: Copyright (c)
* * * * @author not attributable * @version */ public class Displayable extends GameCanvas implements Runnable private boolean isPlay; // Game Loop runs when isPlay is true private long delay; // To give thread consistency private int currentX currentY; // To hold current position of the X private int width; // To hold screen width private int height; // To hold screen height private Random random=new Random(System currentTimeMillis()); private final int[] sequence= ; private int counter= ; private int enemyX enemyY; private int enemyDirect= ; private boolean isdown=false; private boolean isalive=true; // Sprites to be used private Sprite playerSprite; private Sprite backgroundSprite; private Sprite enemySprite; // Layer Manager private LayerManager layerManager; // Constructor and initialization public Displayable () throws Exception super(true); width = getWidth(); height = getHeight(); currentX = width / ; currentY = height / ; enemyX=width/ ; enemyY=height/ ; delay = ; Image playerImage=null; Image backgroundImage=null; Image enemy=null; // Load Images to Sprites try playerImage = Image createImage( /transparent png ); backgroundImage = Image createImage( /background png ); enemy=Image createImage( /frames png ); catch(Exception e) System out println( get Image error! +e getMessage()); playerSprite = new Sprite(playerImage ); System out println(playerSprite getRawFrameCount()); enemySprite=new Sprite(enemy ); backgroundSprite = new Sprite(backgroundImage); layerManager = new LayerManager(); layerManager append(playerSprite); layerManager append(enemySprite); layerManager append(backgroundSprite); // Automatically start thread for game loop public void start() isPlay = true; Thread t = new Thread(this); t start(); public void stop() isPlay = false; // Main Game Loop public void run() Graphics g = getGraphics(); while (isPlay == true) input(); drawScreen(g); try Thread sleep(delay); catch (InterruptedException ie) // Method to Handle User Inputs private void input() int keyStates = getKeyStates(); playerSprite setFrame( ); if(isalive) if(counter== ) enemyDirect=Math abs(random nextInt()% ); counter++; switch(enemyDirect) case : enemyY=Math max( enemyY); break; case : enemyY=Math min(++enemyY height enemySprite getHeight()); break; case : enemyX=Math max( enemyX); break; case : enemyX=Math min(++enemyX width enemySprite getWidth()); break; counter=(counter++)%(sequence length()); enemySprite setFrame(sequence[counter]); else enemyY+=counter; enemyY=Math min(enemyY height enemySprite getHeight()); if(enemyY counter++; enemySprite setFrame( ); // Left if ((keyStates & LEFT_PRESSED) != ) currentX = Math max( currentX ); playerSprite setFrame( ); // Right if ((keyStates & RIGHT_PRESSED) != ) if (currentX + < width) currentX = Math min(width currentX + ); playerSprite setFrame( ); // Up if ((keyStates & UP_PRESSED) != ) currentY = Math max( currentY ); playerSprite setFrame( ); // Down if ((keyStates & DOWN_PRESSED) != ) isdown=true; if ((keyStates & DOWN_PRESSED) != ) if(isdown) if (currentY + < height) currentY = Math.min(height, currentY + 1); playerSprite.setFrame(4); if((keyStates & FIRE_PRESSED)!=0) isalive=!isalive; counter=0; if(!(enemyX+enemySprite.getWidth()相关参考
高可靠性移动应用程序---J2ME工具(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JM
J2ME2005移动开发这场竞赛的领跑者 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 年移动开
使用J2MEMMAPI开发移动多媒体应用技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一引
使用Eclipse开发J2ME手机应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是
J2ME带给移动支付的优势解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 移动支付是一种在移
知识大全 在Eclipse中使用Ant来自动编译J2me程序
在Eclipse中使用Ant来自动编译J2me程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 用EclipseME0.5.5创建简单的J2ME程序(图)
用EclipseME0.5.5创建简单的J2ME程序(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 在Eclipse中使用Ant来自动编译J2me程序[1]
在Eclipse中使用Ant来自动编译J2me程序[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 在Eclipse中使用Ant来自动编译J2me程序[2]
在Eclipse中使用Ant来自动编译J2me程序[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 在Eclipse中使用Ant来自动编译J2me程序[3]
在Eclipse中使用Ant来自动编译J2me程序[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下