package space;//还有两个内容需要解决,一个是显示的子弹不能无限多个,应该随着技术的增加而变多;第二个就是设立结束的标志,然后跳转到祝羊生日快乐的画面。这里是第二步的设计
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
public class Begin extends JFrame implements MouseMotionListener,KeyListener{
Container cont;//定义容器
int currentLevel=1;//游戏等级
int numOfEnemies=1;//外星人数量
ImageIcon shipBullet=new ImageIcon("wodepd.jpg");//我的炮弹的图片
ImageIcon enemyBullet=new ImageIcon("armypaodang.png");//敌人炮弹的图片
ImageIcon shipImg=new ImageIcon("ship.jpg");//太空船的图案
ImageIcon shipHit=new ImageIcon("shipHit.Png");//太空船受伤的图片
ImageIcon enemyImg=new ImageIcon("army.jpg");//敌人的飞机
ImageIcon enemyHit=new ImageIcon("baozha.jpg");//敌人死哒的图片
ArrayList playerBullets=new ArrayList();//太空船发射数组
ArrayList enemiesBullets=new ArrayList();//敌人发射数组
ArrayList enemies=new ArrayList();//敌人的数量
JLabel ship=new JLabel(shipImg);
JLabel powerAttack=new JLabel(new ImageIcon("erupt.jpg"));//能量释放的图片
JLabel healthPack=new JLabel(new ImageIcon("enegy.jpg"));//能量的图片
JLabel powerup=new JLabel(new ImageIcon("tedapaodang.jpg"));//加农炮的图片
boolean useAttack=false;//能量是否释放
int score=0;//
int health=500;
int finalScore=0;
public Begin()
{
super("Space Destoryers");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,700);
cont=getContentPane();//this.getContentPane()的作用是初始化一个容器,用来在容器上添加一些控件
cont.setLayout(null);//未设置Layout时,java默认为flowLayout布局的,设置为null即为清空布局管理器,之后添加组件,常常是设置组件左上角坐标相对于容器左上角(0,0)的x,y值来确定组件的位置,即使更改容器大小也不会改变位置。这种方式常常用于窗体大小固定的容器里。
cont.setBackground(Color.BLACK);
cont.add(ship);
ship.setBounds(225,550,50,50);
addMouseMotionListener(this);
addKeyListener(this);
title();
populateEnemies();
Play play=new Play();
play.start();
setContentPane(cont);//实例化一个对象
}
public void title()
{
try
{
JLabel title=new JLabel(new ImageIcon("title.jpg"));
cont.add(title);
title.setBounds(ship.getX()-280,ship.getY()-30, 600, 200);
do
{
title.setBounds(title.getX(),title.getY()-1,600,200);
Thread.sleep(3);
}while(title.getY()>-200);
}
catch(Exception e){}
}
public void populateEnemies() {//自动生成敌人
// TODO Auto-generated method stub
for(int i=0;i<=numOfEnemies;i++)
{
JLabel tempEnemy=new JLabel(enemyImg);
int randLocation=(int)(Math.random()*500);
enemies.add(tempEnemy);
cont.add((JLabel)(enemies.get(i)));
tempEnemy.setBounds(randLocation,10,30,30);
cont.setComponentZOrder(((JLabel)(enemies.get(i))),0);//不懂~喵~
}
}
public class Play extends Thread
{
public void run()
{
while(true)
{
try{
for(int i=0;i<enemies.size();i++)
{
JLabel tempEnemy=(JLabel)(enemies.get(i));
int distance=(int)(Math.random()*2);
tempEnemy.setBounds(tempEnemy.getX(),tempEnemy.getY()+distance,30,30);//加了distance才有移动
if(useAttack)
{
//if(powerAttack.getBounds().intersects(tempEnemy.getBounds()))
if(tempEnemy.getBounds().intersects(powerAttack.getBounds()))//这里有个问题就是发了大能量炮了之后,敌人不消失,要不就是静止在那里不动了
{
// tempEnemy.getBounds().intersects(ship.getBounds()
for(int j=0;j<enemies.size();++j)
{
tempEnemy.setIcon(enemyHit);
Thread.sleep(100);
enemies.remove(j);/////////////////////////////////////
cont.remove(tempEnemy);//////////////////////////
numOfEnemies--;
useAttack=true;
}
//cont.remove(tempEnemy);/////////////////////////////////////////8
//i--;
//numOfEnemies--;
//score=score+15;
}
if(tempEnemy.getBounds().intersects(ship.getBounds()))
{
health--;
ship.setIcon(shipHit);//这里有待解决,就是飞机与敌人相撞时产生飞机受伤的图片的显示
Thread.sleep(100);
ship.setIcon(shipImg);///////////////////////////////////////////////////////////////
cont.remove(tempEnemy);
}
if(tempEnemy.getY()>700)
{
tempEnemy.setBounds(tempEnemy.getX(), 10, 30, 30);
}
int fire=(int)(Math.random()*2);
if(fire<=1)
{
JLabel tempBullet=new JLabel(enemyBullet);
tempBullet.setBounds(tempBullet.getX()+5, tempBullet.getY()+30, 10, 20);
enemiesBullets.add(tempBullet);
cont.add((JLabel)(enemiesBullets.get(enemiesBullets.size()-1)));
cont.setComponentZOrder((JLabel)(enemiesBullets.get(enemiesBullets.size()-1)),0);
}
}
//飞机发射的极光弹是否集中了敌人
////////////////////////////////////////////////////////////////////////////
if(tempEnemy.getBounds().intersects(ship.getBounds()))
{
cont.remove(tempEnemy);
}
if(tempEnemy.getY()>700)///////////////
{
tempEnemy.setBounds(tempEnemy.getX(),10,30,30);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
//是否歼灭了所有的敌人
boolean breakAll=false;
for(int i=0;i<playerBullets.size();i++)
{
JLabel temp=((JLabel)(playerBullets.get(i)));
temp.setBounds(temp.getX(), temp.getY()-8, 10, 20);
if(temp.getY()<0)
{
cont.remove(temp);
playerBullets.remove(i);
i--;
}
for(int j=0;j<enemies.size();++j)
{
JLabel tempEnemy=(JLabel)(enemies.get(j));
if(temp.getBounds().intersects(tempEnemy.getBounds()))
{
playerBullets.remove(i);//这里说:子弹发得快了,就会在屏幕上留有子弹
cont.remove(temp);
i--;
score+=1000;
tempEnemy.setIcon(enemyHit);
Thread.sleep(100);
enemies.remove(j);/////////////////////////////////////
cont.remove(tempEnemy);//////////////////////////
numOfEnemies--;
if(numOfEnemies<=0)
{
currentLevel++;
if(currentLevel%3==0)
{
cont.add(powerup);
int randLoc=(int)(Math.random()*450);
powerup.setBounds(randLoc,0,30,30);
}
if(currentLevel%5==0)
{
cont.add(healthPack);
int randLoc=(int)(Math.random()*450);
healthPack.setBounds(randLoc,0,30,30);
}
numOfEnemies=currentLevel*currentLevel;
populateEnemies();
breakAll=true;
break;
}
}
}
if(breakAll)
{
break;
}
}
if(useAttack)
{
cont.remove(powerAttack);
useAttack=false;
currentLevel++;
numOfEnemies=currentLevel*currentLevel;
populateEnemies();
}////////////////////////////////////////////////////////////////////////////////////////
if(currentLevel%3==0)//若当前游戏级数为3的倍数,则显示能量增强包
{
powerup.setBounds(powerup.getX(),powerup.getY()+1,30,30);
if(powerup.getBounds().intersects(ship
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
space2.zip (19个子文件)
space2
ship.jpg 1KB
armypaodang.png 560B
bin
space
Begin.class 4KB
Begin$Play.class 4KB
title.jpg 14KB
2.jpg 1KB
wodepd.jpg 1KB
enegy.jpg 914B
.settings
org.eclipse.jdt.core.prefs 629B
planedeaded.jpg 5KB
erupt.jpg 971B
src
space
Begin.java 11KB
.project 381B
army.jpg 2KB
.classpath 301B
baozha.jpg 2KB
shipHit.jpg 2KB
tedapaodang.jpg 1KB
paodang.jpg 965B
共 19 条
- 1
资源评论
kingLionW
- 粉丝: 8
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功