分享一个坦克发射炮弹击中目标的程序

一共两辆坦克,发射炮弹会有声音

下面是源程序

package com.cn.testy;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.net.URI;
import java.net.URL;

import javax.swing.JFrame;
import javax.swing.JPanel;
public class CSprjWilliam {

	public static void main(String args[]) {

		JFrame w = new JFrame();

		w.setSize(3000, 3000);
		MyPanel4 mp = new MyPanel4();
		w.add(mp);
		w.addKeyListener(mp);
		mp.addKeyListener(mp);
		Thread t = new Thread(mp);
		t.start();
		w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		w.dispose();
		w.setVisible(true);

	}
}

class MyPanel4 extends JPanel implements Runnable, KeyListener {
	int a = 200, b = 0, x1=433, y1=80  ,x=0,y=0;   //x1,y1子弹的位置   x,y坦克位置
	boolean show = false;//子弹
	boolean show1 = true;// 目标
	boolean bShooted = false; //敌方坦克是否被击中
	URI uri;
	URL url; 
	File  file;


	public void paint(Graphics g) {
		super.paint(g);

		Image bgimage = Toolkit.getDefaultToolkit().getImage("src/battle.png");
		g.drawImage(bgimage, 0, 0, 2000, 1500, this);
		g.setColor(new Color(0, 0, 255));

		g.setColor(Color.GRAY);
		g.fillRect(a+50,b+ 0, 20, 30);// 第一辆的履带灰

		g.fillRect(a+82, b+0, 20, 30);
		g.fillRect(a+114, b+ 0, 20, 30);
		g.fillRect(a+146, b+0, 20, 30);
		g.fillRect(a+178, b+0, 20, 30);
		g.fillRect(a+210,b+ 0, 20, 30);
		g.fillRect(a+242,b+ 0, 20, 30);
		g.fillRoundRect(a+250,b+ 0, 30, 30, 15, 15);//第一辆的履带头尾部
		g.fillRoundRect(a+30, b+0, 30, 30,15,15);

		g.setColor(Color.black);
		g.fillRect(a+70, b+0, 12, 30);//第一辆坦克履带黑
		g.fillRect(a+102, b+0, 12, 30);
		g.fillRect(a+134, b+0, 12, 30);
		g.fillRect(a+166, b+0, 12, 30);
		g.fillRect(a+198, b+0, 12, 30);
		g.fillRect(a+230, b+0, 12, 30);

		g.setColor(Color.ORANGE);
		g.fillRect(a+50, b+150, 20, 30);//第一辆坦克履带黄
		g.fillRect(a+82, b+150, 20, 30);
		g.fillRect(a+114, b+150, 20, 30);
		g.fillRect(a+146, b+150, 20, 30);
		g.fillRect(a+178, b+150, 20, 30);
		g.fillRect(a+210,b+ 150, 20, 30);
		g.fillRect(a+242, b+150, 20, 30);

		g.fillRoundRect(a+30,b+150, 30, 30,15,15);
		g.fillRoundRect(a+250, b+150, 30, 30, 15, 15);

		g.setColor(Color.black);
		g.fillRect(a+70, b+150, 12, 30);
		g.fillRect(a+102, b+150, 12, 30);
		g.fillRect(a+134, b+150, 12, 30);
		g.fillRect(a+166, b+150, 12, 30);
		g.fillRect(a+198, b+150, 12, 30);
		g.fillRect(a+230, b+150, 12, 30);

		g.setColor(Color.DARK_GRAY);

		g.fillRoundRect(a+55,b+ 15, 220, 150, 130, 130);
		g.fillRect(a+145, b+80, 300,30 );
		g.fillOval(a+438,b+80 , 30, 30);
		{if (!bShooted && Math.abs(1600-x1)<=90 && Math.abs((y+250)-y1)<=20 * 14) {
			bShooted = true;
			//show1=false;
			show = false; 
			x1=433+a;
			y1=80+b;  //子弹重新置位
			if (show =false) {
				super.paint(g);
				Image cgimage = Toolkit.getDefaultToolkit().getImage("src/test.png");
				g.drawImage(cgimage, 30, 30, 300, 3000, this);

			}
		}

		if (show1 ==true) {
			// 目标
			y+=1;
			g.setColor(Color.RED);
			g.fillRect(x+1600, y+50, 30, 20);//第二辆坦克
			g.fillRect(x+1600, y+82, 30, 20);
			g.fillRect(x+1600, y+114, 30, 20);
			g.fillRect(x+1600, y+146, 30, 20);
			g.fillRect(x+1600, y+178, 30, 20);
			g.fillRect(x+1600, y+210, 30, 20);
			g.fillRect(x+1600, y+242, 30, 20);
			g.fillRoundRect(x+1600,y+250, 30, 30, 15, 15);//第二辆坦克履带头尾部
			g.fillRoundRect(x+1600, y+30, 30, 30,15,15);
			g.fillRect(x+1600, y+70, 30, 12);//第二辆坦克履带
			g.fillRect(x+1600, y+102, 30, 12);
			g.fillRect(x+1600, y+134, 30, 12);
			g.fillRect(x+1600, y+166, 30, 12);
			g.fillRect(x+1600, y+198, 30, 12);
			g.fillRect(x+1600, y+230, 30, 12);
			g.setColor(Color.gray);
			g.fillRect(x+1750, y+50, 30, 20);
			g.fillRect(x+1750, y+82, 30, 20);
			g.fillRect(x+1750, y+114, 30, 20);
			g.fillRect(x+1750, y+146, 30, 20);
			g.fillRect(x+1750, y+178, 30, 20);
			g.fillRect(x+1750, y+210, 30, 20);
			g.fillRect(x+1750, y+242, 30, 20);
			g.fillRoundRect(x+1750,y+30, 30, 30,15,15);
			g.fillRoundRect(x+1750, y+250, 30, 30, 15, 15);


			g.setColor(Color.black);

			g.fillRect(x+1750, y+70, 30, 12);
			g.fillRect(x+1750, y+102, 30, 12);
			g.fillRect(x+1750, y+134, 30, 12);
			g.fillRect(x+1750, y+166, 30, 12);
			g.fillRect(x+1750, y+198, 30, 12);
			g.fillRect(x+1750, y+230, 30, 12);
			g.fillRect(x+1600, y+70, 30, 12);
			g.fillRect(x+1600, y+102, 30, 12);
			g.fillRect(x+1600, y+134, 30, 12);
			g.fillRect(x+1600, y+166, 30, 12);
			g.fillRect(x+1600, y+198, 30, 12);
			g.fillRect(x+1600, y+230, 30, 12);


			g.setColor(Color.DARK_GRAY);
			g.fillRoundRect(x+1615,y+ 55, 150, 220, 130, 130);
			g.fillRect(x+1680, y+145, 30,300 );

			g.fillOval(x
					+1680,y+438 , 30,30);

		}
		}


		if (show == true) {
			g.setColor(new Color(0, 0, 255));
			g.fillOval(x1, y1, 300, 30);//子弹
			x1+=50;			
		}

	}

	public void run() {
		while (true) {
			try {
				Thread.sleep(10);

			} catch (Exception e) {
			}
			repaint();
		}
	}

	public void keyTyped(KeyEvent e) {
	}
	public void sound(){
		try{

          //加载路径
			file=new File("C:/Users/Administrator/Desktop/5972.wav");
			//  uri = file.toURI();
			url =file.toURL(); //解析路径
			AudioClip clip;
			clip = Applet.newAudioClip(url);
			clip.play();
			//aau.loop();
			//aau.stop();
		}catch (Exception e) {
			// TODO: handle exception
		}

	}


	public void keyPressed(KeyEvent e) {

		if (e.getKeyCode() == KeyEvent.VK_LEFT) {
			a -=40;
			x1-=40;
		}

		if (e.getKeyCode() == KeyEvent.VK_UP) {
			b -=40;
			y1-=40;
		}
		if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
			a +=40;
			x1+=40;
		}
		if (e.getKeyCode() == KeyEvent.VK_DOWN) {
			b +=40;
			y1+=40;
		}

		if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
			bShooted = false;
			show1 = true;
			y = 0;
		}

		repaint();
		if (e.getKeyCode() == KeyEvent.VK_SPACE) {
			show = true;
			x1=433+a;
			y1=80+b;
			sound();
		}}


	public void keyReleased(KeyEvent e) {
	}
}

发布了70 篇原创文章 · 获赞 1 · 访问量 418

猜你喜欢

转载自blog.csdn.net/zhupengqq1/article/details/103954099