⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hstank2.java

📁 用java写的坦克对战游戏,主要功能已经实现,但没有做碰撞处理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* 这是一个坦克游戏  4.12 
 * 没有做碰撞技术处理  进入游戏后方向键控制方向  空格键发弹 
 * 不建议看源代码 
 * 因为本人刚写完后看着都头晕 
 */ 
import java.awt.* ; 
import javax.swing.* ; 
import java.awt.event.*; 
import java.util.EventListener; 

public class HsTank2 extends JFrame 
{ 
	HsTank2(String title) 
	{ 
		this.setTitle(title) ; 
		this.setSize(608 , 630) ; 
		this.setLocation(300 , 100) ; 
		this.setBackground(Color.WHITE) ; 
		
		MyTank mp = new MyTank() ; 
		this.add(mp) ; 
		
		this.addKeyListener(mp) ; 
		
		new Thread(mp).start() ; 
	} 
	public static void main(String[] args) 
	{ 

		HsTank2 h = new HsTank2("坦克大战(版本1.0)") ; 
		
		h.setVisible(true) ; 
	} 
} 

//主战坦克 
class MyTank extends JPanel implements KeyListener , Runnable 
{ 

	int x = 280, y = 280 ;//坦克的初始位置 
	int op = 1 ;//坦克的移动方向 
	int color = 0 ; 
	int tankspeed = 8 ;//坦克的速度 
	int tankbullet = 8 ;//坦克的子弹速度 
	int tankfbullet = 4 ;//敌军的子弹速度 
	int shengming = 100 ;//生命 
	int fenshu = 0 ; 
	int nandu = 5 ; //设置游戏难度 
	
	//子弹 
	int dx = 295 , dy = 295 ; 
	int dx1 = 295 , dy1 = -10 ;  
	int dx2 = 600 , dy2 = 295 ;  
	int dx3 = 295 , dy3 = 600 ;  
	int dx4 = -10 , dy4 = 295 ;   
	
	//敌军坦克 
	int num = 10 ;//敌军坦克数量,不能修改 
	int[] xf = new int[num] ; 
	int[] yf = new int[num] ; 
	int[] opf = new int[num] ;  
	
	int[] dxf = new int[num] ; 
	int[] dyf = new int[num] ; 
	
	int[] dxf1 = new int[num] ; 
	int[] dyf1 = new int[num] ; 
	int[] dxf2 = new int[num] ; 
	int[] dyf2 = new int[num] ; 
	int[] dxf3 = new int[num] ; 
	int[] dyf3 = new int[num] ; 
	int[] dxf4 = new int[num] ; 
	int[] dyf4 = new int[num] ; 

	//构造函数,初始化敌军坦克的位置和状态 
	MyTank() 
	{ 
		for (int i = 0; i<num; i++) 
		{ 
			xf[i] = (int) (Math.random() * 560) ; 
			yf[i] = (int) (Math.random() * 560) ; 
			dxf[i] = xf[i] + 15 ;  
			dyf[i] = yf[i] + 15 ; 
		} 
		
		for (int i = 0; i<num; i++) 
		{ 
			dxf1[i] = 295 ; dyf1[i] = -10 ;  
			dxf2[i] = 600 ; dyf2[i] = 295 ;  
			dxf3[i] = 295 ; dyf3[i] = 600 ;  
			dxf4[i] = -10 ; dyf4[i] = 295 ;  
		} 
	} 

//主面版 
public void paint(Graphics g) 
{ 
	super.paint(g) ; 
	this.setBackground(Color.WHITE) ; 
	
	g.setColor(Color.red) ; 
	g.drawString("生命:" , 10 , 20 ) ; 
	g.fillRect(50 , 10 , shengming * 5 , 10) ; 
	g.drawRect(50 , 10 , 500 , 10) ; 
	
	g.drawString("得分:  "+ fenshu , 10 , 40) ; 
	
	
	if(op == 1) 
	{ 
		g.setColor(Color.red) ; 
		g.fillRect(x , y , 40 , 40) ; 
	
		switch (color % 6) 
		{ 
		     case 0: g.setColor(Color.blue) ; break; 
		     case 1: g.setColor(Color.yellow) ; break; 
		     case 2: g.setColor(Color.red) ; break; 
		     case 3: g.setColor(Color.orange) ; break; 
		     case 4: g.setColor(Color.green) ; break; 
		     case 5: g.setColor(Color.black) ; break; 
		} 
		g.fillOval(x - 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 5 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 15 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 25 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 35 , 10 , 10) ; 
		
		g.fillOval(x + 35 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 15 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 25 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 35 , 10 , 10) ; 
		
		g.setColor(Color.black) ; 
		g.fillRect(x + 15 , y - 20 , 10 , 40) ; 
		switch (color % 20) 
		{ 
		     case 0: g.setColor(Color.white) ; break; 
		     case 1: g.setColor(Color.white) ; break; 
		     case 2: g.setColor(Color.white) ; break; 
		     case 3: g.setColor(Color.white) ; break; 
		     case 4: g.setColor(Color.white) ; break; 
		     case 5: g.setColor(Color.white) ; break; 
		     case 6: g.setColor(Color.white) ; break; 
		     case 7: g.setColor(Color.white) ; break; 
		     case 8: g.setColor(Color.white) ; break; 
		     case 9: g.setColor(Color.white) ; break; 
		     
		     case 10: g.setColor(Color.black) ; break; 
		     case 11: g.setColor(Color.black) ; break; 
		     case 12: g.setColor(Color.black) ; break; 
		     case 13: g.setColor(Color.black) ; break; 
		     case 14: g.setColor(Color.black) ; break; 
		     case 15: g.setColor(Color.black) ; break; 
		     case 16: g.setColor(Color.black) ; break; 
		     case 17: g.setColor(Color.black) ; break; 
		     case 18: g.setColor(Color.black) ; break; 
		     case 19: g.setColor(Color.black) ; break;      
		} 
		g.fillOval(x + 5 , y + 30 , 10 , 10) ; 
		g.fillOval(x + 25 , y + 30 , 10 , 10) ; 

  	} 

	if(op == 2) 
	{ 
		g.setColor(Color.green) ; 
		g.fillRect(x , y , 40 , 40) ; 
	
		switch (color % 6) 
		{ 
		     case 0: g.setColor(Color.blue) ; break; 
		     case 1: g.setColor(Color.yellow) ; break; 
		     case 2: g.setColor(Color.red) ; break; 
		     case 3: g.setColor(Color.orange) ; break; 
		     case 4: g.setColor(Color.green) ; break; 
		     case 5: g.setColor(Color.black) ; break; 
		} 
		g.fillOval(x - 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 15 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 25 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y - 5 , 10 , 10) ; 
		
		g.fillOval(x - 5 , y+35 , 10 , 10) ; 
		g.fillOval(x + 5 , y+35 , 10 , 10) ; 
		g.fillOval(x + 15 , y+35 , 10 , 10) ; 
		g.fillOval(x + 25 , y+35 , 10 , 10) ; 
		g.fillOval(x + 35 , y+35 , 10 , 10) ; 
		
		g.setColor(Color.black) ; 
		g.fillRect(x + 20 , y + 15 , 40 , 10) ; 
		switch (color % 20) 
		{ 
		     case 0: g.setColor(Color.white) ; break; 
		     case 1: g.setColor(Color.white) ; break; 
		     case 2: g.setColor(Color.white) ; break; 
		     case 3: g.setColor(Color.white) ; break; 
		     case 4: g.setColor(Color.white) ; break; 
		     case 5: g.setColor(Color.white) ; break; 
		     case 6: g.setColor(Color.white) ; break; 
		     case 7: g.setColor(Color.white) ; break; 
		     case 8: g.setColor(Color.white) ; break; 
		     case 9: g.setColor(Color.white) ; break; 
		     
		     case 10: g.setColor(Color.black) ; break; 
		     case 11: g.setColor(Color.black) ; break; 
		     case 12: g.setColor(Color.black) ; break; 
		     case 13: g.setColor(Color.black) ; break; 
		     case 14: g.setColor(Color.black) ; break; 
		     case 15: g.setColor(Color.black) ; break; 
		     case 16: g.setColor(Color.black) ; break; 
		     case 17: g.setColor(Color.black) ; break; 
		     case 18: g.setColor(Color.black) ; break; 
		     case 19: g.setColor(Color.black) ; break;      
		} 
		g.fillOval(x , y + 5 , 10 , 10) ; 
		g.fillOval(x , y + 25 , 10 , 10) ; 
	
	
	} 
	if(op == 3) 
	{ 
		g.setColor(Color.blue) ; 
		g.fillRect(x , y , 40 , 40) ; 
	
		switch (color % 6) 
		{ 
		     case 0: g.setColor(Color.blue) ; break; 
		     case 1: g.setColor(Color.yellow) ; break; 
		     case 2: g.setColor(Color.red) ; break; 
		     case 3: g.setColor(Color.orange) ; break; 
		     case 4: g.setColor(Color.green) ; break; 
		     case 5: g.setColor(Color.black) ; break; 
		} 
		g.fillOval(x - 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 5 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 15 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 25 , 10 , 10) ; 
		g.fillOval(x - 5 , y + 35 , 10 , 10) ; 
		
		g.fillOval(x + 35 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 15 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 25 , 10 , 10) ; 
		g.fillOval(x + 35 , y + 35 , 10 , 10) ; 
		
		g.setColor(Color.black) ; 
		g.fillRect(x + 15 , y + 20 , 10 , 40) ; 
		switch (color % 20) 
		{ 
		     case 0: g.setColor(Color.white) ; break; 
		     case 1: g.setColor(Color.white) ; break; 
		     case 2: g.setColor(Color.white) ; break; 
		     case 3: g.setColor(Color.white) ; break; 
		     case 4: g.setColor(Color.white) ; break; 
		     case 5: g.setColor(Color.white) ; break; 
		     case 6: g.setColor(Color.white) ; break; 
		     case 7: g.setColor(Color.white) ; break; 
		     case 8: g.setColor(Color.white) ; break; 
		     case 9: g.setColor(Color.white) ; break; 
		     
		     case 10: g.setColor(Color.black) ; break; 
		     case 11: g.setColor(Color.black) ; break; 
		     case 12: g.setColor(Color.black) ; break; 
		     case 13: g.setColor(Color.black) ; break; 
		     case 14: g.setColor(Color.black) ; break; 
		     case 15: g.setColor(Color.black) ; break; 
		     case 16: g.setColor(Color.black) ; break; 
		     case 17: g.setColor(Color.black) ; break; 
		     case 18: g.setColor(Color.black) ; break; 
		     case 19: g.setColor(Color.black) ; break;      
		} 
		g.fillOval(x + 5 , y , 10 , 10) ; 
		g.fillOval(x + 25 , y , 10 , 10) ; 
	
	
	} 
	if(op == 4) 
	{ 
		g.setColor(Color.yellow) ; 
		g.fillRect(x , y , 40 , 40) ; 
		
		switch (color % 6) { 
		     case 0: g.setColor(Color.blue) ; break; 
		     case 1: g.setColor(Color.yellow) ; break; 
		     case 2: g.setColor(Color.red) ; break; 
		     case 3: g.setColor(Color.orange) ; break; 
		     case 4: g.setColor(Color.green) ; break; 
		     case 5: g.setColor(Color.black) ; break; 
		    } 
		g.fillOval(x - 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 5 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 15 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 25 , y - 5 , 10 , 10) ; 
		g.fillOval(x + 35 , y - 5 , 10 , 10) ; 
		
		g.fillOval(x - 5 , y+35 , 10 , 10) ;  
		g.fillOval(x + 5 , y+35 , 10 , 10) ; 
		g.fillOval(x + 15 , y+35 , 10 , 10) ; 
		g.fillOval(x + 25 , y+35 , 10 , 10) ; 
		g.fillOval(x + 35 , y+35 , 10 , 10) ; 
		
		g.setColor(Color.black) ; 
		g.fillRect(x - 20 , y + 15 , 40 , 10) ; 
		switch (color % 20) 
		{ 
		     case 0: g.setColor(Color.white) ; break; 
		     case 1: g.setColor(Color.white) ; break; 
		     case 2: g.setColor(Color.white) ; break; 
		     case 3: g.setColor(Color.white) ; break; 
		     case 4: g.setColor(Color.white) ; break; 
		     case 5: g.setColor(Color.white) ; break; 
		     case 6: g.setColor(Color.white) ; break; 
		     case 7: g.setColor(Color.white) ; break; 
		     case 8: g.setColor(Color.white) ; break; 
		     case 9: g.setColor(Color.white) ; break; 
		     
		     case 10: g.setColor(Color.black) ; break; 
		     case 11: g.setColor(Color.black) ; break; 
		     case 12: g.setColor(Color.black) ; break; 
		     case 13: g.setColor(Color.black) ; break; 
		     case 14: g.setColor(Color.black) ; break; 
		     case 15: g.setColor(Color.black) ; break; 
		     case 16: g.setColor(Color.black) ; break; 
		     case 17: g.setColor(Color.black) ; break; 
		     case 18: g.setColor(Color.black) ; break; 
		     case 19: g.setColor(Color.black) ; break;      
		} 
		g.fillOval(x + 30 , y + 5 , 10 , 10) ; 
		g.fillOval(x + 30 , y + 25 , 10 , 10) ; 
	} 
	g.setColor(Color.black) ; 
	g.fillOval(dx , dy , 10 , 10) ; 
	g.fillOval(dx1 , dy1 , 10 , 10) ; 
	g.fillOval(dx2 , dy2 , 10 , 10) ; 
	g.fillOval(dx3 , dy3 , 10 , 10) ; 
	g.fillOval(dx4 , dy4 , 10 , 10) ; 

	for (int i = 0; i<num; i++) 
	{ 
		if(opf[i] == 1) 
		{ 
			g.fillRect(xf[i] , yf[i] , 40 , 40) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 15 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 25 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillOval(xf[i] + 35 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 15 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 25 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillRect(xf[i] + 15 , yf[i] - 20 , 10 , 40) ; 
			
			g.fillOval(xf[i] + 5 , yf[i] + 30 , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] + 30 , 10 , 10) ; 
		} 
		if(opf[i] == 2) 
		{ 
		
			g.fillRect(xf[i] , yf[i] , 40 , 40) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 15 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] - 5 , 10 , 10) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 5 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 15 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillRect(xf[i] + 20 , yf[i] + 15 , 40 , 10) ; 
			
			g.fillOval(xf[i] , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] , yf[i] + 25 , 10 , 10) ; 
		
		
		} 
		if(opf[i] == 3) 
		{ 
			g.fillRect(xf[i] , yf[i] , 40 , 40) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 15 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 25 , 10 , 10) ; 
			g.fillOval(xf[i] - 5 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillOval(xf[i] + 35 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 15 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 25 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillRect(xf[i] + 15 , yf[i] + 20 , 10 , 40) ; 
			
			g.fillOval(xf[i] + 5 , yf[i] , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] , 10 , 10) ; 
		
		
		} 
		if(opf[i] == 4) 
		{ 
			g.fillRect(xf[i] , yf[i] , 40 , 40) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 5 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 15 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] - 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] - 5 , 10 , 10) ; 
			
			g.fillOval(xf[i] - 5 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 5 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 15 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 25 , yf[i] + 35 , 10 , 10) ; 
			g.fillOval(xf[i] + 35 , yf[i] + 35 , 10 , 10) ; 
			
			g.fillRect(xf[i] - 20 , yf[i] + 15 , 40 , 10) ; 
			g.fillOval(xf[i] + 30 , yf[i] + 5 , 10 , 10) ; 
			g.fillOval(xf[i] + 30 , yf[i] + 25 , 10 , 10) ; 
		} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -