Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.83 KB | None | 0 0
  1. package Spaceinvaders;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Font;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.Polygon;
  9. import java.awt.Rectangle;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.ComponentAdapter;
  13. import java.awt.event.ComponentEvent;
  14. import java.awt.event.KeyEvent;
  15. import java.awt.event.KeyListener;
  16. //import java.util.Timer;
  17.  
  18. import javax.swing.Timer;
  19. import javax.swing.JLabel;
  20. import javax.swing.JPanel;
  21. import javax.swing.ImageIcon;
  22. import javax.swing.JComponent;
  23. import javax.swing.JFrame;
  24.  
  25. public class Game extends JPanel implements KeyListener, Runnable{
  26.    
  27.     private boolean play = true;
  28.     private boolean bullet=false;
  29.     //private int score =0;
  30.     private Timer timer;
  31.     private int enemy_amount;
  32.     Thread t;
  33.     //private int vechicle_width=Config.FRAME_WIDTH/11;
  34.     private int delay = 5;
  35.     private int bulletposition_x;
  36.     private int bulletposition_y;
  37.     private int count_enemy=0;
  38.     //int x= Config.FRAME_WIDTH/11*2;
  39.     //int y=50;
  40.     boolean changemove = false;
  41.     Player player=new Player(Config.HEALTH_PLAYER, Config.PLAYER_X, Config.PLAYER_Y);
  42.    
  43.     Enemy enemy [] =  new Enemy[Config.TOTALENEMY];
  44.    
  45.    
  46.     public Game(String name ){
  47.    
  48.         new Thread(new Runnable() {
  49.  
  50.             @Override
  51.             public void run() {
  52.                 try {
  53.                     for(;;) {
  54.                        
  55.                     if((Config.ENEMY_X+((Config.LAST_ENEMY+1)*Config.VECHICLE_WIDTH))>=Config.FRAME_WIDTH) {
  56.                         changemove=true;
  57.                         enemy_moveLeft();
  58.                     }
  59.                     else if((Config.ENEMY_X+(Config.FIRST_ENEMY*Config.VECHICLE_WIDTH))<0) {
  60.                         changemove=false;
  61.                         enemy_moveRight();
  62.                     }
  63.                     else if(changemove) {
  64.                         enemy_moveLeft();
  65.                     }
  66.                     else {
  67.                         enemy_moveRight();
  68.                     }
  69.                     setDistribution();
  70.                     player.setPosition_x(Config.PLAYER_X);
  71.                     //repaint();
  72.                     Thread.sleep(10);
  73.                     //System.out.println(t);
  74.                     //System.out.println(x+" "+y);
  75.                     }
  76.                    
  77.                     //Thread.sleep(400);
  78.                     }
  79.                 catch(InterruptedException e) {
  80.                    
  81.                 }
  82.                
  83.                                  
  84.             }
  85.            
  86.         }).start();
  87.         new Thread(new Runnable() {
  88.  
  89.             @Override
  90.             public void run() {
  91.                 try {
  92.                     for(;;) {
  93.                         if(play) {
  94.                             for(int i=0; i<Config.TOTALENEMY;i++) {
  95.                                 if(enemy[i]!=null&&bullet) {
  96.                                     int xpoints[]={enemy[i].getPosition_x(),enemy[i].getPosition_x()+Config.VECHICLE_WIDTH/2,enemy[i].getPosition_x()+Config.VECHICLE_WIDTH};
  97.                                     int ypoints[]={enemy[i].getPosition_y()+(Config.VECHICLE_HEIGTH/2),enemy[i].getPosition_y()+Config.VECHICLE_HEIGTH,enemy[i].getPosition_y()+(Config.VECHICLE_HEIGTH/2)};
  98.                                     if(new Polygon(xpoints,ypoints,3).intersects(new Rectangle(bulletposition_x,bulletposition_y,Config.BULLET_WIDTH,Config.BULLET_HEIGTH))) {
  99.                                         Config.SCORES += enemy[i].getScore();
  100.                                         enemy[i]=null;
  101.                                         bullet=false;
  102.                                         count_enemy--;
  103.                                        
  104.                                     }
  105.                                 }      
  106.                             }
  107.                            
  108.                             bulletposition_x=bulletposition_x;
  109.                             bulletposition_y-=Config.BULLET_WIDTH;
  110.                             if(bulletposition_y<0) {
  111.                                 bullet=false;
  112.                                
  113.                             }
  114.                         }
  115.                        
  116.                         //repaint();
  117.                         player.setPosition_y(Config.PLAYER_Y);
  118.                        
  119.                        
  120.                         //timer = new Timer(delay,this);// Timer(int delay, ActionListener listener)
  121.                         Thread.sleep(10);
  122.                        
  123.                        
  124.                     }
  125.                    
  126.                     //Thread.sleep(400);
  127.                     }
  128.                 catch(InterruptedException e) {
  129.                    
  130.                 }
  131.                
  132.                                  
  133.             }
  134.            
  135.         }).start();
  136.         addKeyListener(this);
  137.         setFocusable(true);
  138.         setFocusTraversalKeysEnabled(false);
  139.         Distribution(Config.LEVEL_1);
  140.         t= new Thread(this);
  141.         t.start();
  142.        
  143.        
  144.        
  145.     }
  146.    
  147.     public void Distribution(int [][]level) {
  148.         int count=0;
  149.         for(int i=0;i<4;i++) {
  150.             for(int j=0; j<7;j++) {
  151.                
  152.                 switch(level[i][j]) {
  153.                 case 1:
  154.                    
  155.                     enemy[count]=new Enemy_1(Config.HEALTH_ENEMY_1,Config.ENEMY_X+Config.VECHICLE_WIDTH*j,Config.FIRST_LINE+Config.VECHICLE_HEIGTH*i);
  156.                     count_enemy++;
  157.                    
  158.                     break;
  159.                 case 2:
  160.                     enemy[count]=new Enemy_2(Config.HEALTH_ENEMY_2,Config.ENEMY_X+Config.VECHICLE_WIDTH*j,Config.FIRST_LINE+Config.VECHICLE_HEIGTH*i);
  161.                     count_enemy++;
  162.                    
  163.                     break;
  164.                
  165.                 case 0:
  166.                    
  167.                    
  168.                                                      
  169.                     break;
  170.                 }
  171.                 if(enemy[count]!=null) {
  172.                     if(j<Config.FIRST_ENEMY) {
  173.                         Config.setFirstEnemy(j);
  174.                        
  175.                     }
  176.                     if(j>Config.LAST_ENEMY) {
  177.                         Config.setLastEnemy(j);
  178.                     }
  179.                 }
  180.                
  181.                 count++;
  182.             }
  183.            
  184.            
  185.         }
  186.         enemy_amount=count;
  187.        
  188.     }
  189.     public void setDistribution() {
  190.         int count=0;
  191.         int first_enemy_amount=0;
  192.         int last_enemy_amount=0;
  193.         for(int i=0;i<4;i++) {
  194.             for(int j=0; j<7;j++) {
  195.                 if(j==Config.FIRST_ENEMY) {
  196.                     if(enemy[count]!=null) {
  197.                         first_enemy_amount++;
  198.                     }
  199.                 }
  200.                 if(j==Config.LAST_ENEMY) {
  201.                     if(enemy[count]!=null) {
  202.                         last_enemy_amount++;
  203.                     }
  204.                 }
  205.                
  206.                     if(count<enemy_amount) {
  207.                         if(enemy[count]==null){
  208.                             count++;
  209.                            
  210.                         }
  211.                         else {
  212.                             enemy[count].setPosition_x(Config.ENEMY_X+Config.VECHICLE_WIDTH*j);
  213.                             enemy[count].setPosition_y(Config.ENEMY_Y+Config.VECHICLE_HEIGTH*i);
  214.                             count++;
  215.                         }
  216.                     }
  217.                                                                            
  218.             }
  219.                
  220.         }
  221.         if(first_enemy_amount==0) {
  222.             Config.setFirstEnemy(Config.FIRST_ENEMY+1);
  223.            
  224.         }
  225.         if(last_enemy_amount==0) {
  226.             Config.setLastEnemy(Config.LAST_ENEMY-1);
  227.            
  228.         }
  229.     }
  230.        
  231.  
  232.    
  233.    
  234.     public void paintComponent(Graphics g) {
  235.         //background
  236.         g.setColor(Color.black);
  237.         g.fillRect(1, 1, Config.FRAME_WIDTH, Config.FRAME_HEIGTH);
  238.        
  239.        
  240.         //borders
  241.         //g.setColor(Color.yellow);
  242.         //g.fillRect(0,0,3,592);
  243.         //g.fillRect(0, 0, 992, 3);
  244.         //g.fillRect(992, 0, 3, 592);
  245.        
  246.         //player
  247.        
  248.         player.paint(g);
  249.        
  250.         // bullet
  251.         if(bullet) {
  252.         g.setColor(Color.white);
  253.         g.fillRect(bulletposition_x, bulletposition_y, Config.BULLET_WIDTH, Config.BULLET_HEIGTH);
  254.         }
  255.        
  256.         //enemy
  257.        
  258.         for( int i=0;i<Config.TOTALENEMY;i++) {
  259.             if(enemy[i]!=null)
  260.         enemy[i].paint(g);
  261.         }
  262.        
  263.         //scores
  264.         g.setColor(Color.white);
  265.         g.setFont(new Font("moja", Font.BOLD, 30));
  266.         g.drawString("scores:"+Integer.toString(Config.SCORES), 5, 30);
  267.        
  268.         //level
  269.         g.setColor(Color.white);
  270.         g.setFont(new Font("moja", Font.BOLD, 30));
  271.         g.drawString("LEVEL:"+Config.LEVEL, Config.FRAME_WIDTH-150, 30);
  272.        
  273.         //health
  274.         g.setColor(Color.white);
  275.         g.fillRect(Config.FRAME_WIDTH/2-55, 5, 110, 30);
  276.         g.setColor(Color.red);
  277.         g.fillRect(Config.FRAME_WIDTH/2-50, 10, player.getHealth(), 20);
  278.         g.setColor(Color.white);
  279.         g.setFont(new Font("moja", Font.BOLD, 15));
  280.         g.drawString(Integer.toString(player.getHealth())+"%", Config.FRAME_WIDTH/2-25, 25);
  281.         g.dispose();
  282.     }
  283.     @Override
  284.     public void keyTyped(KeyEvent e) {}
  285.     @Override
  286.     public void keyReleased(KeyEvent e) {}
  287.    
  288.     @Override
  289.    
  290.     public void keyPressed(KeyEvent e) {
  291.         if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
  292.             if(Config.PLAYER_X >= Config.FRAME_WIDTH-Config.VECHICLE_WIDTH) {
  293.                 Config.setPlayerX(Config.FRAME_WIDTH-Config.VECHICLE_WIDTH);
  294.             }
  295.             else {
  296.                 moveRight();
  297.             }
  298.         }
  299.         if(e.getKeyCode()==KeyEvent.VK_LEFT) {
  300.             if(Config.PLAYER_X <= 0) {
  301.                 Config.setPlayerX(0);
  302.             }
  303.             else {
  304.                 moveLeft();
  305.             }
  306.         }
  307.         if(e.getKeyChar()==' '&&bullet==false) {
  308.             bullet=true;
  309.             bulletposition_x=Config.PLAYER_X+(Config.VECHICLE_WIDTH/2);
  310.             bulletposition_y=Config.PLAYER_Y;
  311.            
  312.         }
  313.        
  314.     }
  315.     public void moveRight(){
  316.         play=true;
  317.         Config.movePlayerRight();
  318.         player.setPosition_x(Config.PLAYER_X);
  319.     }
  320.     public void moveLeft(){
  321.         play=true;
  322.         Config.movePlayerLeft();
  323.         player.setPosition_x(Config.PLAYER_X);
  324.    
  325.     }
  326.     public void enemy_moveRight(){
  327.        
  328.         for( int i=0;i<Config.TOTALENEMY;i++) {
  329.             if(enemy[i]!=null) {           
  330.                 enemy[i].setPosition_x((enemy[i].getPosition_x())+1);
  331.             }
  332.            
  333.         }
  334.         Config.setEnemyX(Config.ENEMY_X+=1);
  335.     }
  336.    
  337.  
  338.     public void enemy_moveLeft(){
  339.         for( int i=0;i<Config.TOTALENEMY;i++) {
  340.             if(enemy[i]!=null) {
  341.            
  342.         enemy[i].setPosition_x(enemy[i].getPosition_x()-1);
  343.             }
  344.            
  345.         }
  346.         Config.setEnemyX(Config.ENEMY_X-=1);
  347.    
  348.     }
  349.  
  350.     @Override
  351.     public void run() {
  352.         // TODO Auto-generated method stub
  353.        
  354.         try {
  355.                 for(;;) {
  356.                     if(count_enemy!=0) {
  357.                         repaint();
  358.                         Thread.sleep(10);
  359.                         System.out.println("tutaj");
  360.                     }
  361.                     else {
  362.                         Thread.sleep(5000);
  363.                         Config.LEVEL++;
  364.                          Config.setStartConfig();
  365.                         switch(Config.LEVEL) {
  366.                         case 1:
  367.                             Distribution(Config.LEVEL_1);
  368.                             break;
  369.                         case 2:
  370.                             Distribution(Config.LEVEL_2);
  371.                             break;
  372.                         case 3:
  373.                             Distribution(Config.LEVEL_3);
  374.                             break;
  375.                         case 4:
  376.                             Distribution(Config.LEVEL_4);
  377.                             break;
  378.                         case 5:
  379.                             Distribution(Config.LEVEL_5);
  380.                             break;
  381.                            
  382.                         }
  383.                     }
  384.                 }
  385.            
  386.         } catch (InterruptedException e) {
  387.             // TODO Auto-generated catch block
  388.             e.printStackTrace();
  389.         }
  390.        
  391.     }
  392.    
  393. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement