国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序

2024-07-21 02:39:04
字體:
供稿:網(wǎng)友

  作者使用JBuilder2005,里面自帶WTK2.1,自己下載2.2版本,2.2那個(gè)默認(rèn)的模擬器看著實(shí)在爽。另外,Jbuilder X下的WTK也是2.0的版本。Jbuilder 9的WTK是1.04。首先開啟Jbuilder。建立一個(gè)PRoject:
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖一)

  然后填寫名字和路徑。繼續(xù):
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖二)

  然后選擇JDK路徑,本身已有WTK2.1,你可以選擇。但是你也可以自己選擇其他的WTK版本:
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖三)

  點(diǎn)擊jdk后面的路徑按鈕,繼續(xù):
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖四)

  next.工程建立完畢。接著點(diǎn)擊file->New:
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖五)

  然后在對(duì)話框左邊選擇Micro,你就能看到右邊出現(xiàn)MIDlet,Displayable。接上面的:如圖示
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖六)

  點(diǎn)擊MIDlet or Displayable,則讓你輸入MIDlet的名字.如圖:
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖七)

  繼續(xù)下一步,讓你輸入一個(gè)Displayable的名字,包括類型(form,canvas等),是否自動(dòng)加載Command等等。
  
 使用 Jbulider 開發(fā) J2ME 移動(dòng)游戲程序(圖八)

  然后Jbuilder自動(dòng)生成所需代碼,以及Jbuilder自加的一些東西。你可以添加或修改之。這里我將本站一篇關(guān)于介紹Gamecanvas的文章的代碼拿過來,做少量修改,作為本文章的一個(gè)演示:
  
  TestMIDlet.java文件:
  
  package temps;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  /**
  * Title:
  *
  * Description:
  *
  * Copyright: Copyright (c) 2005
  *
  * Company:
  *
  * @author not attributable
  * @version 1.0
  */
  public class TestMIDlet extends MIDlet
  {
  private Display display;
  
  public void startApp()
  {
  try
  {
  display = Display.getDisplay(this);
  Displayable1 gameCanvas = new Displayable1();
  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();
  }
  }
  
  Displayable1.java內(nèi)容:
  
  package temps;
  
  import javax.microedition.lcdui.*;
  import java.util.Random;
  import javax.microedition.lcdui.game.*;
  /**
  *
Title:
  *
  * Description:
  *
  * Copyright: Copyright (c) 2005
  *
  * Company:
  *
  * @author not attributable
  * @version 1.0
  */
  public class Displayable1 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={0,1,2,1,0,1,2,1,0,1,2,1,1,1,1,1,1};
  private int counter=0;
  private int enemyX,enemyY;
  private int enemyDirect=0;
  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 Displayable1() throws Exception
  {
  super(true);
  width = getWidth();
  height = getHeight();
  
  currentX = width / 2;
  currentY = height / 2;
  enemyX=width/4;
  enemyY=height/4;
  delay = 100;
  
  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, 32, 32);
  System.out.println(playerSprite.getRawFrameCount());
  enemySprite=new Sprite(enemy,50,21);
  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(0);
  if(isalive)
  {
  if(counter==0)
  {
  enemyDirect=Math.abs(random.nextInt()%4);
  }
  counter++;
  switch(enemyDirect)
  {
  case 0:
  enemyY=Math.max(0,--enemyY);
  break;
  case 1:
  enemyY=Math.min(++enemyY,height-enemySprite.getHeight());
  break;
  case 2:
  enemyX=Math.max(0,--enemyX);
  break;
  case 3:
  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(3);
  }
  
  // Left
  if ((keyStates & LEFT_PRESSED) !
= 0)
  {
  currentX = Math.max(0, currentX - 1);
  playerSprite.setFrame(1);
  }
  
  // Right
  if ((keyStates & RIGHT_PRESSED) != 0)
  if (currentX + 5 < width)
  {
  currentX = Math.min(width, currentX + 1);
  playerSprite.setFrame(3);
  }
  
  // Up
  if ((keyStates & UP_PRESSED) != 0)
  {
  currentY = Math.max(0, currentY - 1);
  playerSprite.setFrame(2);
  }
  
  // Down
  if ((keyStates & DOWN_PRESSED) != 0)
  {
  isdown=true;
  }
  
  if ((keyStates & DOWN_PRESSED) != 0)
  {
  if(isdown)
  {
  if (currentY + 10 < height)
  {
  currentY = Math.min(height, currentY + 1);
  playerSprite.setFrame(4);
  }
  }
  }
  
  if((keyStates & FIRE_PRESSED)!=0)
  {
  isalive=!isalive;
  counter=0;
  }
  
  if(!(enemyX+enemySprite.getWidth()   enemyY+enemySprite.getHeight()   enemyX>currentX+playerSprite.getWidth()
   enemyY>currentY+playerSprite.getHeight()) && isalive)
  {
  counter=0;
  isalive=false;
  }
  }
  
  // Method to Display Graphics
  private void

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南江县| 资溪县| 龙陵县| 米脂县| 武宣县| 霍州市| 郧西县| 绍兴市| 冷水江市| 聂拉木县| 仁布县| 东光县| 武邑县| 辛集市| 哈巴河县| 隆尧县| 日照市| 东乌珠穆沁旗| 吉安县| 屏边| 若尔盖县| 苏尼特左旗| 皋兰县| 斗六市| 巴彦县| 仁怀市| 丹巴县| 新蔡县| 河东区| 库尔勒市| 五台县| 呼图壁县| 兴安县| 永春县| 马关县| 石景山区| 泸州市| 云安县| 永胜县| 济南市| 民和|