Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import flash.events.Event;
- import flash.events.KeyboardEvent;
- import flash.display.BitmapData;
- import flash.geom.Matrix;
- import flash.geom.Rectangle;
- import flash.display.Shape;
- import flash.display.MovieClip;
- import flash.geom.Point;
- import flash.text.TextField;
- import fl.events.ComponentEvent;
- public class Majn extends MovieClip {
- public static var szer:int = 800;
- public static var wys:int = 600;
- public static var liczbaGraczy:int = 4;
- public static var gracze:Array = [];
- public static var przeszkody:Array = [];
- public static var tablicaDelecji:Array = [];
- public static var dotSize:int = 5; // rozmiar gracza
- public var intro:Intro = new Intro();
- public var outl:Shape = new Shape();
- public var pouse:Boolean = false;
- public var outlajnBmpData:BitmapData;
- public var pktOutlajnu:Point;
- public var colSh:Shape = new Shape();
- public function tworzPlansze():void{
- outl.graphics.lineStyle(10,0xc0d311,1,true);
- outl.graphics.lineTo(szer,0);
- outl.graphics.lineTo(szer,wys);
- outl.graphics.lineTo(0,wys);
- outl.graphics.lineTo(0,0);
- addChild(outl);
- przeszkody.push(outl);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, steruj);
- }
- public function tworzGraczy():void{
- for(var i:int = 0; i < Intro.playersElem.length; i++)
- {
- if(Intro.playersElem[i][0].selected)
- {
- var player:Plajer = new Plajer(i * 0xc0de11 * i);
- player.id = gracze.length;
- player.y = (i+1) * (4 * dotSize);
- player.name = "p" + String(i);
- player.lewo = Intro.playersElem[i][2].text.charCodeAt(0);
- player.prawo = Intro.playersElem[i][3].text.charCodeAt(0);
- player.x = 20;
- addChild(player);
- gracze.push(player);
- }
- }
- }
- public function steruj(ke:KeyboardEvent){
- trace(ke.charCode);
- if(ke.charCode == 112)
- {
- if(pouse)
- {
- addEventListener(Event.ENTER_FRAME, ef);
- }
- else{
- removeEventListener(Event.ENTER_FRAME, ef);
- }
- pouse = !pouse;
- }
- else{
- for(var k:int = 0; k < gracze.length; k++)
- {
- if(ke.charCode == gracze[k].prawo)
- {
- gracze[k].chDir(true);
- }
- if(ke.charCode == gracze[k].lewo)
- {
- gracze[k].chDir(false);
- }
- } // sterowanie
- } // STEROWANIE
- }
- public function startGame(sg:ComponentEvent):void{
- intro.btnStart.removeEventListener(ComponentEvent.BUTTON_DOWN, startGame);
- removeChild(intro);
- tworzPlansze();
- tworzGraczy();
- addEventListener(Event.ENTER_FRAME, ef);
- stage.focus = stage;
- }
- public static function koniecGracza(ktory:int):void{
- trace('dodaję gracza', gracze[ktory].name, '(id:', gracze[ktory].id + ') do tablicy przeszkod (static hitTest).');
- przeszkody.push(gracze[ktory]);
- trace('teraz przeszkody mają', przeszkody.length, 'pozycje');
- gracze[ktory].alpha = .6;
- trace('usuwam gracza', gracze[ktory].name, '(id:', gracze[ktory].id + ') z tablicy graczy (dynamic hitTest).');
- gracze.splice(ktory,1);
- /*switch(gracze.length)
- {
- case 3:
- trace('3 to go');
- break;
- case 2:
- trace('player', gracze[0].name, 'vs player', gracze[1].name);
- break;
- case 1:
- trace('player', gracze[0].name, 'won the math!\nCan he breath the preasure?');
- break;
- case 0:
- trace('all dead. game over');
- break;
- }*/
- }
- public function poprawIdGracza():void{
- for(var d:int = 0; d < gracze.length; d++)
- {
- gracze[d].id = d;
- }
- }
- function testKolizjiGraczy():void{
- for(var n:int = 0; n < gracze.length; n++)
- {
- var at2:Point = gracze[n].localToGlobal(gracze[n].cp); // punkt-czubek gracza ktory bedzie testowany
- for(var nn:int = 0; nn < gracze.length; nn++)
- {
- var jadacy:Rectangle = gracze[nn].getBounds(this);
- var jadacyObrys:Matrix = gracze[nn].transform.matrix;
- jadacyObrys.tx = gracze[nn].x - jadacy.x;
- jadacyObrys.ty = gracze[nn].y - jadacy.y;
- var jadacyBmpData = new BitmapData(jadacy.width, jadacy.height, true, 0);
- jadacyBmpData.draw(gracze[nn], jadacyObrys);
- var pktJadacego:Point = new Point(jadacy.x, jadacy.y); //ustalanie obszaru testu - dany gracz jest obszarem
- if(n != nn)
- {
- if(jadacyBmpData.hitTest(pktJadacego, 1, at2))
- {
- tablicaDelecji.push(gracze[n].id);
- }
- }
- }
- } // kolizje dynamiczne z transformmatrix
- }
- function testKolizjiObiektow():void{
- for(var m:int = 0; m < gracze.length; m++)
- {
- var at3:Point = gracze[m].localToGlobal(gracze[m].cp); // punkt-czubek gracza ktory bedzie testowany
- for(var mm:int = 0; mm < przeszkody.length; mm++)
- {
- var outlajnSnapszot:Rectangle = przeszkody[mm].getBounds(this);
- outlajnBmpData = new BitmapData(outlajnSnapszot.width, outlajnSnapszot.height, true, 0);
- outlajnBmpData.draw(przeszkody[mm]);
- pktOutlajnu = new Point(przeszkody[mm].x, przeszkody[mm].y);
- if(outlajnBmpData.hitTest(pktOutlajnu, 255, at3))
- {
- trace('gracz');//, gracze[m].name, '(id:', gracze[m].id + ') wjechal w trupa lub element planszy');
- //koniecGracza(m, false);
- tablicaDelecji.push(gracze[m].id);
- }
- }
- }// kolizje statyczne - nieruchome obiekty
- }
- function usuniecieKolidujacych():void{
- for(var r:int = 0; r < tablicaDelecji.length; r++)
- {
- for(var rr:int = 0; rr < gracze.length; rr++)
- {
- if(tablicaDelecji[r] == gracze[rr].id)
- {
- koniecGracza(rr)
- rr = 0;
- }
- }
- } // usuwanie graczy
- if(tablicaDelecji.length > 0)
- {
- renewIDs();
- }
- }
- function ef(e:Event):void{
- for(var j:int = 0; j < gracze.length; j++)
- {
- gracze[j].ruch();
- } // ruch kazdego z graczy
- tablicaDelecji = [];
- testKolizjiGraczy();
- testKolizjiObiektow();
- usuniecieKolidujacych();
- }
- public static function renewIDs():void{
- for(var d:int = 0; d < gracze.length; d++)
- {
- gracze[d].id = d;
- }
- trace('teraz w tablicy graczy (dynamic hitTest) zostało:')
- for(var dd:int = 0; dd < gracze.length; dd++)
- {
- trace(gracze[dd].name, '(id:', gracze[dd].id + ')');
- }
- }
- public function Majn() {
- // constructor code
- intro.x = szer /2 - (intro.width /2);
- intro.y = wys /2 - (intro.height /2);
- intro.btnStart.addEventListener(ComponentEvent.BUTTON_DOWN, startGame);
- addChild(intro);
- }
- }
- }
Add Comment
Please, Sign In to add comment