Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.52 KB | None | 0 0
  1. package pack;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.BorderLayout;
  5. import java.awt.Button;
  6. import java.awt.Color;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Frame;
  10. import java.awt.Graphics;
  11. import java.awt.Image;
  12. import java.awt.Rectangle;
  13. import java.awt.event.KeyEvent;
  14. import java.awt.event.KeyListener;
  15. import java.awt.geom.RoundRectangle2D;
  16. import java.io.IOException;
  17. import java.util.ArrayList;
  18. import java.util.Random;
  19. import java.util.TimerTask;
  20.  
  21. import javax.imageio.ImageIO;
  22. import javax.swing.JApplet;
  23. import javax.swing.JFrame;
  24. import javax.swing.JLabel;
  25. import javax.swing.JProgressBar;
  26.  
  27. public class StartingClass extends Applet implements Runnable, KeyListener {
  28.  
  29. // dafuq
  30. private static final long serialVersionUID = 1L;
  31.  
  32. private Player player;
  33. private Image image, background;
  34. private Graphics second;
  35. static Container pane;
  36.  
  37. private BackgroundAnimation bAnimation1 = new BackgroundAnimation();
  38. private BackgroundAnimation bAnimation2 = new BackgroundAnimation();
  39. private ArrayList<Missile> missiles = new ArrayList<>();
  40. private ArrayList<Blast> blasts = new ArrayList<>();
  41. public static int NUM_OF_MISSILES = 3; // missiles in each wave (increments by level)
  42. public Random randomY = new Random();
  43. public Thread gameloop;
  44. public boolean game_running = false;
  45. private JProgressBar healthBar;
  46. private Button button;
  47. private boolean check = false;
  48. private JLabel message;
  49.  
  50. @Override
  51. public void init() {
  52.  
  53. setSize(Constants._Screen_Width, Constants._Screen_Height);
  54. //setBackground(Color.BLACK);
  55. setFocusable(true);
  56.  
  57.  
  58. setName("witam");
  59. try {
  60. background = ImageIO.read( ClassLoader.getSystemResource("data/background.png"));
  61. } catch (IOException e) { e.printStackTrace(); }
  62.  
  63. bAnimation1.setFrames(background);
  64. bAnimation1.setXY(0, 0); // first animation is in the left corner
  65. bAnimation1.setDelay(5);
  66. bAnimation2.setFrames(background);
  67. bAnimation2.setXY(1024, 0);
  68. bAnimation2.setDelay(5);
  69. player = new Player(300, 300);
  70. gameloop = new Thread(this);
  71.  
  72.  
  73. healthBar = new JProgressBar(0, 100);
  74. healthBar.setValue(0);
  75. healthBar.setStringPainted(true);
  76.  
  77. message = new JLabel("Beginning work!");
  78.  
  79. add(healthBar);
  80. add(message);
  81.  
  82. addKeyListener(this);
  83.  
  84. }
  85.  
  86. public void launchMissiles(){
  87. Random randomY = new Random();
  88. Missile temp;
  89. healthBar.setValue(healthBar.getValue()+1);
  90. System.out.println(message.getX() + " " + message.getY());
  91.  
  92. for(int i=0;i<NUM_OF_MISSILES;i++){
  93. // height must be < 720
  94. do{
  95. // type 0 for normal missile, 1 for bombing missile
  96. temp = new Missile(1050, randomY.nextInt(700), 5, 1);
  97. }
  98. // if generated missile is too near with existing missiles, we have to create a new one.
  99. while(checkMissilesCollision(temp));
  100. synchronized(missiles){
  101. missiles.add(temp);
  102. }
  103. }
  104. }
  105.  
  106. public boolean checkMissilesCollision(Missile m){
  107. synchronized(missiles){
  108. for(int i=0;i<missiles.size();i++)
  109. if(Math.abs(missiles.get(i).getY() - m.getY()) < 80)
  110. return true; // if missiles are too near
  111. }
  112. return false;
  113. }
  114.  
  115.  
  116.  
  117. @Override
  118. public void stop() {
  119. // TODO Auto-generated method stub
  120. }
  121.  
  122. @Override
  123. public void destroy() {
  124. // TODO Auto-generated method stub
  125. }
  126.  
  127. @Override
  128. public void run() {
  129. while (true) {
  130. repaint();
  131. player.update();
  132. bAnimation1.update();
  133. bAnimation2.update();
  134.  
  135.  
  136. synchronized(missiles){
  137. for(int i=0;i<missiles.size();i++){
  138. if(missiles.get(i).getX() < -100)
  139. missiles.remove(i);
  140. }
  141.  
  142. for(int i=0;i<missiles.size();i++){
  143.  
  144. missiles.get(i).update();
  145. //if(player.checkForCollision(missiles.get(i)))
  146. //{
  147. // blasts.add(new Blast(player.getX(), player.getCenterY()));
  148. // missiles.remove(i);
  149. //}
  150.  
  151. if(player.getRectangle().intersects(missiles.get(i).getRectangle())){
  152. blasts.add(new Blast(missiles.get(i).getX(), missiles.get(i).getCenterY()));
  153. missiles.remove(i);
  154. }
  155.  
  156. }
  157. }
  158.  
  159. synchronized(blasts){
  160. for(int i=0;i<blasts.size();i++){
  161. blasts.get(i).update();
  162. if(blasts.get(i).animation.playedOnce()) blasts.remove(i);
  163. }
  164. }
  165.  
  166. }
  167. }
  168.  
  169. @Override
  170. public void update(Graphics g) {
  171. if (image == null) {
  172. image = createImage(this.getWidth(), this.getHeight());
  173. second = image.getGraphics();
  174. }
  175.  
  176. second.setColor(getBackground());
  177. second.fillRect(0, 0, getWidth(), getHeight());
  178. second.setColor(getForeground());
  179. paint(second);
  180.  
  181. g.drawImage(image, 0, 0, this);
  182. }
  183.  
  184. @Override
  185. public void paint(Graphics g) {
  186. //g.drawImage(bAnimation1.getImage(), bAnimation1.getX(), bAnimation1.getY(), this);
  187. //g.drawImage(bAnimation2.getImage(), bAnimation2.getX()-1, bAnimation1.getY(), this);
  188.  
  189. g.drawRect(player.getX(), player.getY(), player.getHalfWidth()*2, player.getHalfHeight()*2);
  190. g.drawImage(player.getAnimation().getImage(), player.getX(), player.getY(), this);
  191. synchronized(missiles){
  192. for(int i=0;i<missiles.size();i++){
  193. g.drawRect(missiles.get(i).getX(), missiles.get(i).getY(), missiles.get(i).getHalfWidth()*2, missiles.get(i).getHalfHeight()*2);
  194. g.drawImage(missiles.get(i).getAnimation().getImage(), missiles.get(i).getX(), missiles.get(i).getY(), this);
  195. }
  196. }
  197.  
  198. synchronized (blasts) {
  199. for(int i=0;i<blasts.size();i++){
  200. //if(!blasts.get(i).animation.playedOnce())
  201. g.drawImage(blasts.get(i).getAnimation().getImage(), blasts.get(i).getX(), blasts.get(i).getY(), this);
  202. }
  203. }
  204.  
  205.  
  206. }
  207.  
  208.  
  209.  
  210.  
  211.  
  212. @Override
  213. public void keyPressed(KeyEvent e) {
  214.  
  215. switch (e.getKeyCode()) {
  216.  
  217. case KeyEvent.VK_SPACE:
  218. if(!game_running){
  219. gameloop.start();
  220. game_running = true;
  221. new MissilesLauncher().start();
  222. }
  223. player.setAccelerating(true);
  224. break;
  225.  
  226. }
  227.  
  228. }
  229.  
  230. @Override
  231. public void keyReleased(KeyEvent e) {
  232. switch (e.getKeyCode()) {
  233.  
  234. case KeyEvent.VK_SPACE:
  235. player.setAccelerating(false);
  236. break;
  237. }
  238.  
  239. }
  240.  
  241. @Override
  242. public void keyTyped(KeyEvent e) {
  243. // TODO Auto-generated method stub
  244. }
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251. public class MissilesLauncher extends Thread{
  252. @Override
  253. public void run(){
  254. while(true){
  255.  
  256. try {
  257. sleep(2000);
  258.  
  259. launchMissiles();
  260. } catch (InterruptedException e) {
  261. // TODO Auto-generated catch block
  262. e.printStackTrace();
  263. }
  264.  
  265. }
  266. }
  267. }
  268.  
  269.  
  270. public static void main(String []args)
  271. {
  272. new StartingClass();
  273. }
  274. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement