Java——坦克大战(1)

接下来,将学习完成一个坦克大战游戏项目,进度可能很慢,但尽可能的完善它。

本次要点:利用绘图讲述画出简易坦克,并用事件处理让其移动起来。(代码不完善,坦克只能正常向上走,左右只能横着走,向下倒着走,且会冲出边界)

package com.test.tank;

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

public class TankGame extends JFrame{
	
	MyPanel mp = null;
	
	public static void main(String[] args) {
		TankGame test = new TankGame();

	}
		
		//构造函数
	public TankGame(){
		mp = new MyPanel();
		
		this.add(mp);
		this.addKeyListener(mp);
		
		this.setSize(400, 300);
		this.setTitle("坦克大战");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}
	

}

class MyPanel extends JPanel implements KeyListener{
	//定义我的坦克
	Hero hero = null;
	int x = 190; 
	int y = 235;
	public MyPanel(){
		hero = new Hero(x, y);
	}
	
	//重写paint方法
	public void paint(Graphics g){
		super.paint(g);
		g.fillRect(0, 0, 400, 300);
		
		//调用画坦克函数
		this.drawTank(x, y, g, 0, 0);
		
	}
	//画坦克函数
	public void drawTank(int x, int y, Graphics g, int direct, int type){
			//判断坦克类型
		switch	(type){
		case 0:
			g.setColor(Color.CYAN);
			break;
		case 1:
			g.setColor(Color.GREEN);
			break;
		}
			判断坦克方向
		switch (direct){
		case 0:
			g.setColor(Color.CYAN);
			g.fill3DRect(x, y, 5, 30, false);
			g.fill3DRect(x+5, y+5, 10, 20, false);
			g.fillOval(x+4, y+10, 10, 10);
			g.drawLine(x+10, y+10, x+10, y);
			g.fill3DRect(x+15, y, 5, 30, false);
			break;
		}
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO 自动生成的方法存根
		if(e.getKeyCode() == KeyEvent.VK_UP){
			y-=2;
		}else if((e.getKeyCode() == KeyEvent.VK_DOWN)){
			y+=2;
		}else if((e.getKeyCode() == KeyEvent.VK_LEFT)){
			x-=2;
		}else if((e.getKeyCode() == KeyEvent.VK_RIGHT)){
			x+=2;
		}
		this.repaint();
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO 自动生成的方法存根
		
	}
	
}

class Tank{
	//坦克横、纵坐标 
	int x = 0;	
	int y = 0;	
	
	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public Tank(int x, int y){
		this.x = x; 
		this.y = y;
	}
}

class Hero extends Tank{
	public Hero (int x, int y){
		super(x, y);
	}
}



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值