lovelab遊戲製作中
package wwwwq;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class abc extends Frame{
int x,y;
static Random rana0 = new Random();
static Random ranb0 = new Random();
static Random direct0 = new Random();
static int [] a={0,0,0,0,0};
static int [] b={0,0,0,0,0};
static int [] pda={0,0,0,0,0};
static int [] pdb={0,0,0,0,0};
static int [] nda={0,0,0,0,0};
static int [] ndb={0,0,0,0,0};
static int [] da={0,0,0,0,0};
static int [] db={0,0,0,0,0};
static int [] dir={0,0,0,0,0};
Image bufferPage=null;
public abc(){
super("4654s");
setSize(800,800);
setVisible(true);
//setBackground(Color.blue);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
t.start();
//new Thread().start();
}
public static void main(String[] args) {
new abc();
//a[0]=rana0.nextInt(800);
//System.out.println(":"+a[0]);
//da[0]=((400-a[0])/10);
//System.out.println(":"+da[0]);
//b[0]=ranb0.nextInt(800);
//System.out.println(":"+b[0]);
//db[0]=((400-b[0])/10);
//System.out.println(":"+db[0]);
dir[0]=direct0.nextInt(4);
System.out.println(":"+dir[0]);
if(dir[0]==0){a[0]=0;b[0]=ranb0.nextInt(800);db[0]=((400-b[0])/100);da[0]=((400-a[0])/100);}
if(dir[0]==1){a[0]=800;b[0]=ranb0.nextInt(800);db[0]=((400-b[0])/100);da[0]=((400-a[0])/100);}
if(dir[0]==2){b[0]=0;a[0]=rana0.nextInt(800);da[0]=((400-a[0])/100);db[0]=((400-b[0])/100);}
if(dir[0]==3){b[0]=800;a[0]=rana0.nextInt(800);da[0]=((400-a[0])/100);db[0]=((400-b[0])/100);}
System.out.println(":"+a[0]);
System.out.println(":"+da[0]);
System.out.println(":"+b[0]);
System.out.println(":"+db[0]);
}
public void processMouseEvent(MouseEvent e){
if(e.getID()==MouseEvent.MOUSE_PRESSED){
x=e.getX();
y=e.getY();
}
}
Thread t = new Thread() {
public void run(){
while(dir[0]==0){
repaint();
a[0]=a[0]+4;
b[0]=b[0]+db[0];
try{Thread.sleep(50);}
catch(InterruptedException e){;}
}
while(dir[0]==1){
repaint();
a[0]=a[0]-4;
b[0]=b[0]+db[0];
try{Thread.sleep(50);}
catch(InterruptedException e){;}
}
while(dir[0]==2){
repaint();
a[0]=a[0]+da[0];
b[0]=b[0]+4;
try{Thread.sleep(50);}
catch(InterruptedException e){;}
}
while(dir[0]==3){
repaint();
a[0]=a[0]+da[0];
b[0]=b[0]-4;
try{Thread.sleep(50);}
catch(InterruptedException e){;}
}
}
};
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
Graphics bufferg;
if(bufferPage==null)
{bufferPage=createImage(800,800);}
bufferg=bufferPage.getGraphics();
BufferedImage image = null;
try {
image = ImageIO.read(new File("D:\\test\\jtest2\\Penguins.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bufferg.setColor(Color.white);
bufferg.fillRect(0, 0, 800, 800);
bufferg.drawImage(image, a[0],b[0],50,50,this);
bufferg.dispose();
g.drawImage(bufferPage, getInsets().left,getInsets().top, this);
//if(x<=a[0]+50 && x>a[0]-50){a[0]=80000;b[0]=800;}
}
}
PS1:圖形移動到中間的解決方法(藉由運算da)
PS2:圖形消除閃爍問題
PS3:閃爍殘影問題(藉由把緩衝頁背景圖白再印出即可)
沒有留言:
張貼留言