/* |
* To change this license header, choose License Headers in Project Properties. |
* To change this template file, choose Tools | Templates |
* and open the template in the editor. |
*/ |
package tank; |
import java.util.Vector; |
class Tank { |
int x = 0 , y = 0 ; |
int fangxiang; |
int sudu = 9 ; |
boolean shengming = true ; |
public int getSudu() { |
return sudu; |
} |
public void setSudu( int sudu) { |
this .sudu = sudu; |
} |
public int getFangxiang() { |
return fangxiang; |
} |
public void setFangxiang( int fangxiang) { |
this .fangxiang = fangxiang; |
} |
public int getX() { |
return x; |
} |
public void setX( int x) { |
this .x = x; |
} |
public int getY() { |
return y; |
} |
public void setY( int y) { |
this .y = y; |
} |
public Tank( int x, int y) { |
this .x = x; |
this .y = y; |
} |
} |
class DiTank extends Tank implements Runnable { |
int sudu = 2 ; |
Vector<zidan> dzd = new Vector<>(); |
Vector<DiTank> dtk = new Vector<>(); |
public DiTank( int x, int y) { |
super (x, y); |
} |
public boolean huxiangpengzhuang() { |
boolean b = false ; |
switch ( this .fangxiang) { |
case 0 : |
for ( int i = 0 ; i < dtk.size(); i++) { |
DiTank dt = dtk.get(i); |
if (dt != this ) { |
if (dt.fangxiang == 0 || dt.fangxiang == 2 ) { |
if ( this .x > dt.x && this .x < dt.x + 20 && this .y >= dt.y && this .y <= dt.y + 30 ) { |
return true ; |
} |
if ( this .x + 20 >= dt.x && this .x + 20 <= dt.x + 20 && this .y >= dt.y && this .y <= dt.y + 30 ) { |
return true ; |
} |
} |
if (dt.fangxiang == 3 || dt.fangxiang == 1 ) { |
if ( this .x >= dt.x && this .x <= dt.x + 30 && this .y >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
if ( this .x + 20 >= dt.x && this .x + 20 <= dt.x + 30 && this .y >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
} |
} |
} |
case 1 : |
for ( int i = 0 ; i < dtk.size(); i++) { |
DiTank dt = dtk.get(i); |
if (dt != this ) { |
if (dt.fangxiang == 0 || dt.fangxiang == 2 ) { |
if ( this .x > dt.x && this .x < dt.x + 20 && this .y >= dt.y && this .y <= dt.y + 30 ) { |
return true ; |
} |
if ( this .x >= dt.x && this .x <= dt.x + 20 && this .y + 20 >= dt.y && this .y + 20 <= dt.y + 30 ) { |
return true ; |
} |
} |
if (dt.fangxiang == 3 || dt.fangxiang == 1 ) { |
if ( this .x >= dt.x && this .x <= dt.x + 30 && this .y >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
if ( this .x >= dt.x && this .x <= dt.x + 30 && this .y + 20 >= dt.y && this .y + 20 <= dt.y + 20 ) { |
return true ; |
} |
} |
} |
} |
case 2 : |
for ( int i = 0 ; i < dtk.size(); i++) { |
DiTank dt = dtk.get(i); |
if (dt != this ) { |
if (dt.fangxiang == 0 || dt.fangxiang == 2 ) { |
if ( this .x > dt.x && this .x < dt.x + 20 && this .y + 30 >= dt.y && this .y + 30 <= dt.y + 30 ) { |
return true ; |
} |
if ( this .x + 20 >= dt.x && this .x + 20 <= dt.x + 20 && this .y + 30 >= dt.y && this .y <= dt.y + 30 ) { |
return true ; |
} |
} |
if (dt.fangxiang == 3 || dt.fangxiang == 1 ) { |
if ( this .x >= dt.x && this .x <= dt.x + 30 && this .y + 30 >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
if ( this .x + 20 >= dt.x && this .x + 20 <= dt.x + 30 && this .y + 30 >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
} |
} |
} |
case 3 : |
for ( int i = 0 ; i < dtk.size(); i++) { |
DiTank dt = dtk.get(i); |
if (dt != this ) { |
if (dt.fangxiang == 0 || dt.fangxiang == 2 ) { |
if ( this .x + 30 > dt.x && this .x + 30 < dt.x + 20 && this .y >= dt.y && this .y <= dt.y + 30 ) { |
return true ; |
} |
if ( this .x + 30 >= dt.x && this .x + 30 <= dt.x + 20 && this .y + 20 >= dt.y && this .y + 20 <= dt.y + 30 ) { |
return true ; |
} |
} |
if (dt.fangxiang == 3 || dt.fangxiang == 1 ) { |
if ( this .x + 30 >= dt.x && this .x + 30 <= dt.x + 30 && this .y >= dt.y && this .y <= dt.y + 20 ) { |
return true ; |
} |
if ( this .x + 30 >= dt.x && this .x + 30 <= dt.x + 30 && this .y + 20 >= dt.y && this .y + 20 <= dt.y + 20 ) { |
return true ; |
} |
} |
} |
} |
break ; |
} |
return false ; |
} |
@Override |
public void run() { |
while ( true ) { |
switch ( this .fangxiang) { |
case 0 : |
for ( int i = 0 ; i < 30 ; i++) { |
if (y > 0 && !huxiangpengzhuang()) { |
y -= sudu; |
} |
try { |
Thread.sleep( 50 ); |
} catch (Exception e) { |
} |
} |
break ; |
case 1 : { |
for ( int i = 0 ; i < 30 ; i++) { |
if (x > 0 && !huxiangpengzhuang()) { |
x -= sudu; |
} |
try { |
Thread.sleep( 50 ); |
} catch (Exception e) { |
} |
} |
break ; |
} |
case 2 : { |
for ( int i = 0 ; i < 30 ; i++) { |
if (y < 250 && !huxiangpengzhuang()) { |
y += sudu; |
} |
try { |
Thread.sleep( 50 ); |
} catch (Exception e) { |
} |
} |
break ; |
} |
case 3 : { |
for ( int i = 0 ; i < 30 ; i++) { |
if (x < 360 && !huxiangpengzhuang() ) { |
x += sudu; |
} |
try { |
Thread.sleep( 50 ); |
} catch (Exception e) { |
} |
} |
break ; |
} |
} |
this .fangxiang = ( int ) (Math.random() * 4 ); |
if ( this .shengming == false ) { |
break ; |
} |
if (shengming) { |
if (dzd.size() < 100 ) { |
zidan zd = null ; |
switch (fangxiang) { |
case 0 : |
zd = new zidan(x + 10 , y, 0 ); |
dzd.add(zd); |
break ; |
case 1 : |
zd = new zidan(x, y + 10 , 1 ); |
dzd.add(zd); |
break ; |
case 2 : |
zd = new zidan(x + 10 , y + 30 , 2 ); |
dzd.add(zd); |
break ; |
case 3 : |
zd = new zidan(x + 30 , y + 10 , 3 ); |
dzd.add(zd); |
break ; |
} |
Thread t4 = new Thread(zd); |
t4.start(); |
} |
} |
} |
} |
} |
class MyTank extends Tank { |
Vector<zidan> aa = new Vector<zidan>(); |
zidan zd = null ; |
public MyTank( int x, int y) { |
super (x, y); |
} |
public void xiangshang() { |
y -= sudu; |
} |
public void xiangzuo() { |
x -= sudu; |
} |
public void xiangxia() { |
y += sudu; |
} |
public void xiangyou() { |
x += sudu; |
} |
public void fszd() { |
switch ( this .fangxiang) { |
case 0 : |
zd = new zidan(x + 10 , y, 0 ); |
aa.add(zd); |
break ; |
case 1 : |
zd = new zidan(x, y + 10 , 1 ); |
aa.add(zd); |
break ; |
case 2 : |
zd = new zidan(x + 10 , y + 30 , 2 ); |
aa.add(zd); |
break ; |
case 3 : |
zd = new zidan(x + 30 , y + 10 , 3 ); |
aa.add(zd); |
break ; |
} |
Thread t = new Thread(zd); |
t.start(); |
} |
} |
class zidan implements Runnable { |
int x, y; |
int fangxiang; |
int sudu = 10 ; |
boolean shengming = true ; |
public zidan( int x, int y, int fangxiang) { |
this .x = x; |
this .y = y; |
this .fangxiang = fangxiang; |
} |
@Override |
public void run() { |
while ( true ) { |
try { |
Thread.sleep( 100 ); |
// System.out.println("!!!"); |
} catch (InterruptedException e) { |
System.out.println( "ERROR:" + e); |
} |
switch ( this .fangxiang) { |
case 0 : |
y -= sudu; |
break ; |
case 1 : |
x -= sudu; |
break ; |
case 2 : |
y += sudu; |
break ; |
case 3 : |
x += sudu; |
break ; |
} |
if (x < 0 || x > 500 || y < 0 || y > 400 ) { |
this .shengming = false ; |
break ; |
} |
} |
} |
} |
class BaoZha { |
int x, y; |
int shengcunqi = 9 ; |
boolean shengming = true ; |
public BaoZha( int x, int y) { |
this .x = x; |
this .y = y; |
} |
public void suqsd() { |
if (shengcunqi > 0 ) { |
shengcunqi--; |
} else { |
this .shengming = false ; |
} |
} |
} |
初级程序员
by: 等神 发表于:2015-12-21 15:34:49 顶(0) | 踩(0) 回复
是在一个Class 中吗?
回复评论