📄 drawimage.java
字号:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class DrawImage extends Applet implements Runnable,KeyListener,MouseListener
{
Image Background,role,Background0,rocket1,rocket2,rocket3,burst;
int status;
int rocket1_x,rocket1_y,rocket2_x,rocket2_y,rocket3_x,rocket3_y;
int speed_p_x,speed_p_y,speed_h_x,speed_h_y;
public AudioClip bgsound, speak;
Thread the_other_thread;
int role_x,role_y, role_x_speed,role_y_speed,appW,appH;
//int width,height;
//定义线程对象
//Thread animationThread;
//定义次画面对象
Image offScreen;
//定义次画面的绘图对象
Graphics offScreenGraphics;
//用整型变量currentDirection标志角色当前的运动方向
int currentDirection;
//用整型变量currentFrame标志当前运动方向中处于哪一个动画帧
int currentFrame;
//public boolean drawImage(Image img,int dx1,int dy1,dx2,dy2,sx1,sy1,sx2,sy2,this)
public void init()
{
addKeyListener(this);
addMouseListener(this);
status=0;
rocket1_x=350;
rocket1_y=720;
speed_p_x=0;
speed_p_y=40;
bgsound=getAudioClip(getCodeBase(),"music/love.mid");//music/ringout.wav
bgsound.loop();
speak=getAudioClip(getCodeBase(),"music/春江花月夜.mid");
currentFrame=0;
appW=getSize().width;
appH=getSize().height;
//初始化次画面对象/background3.png /Roles/plane1.gif
offScreen = createImage(appW,appH);
//初始化次画面上的绘图对象
offScreenGraphics = offScreen.getGraphics();
role_x_speed=role_y_speed=0;
role_x=30;role_y=40;
//hammer=getImage(getCodeBase(),"images/HAMMER2.gif");
rocket1=getImage(getCodeBase(),"images/rocket1.gif");
rocket2=getImage(getCodeBase(),"images/rocket2.gif");
rocket3=getImage(getCodeBase(),"images/rocket3.gif");
burst=getImage(getCodeBase(),"images/lihua.gif");
Background0=getImage(getCodeBase(),"images/bg.gif");
Background=getImage(getCodeBase(),"images/xinqiu.gif");
role=getImage(getCodeBase(),"images/Hero.gif");
}
public void start()
{
the_other_thread=new Thread(this);
the_other_thread.start();
}
public void stop()
{
the_other_thread=null;
}
public void run()
{
}
public void mouseClicked(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mousePressed(MouseEvent e){
status=1;
}
//键盘事件
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e)
{
if(status==1){
int key=e.getKeyCode();
switch(key)
{
case KeyEvent.VK_RIGHT:
currentDirection=0;
role_x_speed=+10;
role_y_speed=-10;
//speak1.play();
break;
case KeyEvent.VK_LEFT:
currentDirection=1;
role_x_speed=-10;
role_y_speed=10;
//speak1.play();
break;
case KeyEvent.VK_UP:
currentDirection=2;
role_x_speed=-10;
role_y_speed=-10;
//speak1.play();
break;
case KeyEvent.VK_DOWN:
currentDirection=3;
role_x_speed=10;
role_y_speed=10;
// speak1.play();
break;
}//switch
}//if
}//keyPressed
public void paint(Graphics g)
{
//清除次画面
if(status==0){
offScreenGraphics.drawImage(Background0,0,0,getSize().width,getSize().height,this);
g.drawImage( offScreen, 0, 0, this );
}
else{
offScreenGraphics.setColor(Color.white);
offScreenGraphics.fillRect( 0, 0, appW, appH );
offScreenGraphics.drawImage(Background,0,0,getSize().width,getSize().height,this);
switch(currentDirection)
{
case 0:
//for(;;currentFrame++)
offScreenGraphics.drawImage(role,role_x,role_y,role_x+64,role_y+64,(currentFrame%4)*64,64,(currentFrame%4)*64+64,128,this);
currentFrame++;
break;
case 1:
//for(;;currentFrame++)
offScreenGraphics.drawImage(role,role_x,role_y,role_x+64,role_y+64,(currentFrame%4)*64,192,(currentFrame%4)*64+64,256,this);
currentFrame++;
break;
case 2:
//for(;;currentFrame++)
offScreenGraphics.drawImage(role,role_x,role_y,role_x+64,role_y+64,(currentFrame%4)*64,0,(currentFrame%4)*64+64,64,this);
currentFrame++;
break;
case 3:
//for(;;currentFrame++)
offScreenGraphics.drawImage(role,role_x,role_y,role_x+64,role_y+64,(currentFrame%4)*64,128,(currentFrame%4)*64+64,192,this);
currentFrame++;
break;
}//switch
role_x=role_x+role_x_speed;
role_y=role_y+role_y_speed;
if(role_x >= rocket1_x&&role_x<=rocket1_x+100&&role_y >= rocket1_y&&role_y <= rocket1_y+150)//判断碰撞
{
speak.play();
offScreenGraphics.drawImage(burst,rocket1_x,rocket1_y,rocket1_x+150,rocket1_y+150,0,0,100,140,this);
rocket1_y=720;
offScreenGraphics.drawString("游戏结束",appW/2,appH/2);
}
else if(rocket1_y<-20)
{
rocket1_y=720;
rocket1_y-=speed_p_y;
offScreenGraphics.drawImage(rocket1,rocket1_x,rocket1_y,rocket1_x+100,rocket1_y+150,0,0,160,140,this);
}
else{
rocket1_y-=speed_p_y;
offScreenGraphics.drawImage(rocket1,rocket1_x,rocket1_y,rocket1_x+100,rocket1_y+150,0,0,160,140,this);
}
if(role_x >= rocket2_x&&role_x<=rocket2_x+100&&role_y >= rocket2_y&&role_y <= rocket2_y+150)
{
speak.play();
offScreenGraphics.drawImage(burst,rocket2_x,rocket2_y,rocket2_x+150,rocket2_y+150,0,0,100,140,this);
rocket2_y=720;
}
else if(rocket2_y<-20||rocket2_x>getSize().width+20)
{
rocket2_y=720;
rocket2_x=350;
rocket2_y-=speed_p_y;
rocket2_x+=10;
offScreenGraphics.drawImage(rocket2,rocket2_x,rocket2_y,rocket2_x+100,rocket2_y+150,0,0,160,140,this);
}
else{
rocket2_y-=speed_p_y;rocket2_x+=10;
offScreenGraphics.drawImage(rocket2,rocket2_x,rocket2_y,rocket2_x+100,rocket2_y+150,0,0,160,140,this);
}
if(role_x >= rocket3_x&&role_x<=rocket3_x+100&&role_y >= rocket3_y&&role_y <= rocket3_y+150)
{
speak.play();
offScreenGraphics.drawImage(burst,rocket3_x,rocket3_y,rocket3_x+150,rocket3_y+150,0,0,100,140,this);
rocket3_y=720;
}
else if(rocket3_y<-20||rocket3_x<-20){
rocket3_y=720;
rocket3_x=350;
rocket3_y-=speed_p_y;
rocket3_x-=10;
offScreenGraphics.drawImage(rocket3,rocket3_x,rocket3_y,rocket3_x+100,rocket3_y+150,0,0,160,140,this);
}
else{
rocket3_y-=speed_p_y;rocket3_x-=10;
offScreenGraphics.drawImage(rocket3,rocket3_x,rocket3_y,rocket3_x+100,rocket3_y+150,0,0,160,140,this);
}
//把次画面渲染到主画面上去
g.drawImage( offScreen, 0, 0, this );
}//else
try
{
Thread.sleep(100);
}
catch (InterruptedException E){}
repaint();
}
/*改写Applet的update()方法*/
public void update( Graphics g )
{
paint(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -