Guest User

Untitled

a guest
Jan 14th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package  {
  2.     import flash.events.Event;
  3.     import flash.events.KeyboardEvent;
  4.     import flash.display.BitmapData;
  5.     import flash.geom.Matrix;
  6.     import flash.geom.Rectangle;
  7.     import flash.display.Shape;
  8.     import flash.display.MovieClip;
  9.     import flash.geom.Point;
  10.     import flash.text.TextField;
  11.     import fl.events.ComponentEvent;
  12.    
  13.  
  14.     public class Majn extends MovieClip {
  15.         public static var szer:int = 800;
  16.         public static var wys:int = 600;
  17.         public static var liczbaGraczy:int = 4;
  18.         public static var gracze:Array = [];
  19.         public static var przeszkody:Array = [];
  20.         public static var tablicaDelecji:Array = [];
  21.         public static var dotSize:int = 5; // rozmiar gracza
  22.         public var intro:Intro = new Intro();
  23.         public var outl:Shape = new Shape();
  24.        
  25.         public var pouse:Boolean = false;
  26.        
  27.         public var outlajnBmpData:BitmapData;
  28.         public var pktOutlajnu:Point;
  29.         public var colSh:Shape = new Shape();
  30.        
  31.         public function tworzPlansze():void{           
  32.             outl.graphics.lineStyle(10,0xc0d311,1,true);
  33.             outl.graphics.lineTo(szer,0);
  34.             outl.graphics.lineTo(szer,wys);
  35.             outl.graphics.lineTo(0,wys);
  36.             outl.graphics.lineTo(0,0);
  37.             addChild(outl);
  38.             przeszkody.push(outl);
  39.             stage.addEventListener(KeyboardEvent.KEY_DOWN, steruj);
  40.         }
  41.        
  42.         public function tworzGraczy():void{
  43.             for(var i:int = 0; i < Intro.playersElem.length; i++)
  44.             {
  45.                 if(Intro.playersElem[i][0].selected)
  46.                 {
  47.                     var player:Plajer = new Plajer(i * 0xc0de11 * i);
  48.                         player.id = gracze.length;
  49.                         player.y = (i+1) * (4 * dotSize);
  50.                         player.name = "p" + String(i);
  51.                         player.lewo = Intro.playersElem[i][2].text.charCodeAt(0);
  52.                         player.prawo = Intro.playersElem[i][3].text.charCodeAt(0);
  53.                         player.x = 20;
  54.                        
  55.                     addChild(player);
  56.                     gracze.push(player);
  57.                 }
  58.             }
  59.         }
  60.        
  61.         public function steruj(ke:KeyboardEvent){
  62.             trace(ke.charCode);
  63.             if(ke.charCode == 112)
  64.             {
  65.                 if(pouse)
  66.                 {
  67.                     addEventListener(Event.ENTER_FRAME, ef);
  68.                 }
  69.                 else{
  70.                     removeEventListener(Event.ENTER_FRAME, ef);
  71.                 }
  72.                 pouse = !pouse;
  73.             }
  74.             else{
  75.                 for(var k:int = 0; k < gracze.length; k++)
  76.                 {
  77.                     if(ke.charCode == gracze[k].prawo)
  78.                     {
  79.                         gracze[k].chDir(true);
  80.                     }
  81.                     if(ke.charCode == gracze[k].lewo)
  82.                     {
  83.                         gracze[k].chDir(false);
  84.                     }
  85.                 } // sterowanie
  86.             } // STEROWANIE
  87.         }
  88.        
  89.         public function startGame(sg:ComponentEvent):void{
  90.             intro.btnStart.removeEventListener(ComponentEvent.BUTTON_DOWN, startGame);
  91.             removeChild(intro);
  92.             tworzPlansze();
  93.             tworzGraczy();
  94.             addEventListener(Event.ENTER_FRAME, ef);
  95.             stage.focus = stage;
  96.         }
  97.        
  98.         public static function koniecGracza(ktory:int):void{
  99.                
  100.                     trace('dodaję gracza', gracze[ktory].name, '(id:', gracze[ktory].id + ') do tablicy przeszkod (static hitTest).');
  101.                    
  102.                     przeszkody.push(gracze[ktory]);
  103.                     trace('teraz przeszkody mają', przeszkody.length, 'pozycje');
  104.    
  105.                 gracze[ktory].alpha = .6;
  106.                 trace('usuwam gracza', gracze[ktory].name, '(id:', gracze[ktory].id + ') z tablicy graczy (dynamic hitTest).');
  107.                 gracze.splice(ktory,1);
  108.                
  109.                 /*switch(gracze.length)
  110.                 {
  111.                     case 3:
  112.                         trace('3 to go');
  113.                         break;
  114.                     case 2:
  115.                         trace('player', gracze[0].name, 'vs player',  gracze[1].name);
  116.                         break;
  117.                     case 1:
  118.                         trace('player', gracze[0].name, 'won the math!\nCan he breath the preasure?');
  119.                         break;
  120.                     case 0:
  121.                         trace('all dead. game over');
  122.                         break;
  123.                 }*/
  124.                
  125.             }
  126.        
  127.         public function poprawIdGracza():void{
  128.             for(var d:int = 0; d < gracze.length; d++)
  129.             {
  130.                 gracze[d].id = d;
  131.             }
  132.         }
  133.        
  134.         function testKolizjiGraczy():void{
  135.             for(var n:int = 0; n < gracze.length; n++)
  136.             {
  137.                 var at2:Point = gracze[n].localToGlobal(gracze[n].cp); // punkt-czubek gracza ktory bedzie testowany
  138.                
  139.                 for(var nn:int = 0; nn < gracze.length; nn++)
  140.                 {
  141.                     var jadacy:Rectangle = gracze[nn].getBounds(this);
  142.                     var jadacyObrys:Matrix = gracze[nn].transform.matrix;
  143.                         jadacyObrys.tx = gracze[nn].x - jadacy.x;
  144.                         jadacyObrys.ty = gracze[nn].y - jadacy.y;  
  145.                     var jadacyBmpData = new BitmapData(jadacy.width, jadacy.height, true, 0);
  146.                         jadacyBmpData.draw(gracze[nn], jadacyObrys);
  147.                     var pktJadacego:Point = new Point(jadacy.x, jadacy.y); //ustalanie obszaru testu - dany gracz jest obszarem
  148.                     if(n != nn)
  149.                     {
  150.                         if(jadacyBmpData.hitTest(pktJadacego, 1, at2))
  151.                         {          
  152.                             tablicaDelecji.push(gracze[n].id);
  153.                         }
  154.                     }
  155.                 }
  156.            
  157.             } // kolizje dynamiczne z transformmatrix
  158.         }
  159.        
  160.         function testKolizjiObiektow():void{
  161.             for(var m:int = 0; m < gracze.length; m++)
  162.             {
  163.                 var at3:Point = gracze[m].localToGlobal(gracze[m].cp); // punkt-czubek gracza ktory bedzie testowany
  164.                
  165.                 for(var mm:int = 0; mm < przeszkody.length; mm++)
  166.                 {
  167.                     var outlajnSnapszot:Rectangle = przeszkody[mm].getBounds(this);
  168.                    
  169.                     outlajnBmpData = new BitmapData(outlajnSnapszot.width, outlajnSnapszot.height, true, 0);
  170.                     outlajnBmpData.draw(przeszkody[mm]);
  171.                     pktOutlajnu = new Point(przeszkody[mm].x, przeszkody[mm].y);
  172.        
  173.                     if(outlajnBmpData.hitTest(pktOutlajnu, 255, at3))
  174.                     {
  175.  
  176.                         trace('gracz');//, gracze[m].name, '(id:', gracze[m].id + ') wjechal w trupa lub element planszy');
  177.                         //koniecGracza(m, false);
  178.                         tablicaDelecji.push(gracze[m].id);
  179.                     }  
  180.                 }
  181.             }// kolizje statyczne - nieruchome obiekty
  182.            
  183.         }
  184.         function usuniecieKolidujacych():void{
  185.             for(var r:int = 0; r < tablicaDelecji.length; r++)
  186.             {
  187.                 for(var rr:int = 0; rr < gracze.length; rr++)
  188.                 {
  189.                     if(tablicaDelecji[r] == gracze[rr].id)
  190.                     {
  191.                         koniecGracza(rr)
  192.                         rr = 0;
  193.                     }
  194.                 }
  195.             } // usuwanie graczy
  196.             if(tablicaDelecji.length > 0)
  197.             {
  198.                 renewIDs();
  199.             }
  200.         }
  201.        
  202.         function ef(e:Event):void{
  203.             for(var j:int = 0; j < gracze.length; j++)
  204.             {
  205.                 gracze[j].ruch();
  206.             } // ruch kazdego z graczy
  207.            
  208.             tablicaDelecji = [];
  209.             testKolizjiGraczy();
  210.             testKolizjiObiektow();
  211.             usuniecieKolidujacych();
  212.         }
  213.        
  214.     public static function renewIDs():void{
  215.         for(var d:int = 0; d < gracze.length; d++)
  216.             {
  217.                 gracze[d].id = d;
  218.             }
  219.             trace('teraz w tablicy graczy (dynamic hitTest) zostało:')
  220.             for(var dd:int = 0; dd < gracze.length; dd++)
  221.             {
  222.                 trace(gracze[dd].name, '(id:', gracze[dd].id + ')');
  223.             }
  224.     }
  225.        
  226.         public function Majn() {
  227.             // constructor code
  228.                 intro.x = szer /2 - (intro.width /2);
  229.                 intro.y = wys /2 - (intro.height /2);
  230.                 intro.btnStart.addEventListener(ComponentEvent.BUTTON_DOWN, startGame);
  231.             addChild(intro);
  232.         }
  233.     }
  234.    
  235. }
Add Comment
Please, Sign In to add comment