早教吧作业答案频道 -->其他-->
JAVA实现,在屏幕内一个小球随机移动实现小球在屏幕内自由运动,到达边界后能反弹,要求两个类,一个MIDlet,一个普通类。(J2ME)
题目详情
JAVA实现,在屏幕内一个小球随机移动
实现小球在屏幕内自由运动,到达边界后能反弹,要求两个类,一个MIDlet,一个普通类。(J2ME)
实现小球在屏幕内自由运动,到达边界后能反弹,要求两个类,一个MIDlet,一个普通类。(J2ME)
▼优质解答
答案和解析
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;import com.sun.midp.lcdui.DisplayDeviceAccess;
public class Main extends MIDlet {
public static Display display;
public static GameCanvas Game;
public static MIDlet mid;
public Main() {
Game=new GameCanvas();
display=Display.getDisplay(this);
mid=this;
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
protected void pauseApp() {}
protected void startApp() throws MIDletStateChangeException {display.setCurrent(Game);}
}
Canvas类=========================import java.util.Random;import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
public class GameCanvas extends Canvas implements Runnable{
private int BallX=0;
private int BallY=0;
private int BallW=20;
private int BallH=20;
private boolean BallRun=true;
private byte BallDir=0;
private final byte Left=1;
private final byte Right=2;
private final int ScreenWith=150;
private final int ScreenHight=200;
private final int Speed = 5;
Random rand;
public GameCanvas(){
rand=new Random();
int state=rand.nextInt()%2;
BallDir=(byte)(state==0?Left:Right);
BallX=rand.nextInt()%240;
BallY=rand.nextInt()%320;
new Thread(this).start();
this.setFullScreenMode(true);
}
protected void paint(Graphics g) {
g.setColor(0);
g.fillRect(0, 0,this.getWidth(), this.getHeight());
g.setColor(255, 255,255);
g.fillArc(BallX, BallY,BallW, BallH, 0,360);
} public void BallRun(){
switch(BallDir){
case Left:
if(BallX>0){BallX-=Speed;}
else{BallDir=Right;};break;
case Right:
if(BallX else{BallDir=Left;}break;
}
if(BallY>=0&&BallRun){
BallY-=Speed;
}else{BallRun=false;}
if(BallY<=ScreenHight&&!BallRun){
BallY+=Speed;
}else{BallRun=true;}
}
public void run() {
while(true){
BallRun();
this.repaint();
try{Thread.sleep(100);
}catch(Exception ex){ex.printStackTrace();}
} }}
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;import com.sun.midp.lcdui.DisplayDeviceAccess;
public class Main extends MIDlet {
public static Display display;
public static GameCanvas Game;
public static MIDlet mid;
public Main() {
Game=new GameCanvas();
display=Display.getDisplay(this);
mid=this;
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
protected void pauseApp() {}
protected void startApp() throws MIDletStateChangeException {display.setCurrent(Game);}
}
Canvas类=========================import java.util.Random;import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
public class GameCanvas extends Canvas implements Runnable{
private int BallX=0;
private int BallY=0;
private int BallW=20;
private int BallH=20;
private boolean BallRun=true;
private byte BallDir=0;
private final byte Left=1;
private final byte Right=2;
private final int ScreenWith=150;
private final int ScreenHight=200;
private final int Speed = 5;
Random rand;
public GameCanvas(){
rand=new Random();
int state=rand.nextInt()%2;
BallDir=(byte)(state==0?Left:Right);
BallX=rand.nextInt()%240;
BallY=rand.nextInt()%320;
new Thread(this).start();
this.setFullScreenMode(true);
}
protected void paint(Graphics g) {
g.setColor(0);
g.fillRect(0, 0,this.getWidth(), this.getHeight());
g.setColor(255, 255,255);
g.fillArc(BallX, BallY,BallW, BallH, 0,360);
} public void BallRun(){
switch(BallDir){
case Left:
if(BallX>0){BallX-=Speed;}
else{BallDir=Right;};break;
case Right:
if(BallX
}
if(BallY>=0&&BallRun){
BallY-=Speed;
}else{BallRun=false;}
if(BallY<=ScreenHight&&!BallRun){
BallY+=Speed;
}else{BallRun=true;}
}
public void run() {
while(true){
BallRun();
this.repaint();
try{Thread.sleep(100);
}catch(Exception ex){ex.printStackTrace();}
} }}
看了 JAVA实现,在屏幕内一个小...的网友还看了以下:
煤矿原有一部分煤没运出,每天又均匀采出煤来,如用火车运,80个车皮要运25天,或用60个车皮要运5 2020-06-24 …
1.已知甲运动方式为:先竖直向上运动1个单位长度后,再水平向右运动2个单位长度;乙运动方式为:先竖 2020-06-27 …
甲的运动方式:先向上运动1个单位长度后,再向右运动2个单位长度.乙的运动方式为:先向下运动2个单位 2020-06-27 …
我国第一大人工运河是运河,现在黄河以南从山东济宁至江南的航运,向南运、向北运。它的货运量仅次于,居内 2020-11-13 …
我国第一大人工运河是运河,现在黄河以南从山东济宁至江南的航运,向南运、向北运。它的货运量仅次于,居内 2020-11-13 …
现在的物理学中加速度的定义式为,而历史上有些科学家曾把相等位移内速度变化相等的单向直线运动称为“匀变 2020-11-28 …
现在的物理学中加速度的定义式为a=vt−v0t,而历史上有些科学家曾把相等位移内速度变化相等的单向直 2020-11-28 …
历史上曾把在任意相等位移内速度变化相等的单向直线运动称作“匀变速直线运动“(现称另类匀变速直线运动) 2020-11-28 …
历史上有些科学家曾把相等位移内速度变化相等的单向直线运动称为“匀变速直线运动”(现称“另类匀变速直线 2020-11-28 …
在电子显像管内部,当未加偏转磁场时,电子枪打出的电子应沿直线运动打在荧光屏的正中心.但由于地磁场对带 2021-01-02 …