Java仿游戏滚屏

其实人物不动的,

背景图片反方向移动,

所以就看起来像人在移动

 

 

本例通过按键实现的

import javax.imageio.*;
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;  
public class Hufan extends JFrame{
	HuPanel hp;//画图的类
	static Hufan hufan;//本类的对象
    public static void main(String[] args) {  
        hufan=new Hufan();  
    }  
    public Hufan(){ 
    	hp=new HuPanel();
    	this.addKeyListener(hp);//添加按键监听
    	this.add(hp);
        this.setTitle("Java仿游戏滚屏");  
        this.setSize(800, 500);  
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        this.setVisible(true);  
    }
    public int getW(){//取得JFrame窗口的宽度
    	return this.getWidth();
    }
    public int getH(){//取得JFrame窗口的高度
    	return this.getHeight();
    }
} 
class HuPanel extends JPanel implements KeyListener{
	BufferedImage img;
	TuPian tp;//背景图片对象
	int w;//图片的宽度
	int h;//图片的高度
	public HuPanel(){
		tp=new TuPian();
		try {
			img=ImageIO.read(new File("qq.PNG"));//把图片导入内存
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		w=img.getWidth();//得到图片的宽度
		h=img.getHeight();//得到图片的宽度
	}
	public void paint(Graphics g){
		super.paint(g);
		g.drawImage(img, tp.x, tp.y, this);//画出图片
	}
	@Override
	public void keyPressed(KeyEvent e) {
		switch(e.getKeyCode()){
		case KeyEvent.VK_UP:
			//如果要往上走,那么背景图片要往下移动,
			//图片的y坐标小于0时,背景图片才能往下移动
			if(tp.y<0){
				tp.down();
			}
			break;
			//如果要往下看,那么背景图片要往上移动,
			//图片的y坐标大于(图片的高减去窗口的高)时,背景图片才能往上移动
		case KeyEvent.VK_DOWN:
			if(tp.y>-(h-Hufan.hufan.getH())){
				tp.up();
			}
			break;
			//如果要往左看,那么背景图片要往右移动,
			
		case KeyEvent.VK_LEFT:
			if(tp.x<0){
				tp.right();
			}
			break;
			//如果要往右看,那么背景图片要往左移动,
			//图片的坐标x大于(图片的宽减去窗口的宽)时,背景图片才能往左移动
		case KeyEvent.VK_RIGHT:
			if(tp.x>-(w-Hufan.hufan.getW())){
				tp.left();
			}
			break;
		}
		this.repaint();//刷新界面
	}
	@Override
	public void keyReleased(KeyEvent arg0) {}
	@Override
	public void keyTyped(KeyEvent arg0) {}
}
class TuPian{
//	int w=1680;//图片的宽度
//	int h=1050;//图片的高度
	int x;//图片的x坐标
	int y;//图片的y坐标
	int speed=5;//图片移动的速度
	public void up(){//向上移动
		y=y-speed;
	}
	public void down(){//向下移动
		y=y+speed;
	}
	public void left(){//向左移动
		x=x-speed;
	}
	public void right(){//向右移动
		x=x+speed;
	}
}


 

你可能感兴趣的:(Java仿游戏滚屏)