【Java】编写一个较为简单的坦克大战游戏

【Java】编写一个较为简单的坦克大战游戏

目的

编写一个较为简单的坦克大战游戏,开发坦克大战游戏界面,实现通过上下左右键控制绿色坦克的移动,通过1,2,3,4键控制敌方坦克的移动。

代码

package login;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class tank extends JFrame implements KeyListener
{
	static Graphics g ;
	ImageIcon tank1=new ImageIcon("C:\\Users\\LENOVO\\Pictures\\pic\\p1tankD.gif");
	Image tt1=tank1.getImage();
	ImageIcon tank2=new ImageIcon("C:\\Users\\LENOVO\\Pictures\\pic\\enemy2U.gif");
	Image tt2=tank2.getImage();
	int x1=200;
	int y1=200;
	int x2=100;
	int y2=100;
	public tank()
	{
		setTitle("坦克大战");
		setSize(650,650);
		setBackground(Color.lightGray);
		setLocation(400,200);
		setVisible(true);
		setLayout(new BorderLayout());
		
	
		//四面墙
		JPanel s1=new JPanel();
		JPanel s2=new JPanel();
		JPanel s3=new JPanel();
		JPanel s4=new JPanel();
		s1.setLayout(new GridLayout(1,10));
		s2.setLayout(new GridLayout(1,10));
		s3.setLayout(new GridLayout(10,1));
		s4.setLayout(new GridLayout(10,1));
		ImageIcon wall=new ImageIcon("C:\\Users\\LENOVO\\Pictures\\pic\\steels.gif");
		for(int i=0;i<10;i++)
		{
			s1.add(new JLabel(wall));
			s2.add(new JLabel(wall));
			s3.add(new JLabel(wall));
			s4.add(new JLabel(wall));
		}
		add(s1,"South");
		add(s2,"North");
		add(s3,"West");
		add(s4,"East");
		
		
		//注册键盘监听
		this.addKeyListener(this);
		
	}
	
	//画坦克
	public void paint(Graphics g)
	{
		super.paint(g);
		g.drawImage(tt1, x1,y1,this);
		g.drawImage(tt2, x2,y2,this);
	}
	public void keyReleased(KeyEvent e){}
	public void keyTyped(KeyEvent e){}
	public void keyPressed(KeyEvent e)
	{
		int key =e.getKeyCode();
		switch(key){
		case KeyEvent.VK_UP:  //向上

			{y1-=10;this.repaint(); break;}

		case KeyEvent.VK_DOWN:  //向下

			{y1+=10;this.repaint(); break;}

		case KeyEvent.VK_LEFT:  //向左

			{x1-=10;this.repaint(); break;}

		case KeyEvent.VK_RIGHT:  //向右

			{x1+=10;this.repaint(); break;}
		case KeyEvent.VK_2:  //向上

			{y2-=10;this.repaint(); break;}

		case KeyEvent.VK_3:  //向下

			{y2+=10;this.repaint(); break;}

		case KeyEvent.VK_1:  //向左

			{x2-=10;this.repaint(); break;}

		case KeyEvent.VK_4:  //向右

			{x2+=10;this.repaint(); break;}
		}
	}
	public static void main(String args[])
	{
		tank t=new tank();
		t.paint(g);
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值