📄 hstank2.java
字号:
/* 这是一个坦克游戏 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) ;
}
g.fillOval(dxf1[i] , dyf1[i] , 10 , 10 ) ;
g.fillOval(dxf2[i] , dyf2[i] , 10 , 10 ) ;
g.fillOval(dxf3[i] , dyf3[i] , 10 , 10 ) ;
g.fillOval(dxf4[i] , dyf4[i] , 10 , 10 ) ;
}
}
public void keyTyped(KeyEvent e) {
}
//键盘控制坦克的移动,发弹
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -