⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 displayable1.java

📁 物体做抛物线运动是游戏中基本运动物理模型之一! 在PC游戏中可以由重力公式 轻易模拟
💻 JAVA
字号:
package paowuxian;

import javax.microedition.lcdui.*;
import java.io.*;
import java.util.Hashtable;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Displayable1 extends Canvas implements CommandListener ,Runnable{

  private Image imgWu=null;
  private  int x,y;
  private boolean bFire=false;
  Thread thisThread;
   // public Hashtable angleValue;
//public int tempAngle;
//public int tempValue;
    private int angle=45;
    private int v0=10;
    private int windSpeed=0;//300000;
    private int vx,vy;

private boolean bShowline=true;
    private int t,tTemp;

  public Displayable1() {
    Resource.loadAngleValue();
    try {
      imgWu = Image.createImage("/images/paodan.png");

y =getHeight()-imgWu.getHeight();
     // x=getWidth()/2;
    }
    catch (IOException ex) {
    }
thisThread=new Thread(this);
    thisThread.start();

    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    // Set up this Displayable to listen to command events
    setCommandListener(this);
    // add the Exit command
    addCommand(new Command("Exit", Command.EXIT, 1));
  }

  public void commandAction(Command command, Displayable displayable) {
    /** @todo Add command handling code */
    if (command.getCommandType() == Command.EXIT) {
// stop the MIDlet
      MIDlet1.quitApp();
    }
  }

  private void gameRun(){
    if(bFire){
      x= (vx+windSpeed )*t /100000; ;
      int pianyi=(t*400000);
      if(vy==0){
        pianyi=0;
      }else if(vy<0){
        pianyi=280000*t;
      }
      y=(100000*(getHeight()-imgWu.getHeight())-(vy*t-100000*t*t+pianyi))/100000;
     // bFire=false;
    }

    repaint();
  }



  protected void paint(Graphics g) {
    g.setColor(0xffffffff);
    g.fillRect(50,10,80,40);
    if(bShowline){
      g.setColor(0xffffffff);
    g.fillRect(0,0,getWidth(),getHeight());
    }
    g.setColor(0x0000ff);
    g.drawString("角度"+angle+"(按8/2键调整)",50,0,0);
     g.drawString("力度"+v0+"(按1)",50,10,0);
      g.drawString("是否留下轨迹"+(bShowline?" 否":" 是")+"(按3)",50,20,0);
      g.drawString("风力"+windSpeed/100000+"(按7/9)",50,30,0);
    g.drawImage(imgWu,x,y,0);
  }
   public   void run(){
    while (true){
      try {
        thisThread.sleep(10);
        if(bFire){
          tTemp++;
          if (tTemp >2) {
            t+=1;
            tTemp = 0;
          }

          if(y>getHeight()||x>getWidth()){
            x=0;
            y=getHeight()-imgWu.getHeight();
            bFire=false;
            vx=0;vy=0;
            t=0;
            v0=10;
          }
        }
      }
      catch (InterruptedException ex) {
      }
      gameRun();


    }
  }

  /**
   * keyPressed
   *
   * @param keyCode int
   * @todo Implement this javax.microedition.lcdui.Canvas method
   */
  protected void keyPressed(int keyCode) {
    if(keyCode==KEY_NUM5){
      bFire=true;
      vx=Resource.getCosAngleValue(angle)*v0;
      vy=Resource.getSinAngleValue(angle)*v0;
    }else if(keyCode==KEY_NUM8){
      if(angle>0){
        angle -= 3;
      }
    }
    else if(keyCode==KEY_NUM2){
      if(angle<90){
        angle += 3;
      }

    }else if(keyCode==KEY_NUM1){
    v0++;
  }else if(keyCode==KEY_NUM3){
    bShowline=!bShowline;
  }else if(keyCode==KEY_NUM7){
    windSpeed+=100000;
  }else if(keyCode==KEY_NUM9){
    windSpeed-=100000;
  }





  }



  /*
   public  void loadAngleValue()
  {
  angleValue = new Hashtable();
  angleValue.put(String.valueOf(0),new Integer(0));
  angleValue.put(String.valueOf(3),new Integer(5236));
  angleValue.put(String.valueOf(6),new Integer(10453));
  angleValue.put(String.valueOf(9),new Integer(15643));
  angleValue.put(String.valueOf(12),new Integer(20791));
  angleValue.put(String.valueOf(15),new Integer(25882));
  angleValue.put(String.valueOf(18),new Integer(30902));
  angleValue.put(String.valueOf(21),new Integer(35837));
  angleValue.put(String.valueOf(24),new Integer(40674));
  angleValue.put(String.valueOf(27),new Integer(45400));
  angleValue.put(String.valueOf(30),new Integer(50000));
  angleValue.put(String.valueOf(33),new Integer(54464));
  angleValue.put(String.valueOf(36),new Integer(58779));
  angleValue.put(String.valueOf(39),new Integer(62932));
  angleValue.put(String.valueOf(42),new Integer(66913));
  angleValue.put(String.valueOf(45),new Integer(70711));
  angleValue.put(String.valueOf(48),new Integer(74314));
  angleValue.put(String.valueOf(51),new Integer(77715));
  angleValue.put(String.valueOf(54),new Integer(80902));
  angleValue.put(String.valueOf(57),new Integer(83867));
  angleValue.put(String.valueOf(60),new Integer(86603));
  angleValue.put(String.valueOf(63),new Integer(89101));
  angleValue.put(String.valueOf(66),new Integer(91355));
  angleValue.put(String.valueOf(69),new Integer(93358));
  angleValue.put(String.valueOf(72),new Integer(95106));
  angleValue.put(String.valueOf(75),new Integer(96593));
  angleValue.put(String.valueOf(78),new Integer(97815));
  angleValue.put(String.valueOf(81),new Integer(98769));
  angleValue.put(String.valueOf(84),new Integer(99452));
  angleValue.put(String.valueOf(87),new Integer(99863));
  angleValue.put(String.valueOf(90),new Integer(100000));
  }
  public  int getSinAngleValue(int angle)
  {

  tempAngle = (angle > 90 ? (180 - angle) : angle);
  tempValue = ((Integer)(angleValue.get(String.valueOf(tempAngle)))).intValue();
  return tempValue;
  }
  public int getCosAngleValue(int angle)
  {
  tempAngle = (angle > 90 ? angle - 90 : 90 - angle);
  tempValue = ((Integer)(angleValue.get(String.valueOf(tempAngle)))).intValue();
  return (angle <= 90 ? tempValue : (-tempValue));
  }
  */


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -