「java移动小球」java移动的小球
本篇文章给大家谈谈java移动小球,以及java移动的小球对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
新手求教java 多线程小球移动
this.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent arg0) {
if(arg0.getKeyChar()==KeyEvent.VK_ENTER){
//干活
}
}
});
JAVA实现,在屏幕内一个小球随机移动
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(BallX0){BallX-=Speed;}
else{BallDir=Right;};break;
case Right:
if(BallXScreenWith){BallX+=Speed;}
else{BallDir=Left;}break;
}
if(BallY=0BallRun){
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);br }catch(Exception ex){ex.printStackTrace();}
} }}
Java多线程移动的小球
同一个Thread不能start两次
这样改下
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class MoveBall02 extends JFrame {
private JButton jbtu = null;
private Ball02 ball = null;
Thread t = null;
public static void main(String[] args) {
new Test();
}
public Test() {
this.setTitle("移动的小球");
this.setSize(600, 500);
this.setLocation(100, 100);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
ball = new Ball02(40, 40);
this.add(ball);
t = new Thread(ball);
jbtu = new JButton("点击移动小球");
this.add(jbtu, BorderLayout.SOUTH);
jbtu.addActionListener(new MyActionListener());
this.setVisible(true);
}
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbtu) {
// 响应鼠标点击事件
if (!t.isAlive()) {
t = new Thread(ball);
t.start();
}
}
}
}
}
@SuppressWarnings("serial")
class Ball02 extends JPanel implements Runnable {
private int x, y;
public Ball02(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
g.fillOval(x, y, 40, 40);
}
public void run() {
try {
for (int i = 0; i 20; i++) {
x = y += 3;
this.repaint();
Thread.sleep(100);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
关于java移动小球和java移动的小球的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。