intro/SpaceInvaders

From ggc

Jump to: navigation, search

001 package intro;
002 //start auto-imports
003 import java.util.*;
004 import fang.*;
005 //end auto-imports
006 
007 /**
008  * All about my game.
009  @author My Name Here
010  */
011 public class SpaceInvaders extends Game
012 {
013   private ArrayList<Sprite> allEnemies;
014   private ProjectileTransformer enemyTransformer;
015   private ProjectileTransformer bulletTransformer;
016   private ArrayList<Sprite> heroBullet;
017   private ArrayList<Sprite> enemyBullet;
018   private StringSprite score;
019   private StringSprite lives;
020 
021   private Sprite hero;
022 
023   /**sets up the game*/
024   public void setup()
025   {
026     setScore(0);
027     heroBullet=new ArrayList<Sprite>();
028     enemyBullet=new ArrayList<Sprite>();
029 
030     hero=new StringSprite("me");
031     hero.setSize(0.1);
032     hero.setLocation(0.50.9);
033     hero.setColor(getColor("yellow"));
034     addSprite(hero);
035 
036     allEnemies=new ArrayList<Sprite>();
037     int enemiesAcross=11;
038     int enemiesDown=4;
039     double enemyWidth=0.8;
040     enemyTransformer=new ProjectileTransformer(0.050);
041     for(int j=0; j<enemiesDown; j++)
042     {
043       for(int i=1; i<=enemiesAcross; i++)
044       {
045         RectangleSprite enemy=new RectangleSprite(11);
046         enemy.setSize(0.9/enemiesAcross);
047         double x=0.5/enemiesAcross+1.0/enemiesAcross*(i-1);
048         x=x*enemyWidth;
049         enemy.scale(enemyWidth);
050         double y=0.5/enemiesAcross+(j+0.0)/enemiesAcross;
051         y=y*enemyWidth;
052         enemy.setLocation(x, y);
053         addSprite(enemy);
054         enemy.addTransformer(enemyTransformer);
055         allEnemies.add(enemy);
056       }
057     }
058 
059     score=new StringSprite("0");
060     score.setScale(0.2);
061     score.setColor(getColor("white"));
062     score.setLocation(0.90.1);
063     addSprite(score);
064 
065     setLives(3);
066 
067     lives=new StringSprite(""+getLives());
068     lives.setScale(0.2);
069     lives.setColor(getColor("white"));
070     lives.setLocation(0.10.1);
071     addSprite(lives);
072   }
073 
074   private Sprite getAvailableBullet(ArrayList<Sprite> bullets,
075                                     String name, double direction)
076   {
077     for(Sprite single: bullets)
078     {
079       if(single.isVisible()==false)
080       {
081         return single;
082       }
083       if(single.getLocation().y<0)
084       {
085         return single;
086       }
087       if(single.getLocation().y>1)
088       {
089         return single;
090       }
091     }
092     Sprite bullet=new StringSprite(name);
093     bullet.setSize(0.05);
094     bullet.setVisible(false);
095     bullet.setColor(getColor("white"));
096 
097     bullets.add(bullet);
098 
099     Spinner spinner=new Spinner(0);
100     spinner.setRotationDegrees(50);
101     bullet.addTransformer(spinner);
102 
103     ProjectileTransformer bulletTransformer=new ProjectileTransformer(0, direction);
104     bullet.addTransformer(bulletTransformer);
105 
106     addSprite(bullet);
107 
108     return bullet;
109   }
110 
111   private void moveEnemiesDown()
112   {
113     for(Sprite single: allEnemies)
114     {
115       single.translate(00.05);
116     }
117   }
118 
119   private void moveEnemies()
120   {
121     for(Sprite single: allEnemies)
122     {
123       if(single.getLocation().x>&& single.isVisible())
124       {
125         moveEnemiesDown();
126         enemyTransformer.setVector2D(-0.050);
127         break;
128       }
129       if(single.getLocation().x<&& single.isVisible())
130       {
131         moveEnemiesDown();
132         enemyTransformer.setVector2D(0.050);
133         break;
134       }
135     }
136   }
137 
138   private void moveHero()
139   {
140     hero.setX(getMouseX());
141   }
142 
143   private void heroShoot()
144   {
145     if(getClick2D()!=null)
146     {
147       Sprite available=getAvailableBullet(heroBullet, "Java", -0.2);
148       available.setLocation(hero.getX(), hero.getY()-hero.getSize()/2);
149       available.setVisible(true);
150 
151     }
152   }
153 
154   private void handleBulletEnemyCollision()
155   {
156     for(Sprite single: allEnemies)
157     {
158       for(Sprite bullet: heroBullet)
159       {
160         if(single.isVisible() && bullet.isVisible() && single.intersects(bullet))
161         {
162           single.setVisible(false);
163           bullet.setVisible(false);
164           int original=getScore();
165           setScore(original+5);
166           Sprite available=getAvailableBullet(enemyBullet, "bug"0.1);
167           available.setLocation(single.getX(), single.getY()+single.getSize()/2);
168           available.setVisible(true);
169         }
170       }
171     }
172   }
173 
174   private void handleBulletHeroCollision()
175   {
176     for(Sprite bullet: enemyBullet)
177     {
178       if(hero.isVisible() && bullet.isVisible() && hero.intersects(bullet))
179       {
180         bullet.setVisible(false);
181         int original=getLives();
182         setLives(original-1);
183         if(getLives()==0)
184           hero.setVisible(false);
185       }
186     }
187   }
188 
189 
190   /**handle input and game events*/
191   public void advance()
192   {
193     moveEnemies();
194     moveHero();
195     heroShoot();
196     handleBulletEnemyCollision();
197     handleBulletHeroCollision();
198     score.setText(""+getScore());
199     if(rightPressed())
200     {
201       setLives(getLives()-1);
202     }
203     lives.setText(""+getLives());
204   }
205 }


Download/View intro/SpaceInvaders.java





Views
Personal tools
Add to 
del.icio.usAdd to 
diggAdd to 
FacebookAdd to 
favoritesAdd to 
GoogleAdd to 
MySpaceAdd to 
PrintAdd to 
SlashdotAdd to 
StumbleUponAdd to 
Twitter