BellOlson/FinalAssignment

From ggc

Jump to: navigation, search

Grading Criteria


001 package BellOlson;
002 import wiki.Wiki;
003 import fang.*;
004 import java.awt.*;
005 import java.awt.geom.*;
006 
007 /**
008  * Based on air hockey.
009  @author Gbell && Jolson
010  */
011 public class FinalAssignment extends GameLoop
012 {
013   private Sprite leftBorder, rightBorder, topBorder, floor;
014   private Sprite paddle, paddle2, background;
015   private Sprite ball, goal, goal2;
016   private ProjectileTracker tracker, tracker2, tracker3, handicap;
017   private int scoreBottom, scoreTop, trackScore, difficulty;
018   private StringSprite gameover, restart, scoreBottomText, scoreTopText, win, start, directions;
019   private Color color = new Color(150150150);
020   private boolean dead = false;
021   private int playernum;
022   private Sprite bar, circle, circle2;
023 
024   public void startGame()
025   {
026     scoreBottom=0;
027     scoreTop=0;
028     trackScore=0;
029     makeSprites();
030     toggleAudible();
031     setHelpText("Use the mouse to control the paddle. Don't miss the puck.<br> Press start to begin.");
032   }
033 
034   private void makeSprites()
035   {
036     background=new RectangleSprite(1,1);
037     background.setColor(Color.WHITE);
038     background.setScale(5);
039     background.setLocation(.5,.5);
040     canvas.addSprite(background);
041 
042     bar=new RectangleSprite(90,1);
043     bar.setColor(Color.BLACK);
044     bar.setScale(1);
045     bar.setLocation(.5,.5);
046     canvas.addSprite(bar);
047 
048     circle=new OvalSprite(1,1);
049     circle.setLocation(.5,.5);
050     circle.setColor(Color.BLACK);
051     circle.setScale(.1);
052     canvas.addSprite(circle);
053 
054     circle2=new OvalSprite(1,1);
055     circle2.setLocation(.5,.5);
056     circle2.setColor(Color.WHITE);
057     circle2.setScale(.08);
058     canvas.addSprite(circle2);
059 
060     makeTexts();
061     makeBallandGoal();
062     makePaddle();
063     makeTracker();
064     makeScores();
065     makeBorders();
066   }
067 
068   public void makeTexts()
069   {
070     restart=new StringSprite("Click to restart game.");
071     restart.setLocation(0.50.4);
072     restart.setScale(.5);
073     restart.setColor(Color.BLACK);
074 
075     gameover=new StringSprite("Game Over");
076     gameover.setLocation(0.50.4);
077     gameover.setScale(.4);
078     gameover.setColor(Color.BLACK);
079   }
080 
081   public void makeBorders()
082   {
083     makeFloor();
084     makeLeftBorder();
085     makeRightBorder();
086     makeTopBorder();
087   }
088 
089   public void makeLeftBorder()
090   {
091     leftBorder=new RectangleSprite(240);
092     leftBorder.setLocation(0.0150.5);
093     leftBorder.setScale(1);
094     leftBorder.setColor(color);
095     canvas.addSprite(leftBorder);
096   }
097 
098   public void makeRightBorder()
099   {
100     rightBorder=new RectangleSprite(240);
101     rightBorder.setLocation(.9850.5);
102     rightBorder.setScale(1);
103     rightBorder.setColor(color);
104     canvas.addSprite(rightBorder);
105   }
106 
107   public void makeTopBorder()
108   {
109     topBorder=new RectangleSprite(401);
110     topBorder.setLocation(0.50);
111     topBorder.setScale(1);
112     topBorder.setColor(color);
113     canvas.addSprite(topBorder);
114     canvas.addSprite(goal2);
115   }
116 
117   public void makeFloor()
118   {
119     floor=new RectangleSprite(401);
120     floor.setLocation(0.51);
121     floor.setScale(1);
122     floor.setColor(color);
123     canvas.addSprite(floor);
124     canvas.addSprite(goal);
125   }
126 
127   private void makeBallandGoal()
128   {
129     ball=new OvalSprite(11);
130     ball.setColor(Color.BLACK);
131     ball.setScale(.075);
132     ball.setLocation(.5.5);
133     canvas.addSprite(ball);
134 
135     goal=new RectangleSprite(101);
136     goal.setColor(Color.RED);
137     goal.setScale(.3);
138     goal.setLocation(.5.999);
139 
140     goal2=new RectangleSprite(101);
141     goal2.setColor(Color.BLUE);
142     goal2.setScale(.3);
143     goal2.setLocation(.5.001);
144 
145   }
146 
147   private void makePaddle()
148   {
149     paddle=new OvalSprite(42);
150     paddle.setColor(Color.RED);
151     paddle.setScale(.1);
152     paddle.setLocation(.5.9);
153     canvas.addSprite(paddle);
154 
155     paddle2=new OvalSprite(42);
156     paddle2.setColor(Color.BLUE);
157     paddle2.setScale(.1);
158     paddle2.setLocation(.5.1);
159     canvas.addSprite(paddle2);
160   }
161 
162   private void makeTracker()
163   {
164     tracker=new ProjectileTracker(0.40.4);
165     ball.setTracker(tracker);
166   }
167 
168   private void makeScores()
169   {
170     scoreBottomText = new StringSprite("Score: " + scoreBottom);
171     scoreBottomText.setLocation(0.86.95);
172     scoreBottomText.setColor(Color.BLACK);
173     scoreBottomText.setScale(0.175);
174     canvas.addSprite(scoreBottomText);
175 
176     scoreTopText = new StringSprite("Score: "+scoreTop);
177     scoreTopText.setLocation(0.14.05);
178     scoreTopText.setColor(Color.BLACK);
179     scoreTopText.setScale(0.175);
180     canvas.addSprite(scoreTopText);
181   }
182 
183 
184   public void advanceFrame(double timePassed)
185   {
186     if(tracker!=null)
187     {
188       double x=getPlayer(0).getMouse().getLocation().x;
189       double y=getPlayer(0).getMouse().getLocation().y;
190       if(y<.7)
191       {
192         y=.7;
193       }
194       if(y>.9)
195       {
196         y=.9;
197       }
198       paddle.setLocation(x,y);
199 
200       double a=getPlayer(1).getMouse().getLocation().x;
201       double b=getPlayer(1).getMouse().getLocation().y;
202       if(b>.3)
203       {
204         b=.3;
205       }
206       if(b<.1)
207       {
208         b=.1;
209       }
210       paddle2.setLocation(a,b);
211 
212       bounceOffWalls();
213       clickCommand();
214       playerDies();
215       makeHandicaps();
216     }
217   }
218 
219   public void clickCommand()
220   {
221     if(getPlayer(playernum).getMouse().getClickLocation()!=null && dead == true)
222     {
223       dead = false;
224       resetGame();
225     }
226   }
227 
228   public void playerDies()
229   {
230     if(goal.intersects(ball&& ball.isVisible())
231     {
232       if(scoreTop<10)
233       {
234         dead=true;
235         scoreTop++;
236         ball.setLocation(0,0);
237         scoreTopText.setText("Score: " + scoreTop);
238         canvas.removeSprite(ball, paddle, paddle2);
239         ball.setTracker(null);
240         canvas.addSprite(restart);
241         playernum=0;
242       }
243 
244       else
245       {
246         canvas.addSprite(gameover);
247         canvas.removeSprite(ball, paddle, paddle2);
248         ball.setTracker(null);
249       }
250     }
251     else if(goal2.intersects(ball&& ball.isVisible())
252     {
253       if(scoreBottom<10)
254       {
255         dead=true;
256         scoreBottom++;
257         ball.setLocation(0,0);
258         scoreBottomText.setText("Score: " + scoreBottom);
259         canvas.removeSprite(ball, paddle, paddle2);
260         ball.setTracker(null);
261         canvas.addSprite(restart);
262         playernum=1;
263       }
264       else
265       {
266         canvas.addSprite(gameover);
267         canvas.removeSprite(ball, paddle, paddle2);
268         ball.setTracker(null);
269       }
270     }
271   }
272   public void resetGame()
273   {
274     canvas.removeSprite (paddle, ball, scoreTopText, scoreBottomText, restart);
275     trackScore=0;
276     makeSprites();
277 
278   }
279 
280   private void bounceOffWalls()
281   {
282     bounceOffPaddle();
283     bounceOffRight();
284     bounceOffLeft();
285     bounceOffTop();
286     bounceOffFloor();
287   }
288 
289   public void bounceOffPaddle()
290   {
291     if(paddle.intersects(ball))
292     {
293       double normal=Sprite.getNormalVector(paddle.getShape(), ball.getShape());
294       tracker.bounce(normal);
295     }
296 
297     if(paddle2.intersects(ball))
298     {
299       double normal=Sprite.getNormalVector(paddle2.getShape(), ball.getShape());
300       tracker.bounce(normal);
301     }
302   }
303 
304   public void bounceOffRight()
305   {
306     if(rightBorder.intersects(ball))
307     {
308       double normal=Sprite.getNormalVector(rightBorder.getShape(), ball.getShape());
309       tracker.bounce(normal);
310     }
311   }
312 
313   public void bounceOffLeft()
314   {
315     if(leftBorder.intersects(ball))
316     {
317       double normal=Sprite.getNormalVector(leftBorder.getShape(), ball.getShape());
318       tracker.bounce(normal);
319     }
320   }
321 
322   public void bounceOffTop()
323   {
324     if(topBorder.intersects(ball))
325     {
326       double normal=Sprite.getNormalVector(topBorder.getShape(), ball.getShape());
327       tracker.bounce(normal);
328     }
329   }
330 
331   public void bounceOffFloor()
332   {
333     if(floor.intersects(ball))
334     {
335       double normal=Sprite.getNormalVector(floor.getShape(), ball.getShape());
336       tracker.bounce(normal);
337     }
338   }
339   private void makeHandicaps()
340   {
341     if(scoreBottom>scoreTop)
342     {
343       Point2D.Double handicap=tracker.getVelocity();
344       handicap.y+=(.0005*(scoreBottom-scoreTop));
345       tracker.setVelocity(handicap);
346     }
347     if(scoreBottom<scoreTop)
348     {
349       Point2D.Double handicap=tracker.getVelocity();
350       handicap.y-=(.0005*(scoreTop-scoreBottom));
351       tracker.setVelocity(handicap);
352     }
353   }
354 }


Download/View BellOlson/FinalAssignment.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