设为首页 加入收藏

TOP

Java实现支持双黑两人激战的 坦克大战源码(经典游戏)(二)
2014-11-24 01:43:08 来源: 作者: 【 】 浏览:11
Tags:Java 实现 支持 双黑两 激战 坦克 大战 源码 经典游戏
vent.VK_H:sH=false;break;
case KeyEvent.VK_RIGHT:sRight=false;break;
case KeyEvent.VK_LEFT:sLeft=false;break;
case KeyEvent.VK_DOWN:sDown=false;break;
case KeyEvent.VK_UP:sUp=false;break;
case KeyEvent.VK_L:sL=false;break;
}
}
};
this.requestFocus();
this.addKeyListener(l);

}
public void level(){//每5分增加一辆敌人的坦克
int length = score/5+5;
if(length>enemyTank.length){
enemyTank=Arrays.copyOf(enemyTank,enemyTank.length+1);//坦克数组扩容
enemyTank[enemyTank.length-1]=nextTank();//初始化数组最后的一辆坦克
enemyTank[enemyTank.length-1].start();//启动这个坦克的线程
}
}
public void startGame(){
cleanShoot();//清空子弹
shootNum=5;//可以发射的子弹数为5
shootNum1=5;
score=0;
myTank[0]= new MyTank(550,370,4,1,-1,true);//初始化我的坦克
myTank[1]= new MyTank(100,100,4,1,0,true);
for (int i = 0; i < enemyTank.length; i++) {//初始化敌人的坦克
if(gameOver){//游戏结束,关闭每个坦克的线程
enemyTank[i].s=false;
}
}
enemyTank=new EnemyTanks[5];
for (int i = 0; i < enemyTank.length; i++) {//初始化敌人的坦克
enemyTank[i]=nextTank();
}
gameOver=false;//游戏没有结束,表示开始
myTank[0].start();//启动我的坦克线程
myTank[1].start();
for (int i = 0; i < enemyTank.length; i++) {//启动敌人坦克线程
enemyTank[i].start();
}
timer = new Timer();//匿名内部类Timer
timer.schedule(new TimerTask(){
public void run(){//重写run()函数
repaint();
shootAndRun();
}
}, 0,50);//50毫秒执行一次
}
/**检查游戏是否结束*/
public void checkGameOver(){//模仿俄罗斯方块里面写的
if(myTank[0].isLive()||myTank[1].isLive()){
return;
}
gameOver = true;
timer.cancel();
repaint();
}
public void shootAndRun(){
if(sW){//如果开关sW=true就执行{}里面的代码
myTank[1].moveUp();
}else if(sD){
myTank[1].moveRight();
}else if(sS){
myTank[1].moveDown();
}else if(sA){
myTank[1].moveLeft();
}if(sH&&myTank[1].isLive()){//如果sL=true并且坦克是活的,就执行
if(shootNum1>=0){//如果允许的子弹数小于于0了,不执行
myTank[1].shoot();
shootNum1--;//控制子弹数量,射击一次,子弹减少,消失加1
}
}
if(sUp){
myTank[0].moveUp();
}else if(sRight){
myTank[0].moveRight();
}else if(sLeft){
myTank[0].moveLeft();
}else if(sDown){
myTank[0].moveDown();
}if(sL&&myTank[0].isLive()){
if(shootNum>=0){
myTank[0].shoot();
shootNum--;//控制子弹数量,射击一次,子弹减少,消失加1
}
}
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());//画背景
paintWall(g);//画墙
//画我的坦克
paintTank(myTank[1].getX(),myTank[1].getY(),g,myTank[1].getDirect(),myTank[1].getWho(),myTank[1].isLive());
paintTank(myTank[0].getX(),myTank[0].getY(),g,myTank[0].getDirect(),myTank[0].getWho(),myTank[0].isLive());
for (int i = 0; i < enemyTank.length; i++) {//画敌人的坦克
paintTank(enemyTank[i].getX(),enemyTank[i].getY(),g,enemyTank[i].getDirect(),enemyTank[i].getWho(),enemyTank[i].isLive());
}
paintShoot(g);//画我射击的子弹
paintEemyShoot(g);//画敌人发出的子弹
paintScore(g);//画分数,及字符
//paintMap(g);
}
/* public void paintMap(Graphics g){//这是个方法可以生成漂亮的东西
for (int j = 0; j < 3; j++) {
Random color=new Random(); //通过Random生成随机颜色
int r = color.nextInt(256);
int g1 = color.nextInt(256
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android.mk文件中的功能宏介绍 下一篇Android.mk中系统变量的介绍

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: