📄 tankclient.java
字号:
package tank;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JOptionPane;
import tank.Tank.Direction;
public class TankClient extends Frame {
Image tp=null;
Zid zid=null;
Tank myTank=new Tank(520,550,Tank.Direction.STOP,this,true);
ArrayList bullets=new ArrayList();
ArrayList enemy=new ArrayList();
ArrayList explodes=new ArrayList();
ArrayList walls=new ArrayList();
ArrayList dj=new ArrayList();
ArrayList ditulist=new ArrayList();
PainThread t;
Thread thread;
int huanlife=0;
int zidsudux=10;
int zidsuduy=10;
int zidsuducount=0;
int husheng=0;
int hushengcount=0;
int superZid=3;
int fenshu=0;
boolean flaga=true;
int q=0;
int gai=0;
int gai1=0;
int open=0;
int count=0; int ppt=50;
int clera=0;
int tanjieshu=0;
public void guan(){
thread.suspend();
}
public void kai(){
thread.resume();
}
public void frame(){
myTank.setDir(Direction.STOP);
myTank.l=false;myTank.u=false;myTank.r=false;myTank.d=false;
myTank.gunDir=Direction.U;
JOptionPane.showMessageDialog(this,"游戏已结束!");
gai1=0;
huanlife=0;
tanjieshu=0;
zidsuducount=0;
fenshu=0;
flaga=false;
gb=0;
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
myTank.life=true;
myTank.x=520;myTank.y=550;
myTank.img=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
this.superZid=3;
myTank.superZid=3;
count=0;
bullets.clear();
clera=1;
enemy.clear();
explodes.clear();
walls.clear();
dj.clear();
lopad();
flaga=true;
}
public void TestFram(){
this.setTitle("坦克大战");
this.setSize(750,600);
this.setLocation(200,60);
this.setVisible(true);
t=new PainThread();
thread=new Thread(t);
thread.start();
Cunditu Cdt=new Cunditu(this);
lopad();
this.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
this.addKeyListener(new KeyMoniter());
explodes.add(new Explode(1000,1000));//先放一炮加载
}
int gb=0;
boolean bla=true;
public void del(int i,Zid zid)
{ this.zid=zid;
int wallshu=((Wall)walls.get(i)).shu;
if(wallshu==2)
{ myTank.setDir(Direction.STOP);
myTank.setGunDir(Direction.U);
walls.remove(i);
bla=false;
}else{
bla=true;
}
if(bla)
{
if(flaga)
{ if(wallshu==1||wallshu==8)
walls.remove(i);
if(zid.good)
{
if(gb==1){
if(wallshu==6)
walls.remove(i);
}
}
}else{
if((wallshu!=8)&&(wallshu!=3)&&(wallshu!=7)&&(wallshu!=6))
{
walls.remove(i);
}
}
}
}
public void goujimiaoshan(int open)
{
this.open=open;
}
public void paset()
{
myTank.setDir(Direction.STOP);
myTank.l=false;myTank.u=false;myTank.r=false;myTank.d=false;
myTank.gunDir=Direction.U;
JOptionPane.showMessageDialog(this,"恭喜你已过关");
myTank.life=true;
myTank.x=520;myTank.y=550;
myTank.img=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
j1++;
if(j1==6){
j1=0;
}
bullets.clear();
enemy.clear();
explodes.clear();
walls.clear();
dj.clear();
count=0; q=0; gai1=0;
gai=0;
lopad();
flaga=true;
}
public void paint(Graphics g) {
drawMaps(g);
g.drawString("大保险:"+superZid, 670, 50);
g.drawString("分数:"+fenshu, 590, 50);
myTank.draw(g);
for(int i=0;i<bullets.size();i++)
{
Zid b=(Zid)bullets.get(i);
if(b.good)
{
zidsuducount();
}else{
zidsudux=10;
zidsuduy=10;
}
b.draw(g,zidsudux,zidsuduy);
}
for(int i=0;i<enemy.size();i++){
Tank tank=(Tank)enemy.get(i);
for(int j=0;j<enemy.size();j++)
{
if(tank.zhangtk((Tank)enemy.get(j)))
{
tank.stop();
((Tank)enemy.get(j)).stop();
}
}
if(tank.zhangtk(myTank))
{
tank.stop();
myTank.stop();
}
tank.draw(g);
}
for(int i=0;i<explodes.size();i++)
{
Explode e=(Explode)explodes.get(i);
if(e!=null && e.life)
{
e.draw(g);
}
if(!e.life)
{
explodes.remove(e);
}
}
if((enemy.size()==0&&count<2))
{
for(int i=0;i<10;i++)
{
enemy.add(new Tank(50+55*i,50,this,false,i));
}
count++;
}
if((count==2)&&(enemy.size()==0)&&q==0){
q=1;
paset();
}
for(int i=0;i<dj.size();i++)
{
Csqj qj=(Csqj)dj.get(i);
qj.draw(g);
}
}
boolean kk=true;
public void ox(int i){
if(kk)
walls.remove(i);
}
public void update(Graphics g) {
if(tp == null) {
tp = this.createImage(800, 600);
}
Graphics gOffScreen = tp.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.green);
gOffScreen.fillRect(0, 0, 800, 600);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(tp, 0, 0, null);
if(husheng==1){
if(hushengcount==600)
{
husheng=0;
hushengcount=0;
}
hushengcount++;
}
}
int j1=0;
public void lopad()
{
for(int i=0;i<12;i++)
{
for(int j=0;j<15;j++)
{
if(((int[][])ditulist.get(j1))[i][j]==1)
{ if(gai1==0){
if(gai!=1){
walls.add(new Wall(j*50,i*50,1,gai,this));
}
}
}
else if(((int[][])ditulist.get(j1))[i][j]==2)
{ if(gai1==0){
if(gai!=1){
walls.add(new Wall(j*50,i*50,2,gai,this));
}
}
}
else if(((int[][])ditulist.get(j1))[i][j]==3)
{ if(gai1==0){
if(gai!=1)
walls.add(new Wall(j*50,i*50,3,gai,this));
}
}
else if(((int[][])ditulist.get(j1))[i][j]==8)
{
walls.add(new Wall(j*50,i*50,8,gai,this));
}
else if(((int[][])ditulist.get(j1))[i][j]==6)
{ if(gai1==0){
if(gai!=1)
walls.add(new Wall(j*50,i*50,6,gai,this));
}
}
else if(((int[][])ditulist.get(j1))[i][j]==7)
{ if(gai1==0){
if(gai!=1)
walls.add(new Wall(j*50,i*50,7,gai,this));
}
}
}
}
}
public void gaiditu(int gai)
{
this.gai=gai;
}
public void drawMaps(Graphics g)
{
for(int i=0;i<walls.size();i++){
Wall wals=(Wall)walls.get(i);
wals.draw(g);
}
}
public static void main(String[] args) {
TankClient frame=new TankClient();
frame.TestFram();
}
public static void zddeldj(TankClient frame){
for(int j=0;j<frame.dj.size();j++)
{ for(int i=0;i<4;i++)
{
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
frame.dj.remove(j);
}
}
public void zidsuducount()
{ if(zidsuducount==1)
{
this.zidsudux=20;
this.zidsuduy=20;
}
}
public class PainThread implements Runnable{
public void run() {
while(true){
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
class KeyMoniter extends KeyAdapter{
public void keyPressed(KeyEvent e) {
myTank.keyPressed(e);
}
public void keyReleased(KeyEvent e) {
myTank.keyReleased(e);
}
}
public boolean isFlaga() {
return flaga;
}
public void setFlaga(boolean flaga) {
this.flaga = flaga;
}
public void huanlife()
{
if(husheng==0)
{
if(huanlife==0)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life1.gif"));
huanlife=1;
}
else if(huanlife==1)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life2.gif"));
huanlife=2;
}
else if(huanlife==2)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life3.gif"));
huanlife=3;
}
else if(huanlife==3&&tanjieshu==0)
{
myTank.life=false;
tanjieshu=1;
this.gai=0;
this.gai1=0;
frame();
}
}
}
public void addlife()
{
if(huanlife==0)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
huanlife=0;
}
else if(huanlife==1)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
huanlife=0;
}
else if(huanlife==2)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life1.gif"));
huanlife=1;
}
else if(huanlife==3)
{
myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life2.gif"));
huanlife=2;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -