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

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

下面是源程序

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) { 	} } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值