Advertisement
Guest User

Untitled

a guest
Jun 12th, 2012
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.62 KB | None | 0 0
  1. package com.olimoli123.fivesecondmania;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Random;
  5.  
  6. import org.cocos2d.actions.instant.CCCallFuncN;
  7. import org.cocos2d.actions.interval.CCMoveTo;
  8. import org.cocos2d.actions.interval.CCSequence;
  9. import org.cocos2d.layers.CCColorLayer;
  10. import org.cocos2d.layers.CCScene;
  11. import org.cocos2d.nodes.CCDirector;
  12. import org.cocos2d.nodes.CCSprite;
  13. import org.cocos2d.types.CGPoint;
  14. import org.cocos2d.types.CGRect;
  15. import org.cocos2d.types.CGSize;
  16. import org.cocos2d.types.ccColor4B;
  17.  
  18. import android.R.id;
  19. import android.app.Activity;
  20. import android.content.Context;
  21. import android.os.AsyncTask;
  22. import android.view.MotionEvent;
  23. import android.view.View;
  24. import android.widget.RemoteViews;
  25. import android.widget.TextView;
  26.  
  27. public class GameLayer extends CCColorLayer {
  28. protected ArrayList<CCSprite> _targets;
  29. protected ArrayList<CCSprite> _projectiles;
  30. protected int _projectilesDestroyed = 0;
  31. int times = 0;
  32. public int lives = 5;
  33. RemoteViews views = new RemoteViews("com.olimoli123.fivesecondmania", R.layout.main);
  34. updateEvents updateText = new updateEvents();
  35.  
  36. public static CCScene scene()
  37. {
  38. CCScene scene = CCScene.node();
  39. CCDirector.sharedDirector().runWithScene(scene);
  40. CCColorLayer layer = new GameLayer(ccColor4B.ccc4(255, 255, 255, 255));
  41.  
  42. scene.addChild(layer);
  43.  
  44. return scene;
  45. }
  46. protected GameLayer(ccColor4B color)
  47. {
  48. super(color);
  49. CGSize winSize = CCDirector.sharedDirector().displaySize();
  50. CCSprite player = CCSprite.sprite("Player.png");
  51.  
  52. player.setPosition(CGPoint.ccp(player.getContentSize().width / 2.0f, winSize.height / 2.0f));
  53.  
  54. addChild(player);
  55. this.schedule("gameLogic", 1.0f);
  56. this.setIsTouchEnabled(true);
  57. _targets = new ArrayList<CCSprite>();
  58. _projectiles = new ArrayList<CCSprite>();
  59. this.schedule("update");
  60. }
  61. public RemoteViews updateLives(RemoteViews views)
  62. {
  63.  
  64. lives--;
  65. views.setTextViewText(R.id.label, "test");
  66. return views;
  67.  
  68. }
  69. protected void addTarget()
  70. {
  71. Random rand = new Random();
  72. CCSprite target = CCSprite.sprite("Target.png");
  73. // Determine where to spawn the target along the Y axis
  74. CGSize winSize = CCDirector.sharedDirector().displaySize();
  75. int minY = (int)(target.getContentSize().height / 2.0f);
  76. int maxY = (int)(winSize.height - target.getContentSize().height / 2.0f);
  77. int rangeY = maxY - minY;
  78. int actualY = rand.nextInt(rangeY) + minY;
  79.  
  80. // Create the target slightly off-screen along the right edge,
  81. // and along a random position along the Y axis as calculated above
  82. target.setPosition(CGPoint.ccp(winSize.width + (target.getContentSize().width / 2.0f) , actualY/ 1.0f));
  83. addChild(target);
  84.  
  85. target.setTag(1);
  86. _targets.add(target);
  87.  
  88. // Determine speed of the target
  89. int minDuration = 2;
  90. int maxDuration = 4;
  91. int rangeDuration = maxDuration - minDuration;
  92. int actualDuration = rand.nextInt(rangeDuration) + minDuration;
  93.  
  94. // Create the actions
  95. CCMoveTo actionMove = CCMoveTo.action(actualDuration, CGPoint.ccp(-target.getContentSize().width / 2.0f, actualY));
  96. CCCallFuncN actionMoveDone = CCCallFuncN.action(this, "spriteMoveFinished");
  97. CCSequence actions = CCSequence.actions(actionMove, actionMoveDone);
  98.  
  99. target.runAction(actions);
  100. }
  101. public void spriteMoveFinished(Object sender)
  102. {
  103. CCSprite sprite = (CCSprite)sender;
  104. this.removeChild(sprite, true);
  105. if (sprite.getTag() == 1)
  106. {
  107. _targets.remove(sprite);
  108. _projectilesDestroyed = 0;
  109. times++;
  110. updateLives(views);
  111.  
  112. if (times >4)
  113. {
  114.  
  115. CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("You have lost your base. :("));
  116. }
  117. else
  118. return;
  119. }
  120. else if (sprite.getTag() == 2)
  121. _projectiles.remove(sprite);
  122. }
  123.  
  124. public void gameLogic(float dt)
  125. {
  126. addTarget();
  127. }
  128. @Override
  129. public boolean ccTouchesEnded(MotionEvent event)
  130. {
  131. // Choose one of the touches to work with
  132. CGPoint location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(event.getX(), event.getY()));
  133.  
  134. // Set up initial location of projectile
  135. CGSize winSize = CCDirector.sharedDirector().displaySize();
  136. CCSprite projectile = CCSprite.sprite("Projectile.png");
  137. projectile.setPosition(CGPoint.ccp(20, winSize.height / 2.0f));
  138. // Determine offset of location to projectile
  139. int offX = (int)(location.x - projectile.getPosition().x);
  140. int offY = (int)(location.y - projectile.getPosition().y);
  141.  
  142. // Bail out if we are shooting down or backwards
  143. if (offX <= 0)
  144. return true;
  145.  
  146. // Ok to add now - we've double checked position
  147. addChild(projectile);
  148. projectile.setTag(2);
  149. _projectiles.add(projectile);
  150. // Determine where we wish to shoot the projectile to
  151. int realX = (int)(winSize.width + (projectile.getContentSize().width / 2.0f));
  152. float ratio = (float)offY / (float)offX;
  153. int realY = (int)((realX * ratio) + projectile.getPosition().y);
  154. CGPoint realDest = CGPoint.ccp(realX, realY);
  155.  
  156. // Determine the length of how far we're shooting
  157. int offRealX = (int)(realX - projectile.getPosition().x);
  158. int offRealY = (int)(realY - projectile.getPosition().y);
  159. float length = (float)Math.sqrt((offRealX * offRealX) + (offRealY * offRealY));
  160. float velocity = 480.0f / 1.0f; // 480 pixels / 1 sec
  161. float realMoveDuration = length / velocity;
  162.  
  163. // Move projectile to actual endpoint
  164. projectile.runAction(CCSequence.actions(
  165. CCMoveTo.action(realMoveDuration, realDest),
  166. CCCallFuncN.action(this, "spriteMoveFinished")));
  167. return true;
  168. }
  169. public void update(float dt)
  170. {
  171.  
  172. ArrayList<CCSprite> projectilesToDelete = new ArrayList<CCSprite>();
  173.  
  174. for (CCSprite projectile : _projectiles)
  175. {
  176. CGRect projectileRect = CGRect.make(projectile.getPosition().x - (projectile.getContentSize().width / 2.0f),
  177. projectile.getPosition().y - (projectile.getContentSize().height / 2.0f),
  178. projectile.getContentSize().width,
  179. projectile.getContentSize().height);
  180.  
  181. ArrayList<CCSprite> targetsToDelete = new ArrayList<CCSprite>();
  182.  
  183. for (CCSprite target : _targets)
  184. {
  185.  
  186. CGRect targetRect = CGRect.make(target.getPosition().x - (target.getContentSize().width),
  187. target.getPosition().y - (target.getContentSize().height),
  188. target.getContentSize().width,
  189. target.getContentSize().height);
  190.  
  191. if (CGRect.intersects(projectileRect, targetRect))
  192. targetsToDelete.add(target);
  193. }
  194.  
  195. for (CCSprite target : targetsToDelete)
  196. {
  197. _targets.remove(target);
  198. removeChild(target, true);
  199. }
  200.  
  201. if (targetsToDelete.size() > 0)
  202. projectilesToDelete.add(projectile);
  203.  
  204. }
  205.  
  206. for (CCSprite projectile : projectilesToDelete)
  207. {
  208. _projectiles.remove(projectile);
  209. removeChild(projectile, true);
  210. if (++_projectilesDestroyed > 30)
  211. {
  212. _projectilesDestroyed = 0;
  213.  
  214. CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("You Win!"));
  215. }
  216. }
  217.  
  218. }
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement