Advertisement
matthewdvista

Snake

Jan 24th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package {
  2.     import flash.display.MovieClip;
  3.     import flash.events.Event;
  4.     import flash.events.KeyboardEvent;
  5.     import flash.events.MouseEvent;
  6.     import flash.geom.ColorTransform;
  7.     import flash.text.TextField;
  8.     import flash.text.TextFormat;
  9.     import flash.utils.Timer;
  10.     import flash.events.TimerEvent;
  11.     import flash.media.Sound;
  12.     import flash.media.SoundChannel;
  13.  
  14.     public class FPTCode extends MovieClip {
  15.  
  16.         public function FPTCode() {
  17.  
  18.             // Variables
  19.  
  20.             var HeadX: Number = Math.ceil(((stage.stageWidth - 25) / (25)) * Math.random()) * 25;
  21.             var HeadY: Number = Math.ceil((((stage.stageHeight - 25) - 25) / (25)) * Math.random()) * 25;
  22.             var FoodX: Number = Math.ceil(((stage.stageWidth - 25) / (25)) * Math.random()) * 25;
  23.             var FoodY: Number = Math.ceil((((stage.stageHeight - 25) - 25) / (25)) * Math.random()) * 25;
  24.         //  var ScoreNum: Number = 0;
  25.             var Answer:Number = 0;
  26.             var SnakeSpeed:Number = 0.5;
  27.             var Speed: Number = 15;
  28.             var Angle: Number = 0;
  29.             var ApplesHit: Number = 0;
  30.  
  31.             var Dir: String = "stop"; // direction of snake
  32.             var DirPower: String = "down";
  33.  
  34.             var Game1Start: Boolean = false;
  35.             var Game2Start: Boolean = false;
  36.             var Game3Start: Boolean = false;
  37.             var GameOneDone: Boolean = false;
  38.             var GameTwoDone: Boolean = false;
  39.             var GameThreeDone: Boolean = false;
  40.             var ShootCheck: Boolean = true;
  41.  
  42.             var KeyFrame: int;
  43.             var Span: int = 2;
  44.             var FrameNum: int = 0;
  45.  
  46.             // Arrays
  47.  
  48.             var BodyArray: Array = new Array();
  49.             var FoodArray: Array = new Array();
  50.             var AmmoArray: Array = new Array();
  51.             var ShootArray: Array = new Array();
  52.             var XArray: Array = new Array();
  53.             var YArray: Array = new Array();
  54.  
  55.             // On Load
  56.  
  57.             // Title
  58.             var Title: TextField = new TextField();
  59.             addChild(Title);
  60.             Title.x = 185;
  61.             Title.y = 100;
  62.             Title.width = 200;
  63.             Title.text = "SNAKE";
  64.  
  65.             var TitleTF: TextFormat = new TextFormat();
  66.             TitleTF.font = "Comic Sans MS";
  67.             TitleTF.size = 50;
  68.             TitleTF.color = 0x00CC00;
  69.  
  70.             Title.setTextFormat(TitleTF);
  71.  
  72.             // Score
  73.             var Score: TextField = new TextField();
  74.             addChild(Score);
  75.             Score.x = 0;
  76.             Score.y = 370;
  77.             Score.visible = false;
  78.             Score.width = 150;
  79.             Score.text = "Score: " + String(ScoreNum);
  80.  
  81.             var ScoreTF: TextFormat = new TextFormat();
  82.             ScoreTF.font = "Comic Sans MS";
  83.             ScoreTF.size = 25;
  84.             ScoreTF.color = 0xFFFFFF;
  85.  
  86.             Score.setTextFormat(ScoreTF);
  87.  
  88.             // Level Complete
  89.             var LevelComplete: levelcomplete = new levelcomplete();
  90.             addChild(LevelComplete);
  91.             LevelComplete.x = 275;
  92.             LevelComplete.y = 100;
  93.             LevelComplete.visible = false;
  94.  
  95.             // Next Level
  96.             var NextLevel: nextlevel = new nextlevel();
  97.             addChild(NextLevel);
  98.             NextLevel.x = 275;
  99.             NextLevel.y = 200;
  100.             NextLevel.buttonMode = true;
  101.             NextLevel.visible = false;
  102.  
  103.             // Game Over
  104.             var GameOver: gameover = new gameover();
  105.             addChild(GameOver);
  106.             GameOver.x = 275;
  107.             GameOver.y = 187.5;
  108.             GameOver.visible = false;
  109.             GameOver.buttonMode = true;
  110.  
  111.             // Start Buttons
  112.             var Start: startbutton = new startbutton();
  113.             addChild(Start);
  114.             Start.x = 275;
  115.             Start.y = 300;
  116.             Start.buttonMode = true;
  117.  
  118.             // Snake Head
  119.             var Head: snakehead = new snakehead();
  120.             addChild(Head);
  121.             Head.x = HeadX - 12.5;
  122.             Head.y = HeadY - 12.5;
  123.             Head.visible = false;
  124.  
  125.             BodyArray.push(Head);
  126.  
  127.             // Food
  128.             var Food: food = new food();
  129.             addChild(Food);
  130.             Food.x = FoodX - 12.5;
  131.             Food.y = FoodY - 12.5;
  132.             Food.visible = false;
  133.  
  134.             // Starting Text
  135.             var GameObjective1: TextField = new TextField();
  136.             addChild(GameObjective1);
  137.             GameObjective1.x = 80;
  138.             GameObjective1.y = 170;
  139.             GameObjective1.width = 500;
  140.             GameObjective1.visible = false;
  141.             GameObjective1.text = "Gain 50 points by eating the apples!";
  142.  
  143.             var GameObjective2: TextField = new TextField();
  144.             addChild(GameObjective2);
  145.             GameObjective2.x = 30;
  146.             GameObjective2.y = 170;
  147.             GameObjective2.width = 500;
  148.             GameObjective2.visible = false;
  149.             GameObjective2.text = "Shoot all the apples by aiming and clicking!";
  150.  
  151.             var GameObjective3: TextField = new TextField();
  152.             addChild(GameObjective3);
  153.             GameObjective3.x = 30;
  154.             GameObjective3.y = 170;
  155.             GameObjective3.width = 500;
  156.             GameObjective3.visible = false;
  157.             GameObjective3.text = "Answer the three questions correctly to win the game!";
  158.  
  159.             var GameObjectiveTF: TextFormat = new TextFormat();
  160.             GameObjectiveTF.color = 0x0066FF;
  161.             GameObjectiveTF.size = 25;
  162.             GameObjectiveTF.font = "Comic Sans MS";
  163.  
  164.             GameObjective1.setTextFormat(GameObjectiveTF);
  165.             GameObjective2.setTextFormat(GameObjectiveTF);
  166.             GameObjective3.setTextFormat(GameObjectiveTF);
  167.  
  168.             // Apple Bite Sound Effect
  169.             var AppleBite: applebite = new applebite();
  170.             var AppleBiteChannel: SoundChannel;
  171.  
  172.             // Timers
  173.  
  174.             var SnakeTimer1: Timer = new Timer(3000, 1);
  175.             var SnakeTimer2: Timer = new Timer(3000, 1);
  176.             var SnakeTimer3: Timer = new Timer(3000, 1);
  177.  
  178.             // Snake Shooter
  179.             var SnakePower: snake = new snake();
  180.             addChild(SnakePower);
  181.             SnakePower.visible = false;
  182.             SnakePower.x = 275;
  183.             SnakePower.y = 360;
  184.  
  185.             // Slithering Snake
  186.             var Snake: snake2 = new snake2();
  187.             addChild(Snake);
  188.             Snake.visible = false;
  189.             Snake.x = 275;
  190.             Snake.y = 375;
  191.  
  192.             // Events
  193.  
  194.             addEventListener(Event.ENTER_FRAME, MainFun);
  195.             function MainFun(evt: Event): void {
  196.  
  197.                 SnakeEat();
  198.                 MoveSnakeHead();
  199.                 CheckScore();
  200.                 SnakeRestrictions();
  201.                 GameWin1();
  202.                 MoveAmmo();
  203.                 PowerFun();
  204.                 Game2Win();
  205.                 Animating();
  206.  
  207.             }
  208.  
  209.             stage.addEventListener(KeyboardEvent.KEY_DOWN, SnakeMove);
  210.             function SnakeMove(evt: KeyboardEvent): void {
  211.  
  212.                 if (evt.keyCode == 37 && Dir != "left" && Dir != "right") {
  213.  
  214.                     Dir = "left";
  215.                     Head.rotation = 0;
  216.  
  217.                 } else if (evt.keyCode == 38 && Dir != "up" && Dir != "down") {
  218.  
  219.                     Dir = "up";
  220.                     Head.rotation = 90;
  221.  
  222.                 } else if (evt.keyCode == 39 && Dir != "right" && Dir != "left") {
  223.  
  224.                     Dir = "right";
  225.                     Head.rotation = -180;
  226.  
  227.                 } else if (evt.keyCode == 40 && Dir != "down" && Dir != "up") {
  228.  
  229.                     Dir = "down";
  230.                     Head.rotation = -90;
  231.  
  232.                 }
  233.  
  234.                 if (evt.keyCode == 37 && Game3Start == true) {
  235.  
  236.                     Dir = "left";
  237.                     Snake.rotation = 180;
  238.  
  239.                 } else if (evt.keyCode == 38 && Game3Start == true) {
  240.  
  241.                     Dir = "up";
  242.                     Snake.rotation = 270;
  243.  
  244.                 } else if (evt.keyCode == 39 && Game3Start == true) {
  245.  
  246.                     Dir = "right";
  247.                     Snake.rotation = 0;
  248.  
  249.                 } else if (evt.keyCode == 40 && Game3Start == true) {
  250.  
  251.                     Dir = "down";
  252.                     Snake.rotation = 90;
  253.  
  254.                 }
  255.  
  256.             }
  257.  
  258.             stage.addEventListener(KeyboardEvent.KEY_UP, StopSnake);
  259.             function StopSnake(evt: KeyboardEvent): void {
  260.  
  261.                 if (Game3Start) {
  262.  
  263.                     if (evt.keyCode == 37) {
  264.  
  265.                         Dir = "stop";
  266.  
  267.                     } else if (evt.keyCode == 38) {
  268.  
  269.                         Dir = "stop"
  270.  
  271.                     } else if (evt.keyCode == 39) {
  272.  
  273.                         Dir = "stop"
  274.  
  275.                     } else if (evt.keyCode == 40) {
  276.  
  277.                         Dir = "stop"
  278.  
  279.                     }
  280.  
  281.                 }
  282.             }
  283.  
  284.             Start.addEventListener(MouseEvent.CLICK, StartGame);
  285.             function StartGame(evt: MouseEvent): void {
  286.  
  287.                 Start.visible = false;
  288.                 Title.visible = false;
  289.                 GameObjective1.visible = true;
  290.                 SnakeTimer1.start();
  291.  
  292.             }
  293.  
  294.             SnakeTimer1.addEventListener(TimerEvent.TIMER, Countdown1);
  295.             function Countdown1(evt: TimerEvent): void {
  296.  
  297.                 Food.visible = true;
  298.                 Head.visible = true;
  299.                 Score.visible = true;
  300.                 Snake.visible = true;
  301.                 GameObjective1.visible = false;
  302.                 Game1Start = true;
  303.  
  304.             }
  305.  
  306.             NextLevel.addEventListener(MouseEvent.CLICK, LevelNext);
  307.             function LevelNext(evt: MouseEvent): void {
  308.  
  309.                 if (GameOneDone && GameTwoDone != true) {
  310.  
  311.                     NextLevel.visible = false;
  312.                     LevelComplete.visible = false;
  313.                     GameObjective2.visible = true;
  314.                     SnakeTimer2.start();
  315.  
  316.                     for (var i: Number = 0; i < BodyArray.length; i++) {
  317.  
  318.                         BodyArray[i].visible = false;
  319.  
  320.                     }
  321.  
  322.                 }
  323.  
  324.                 if (Game2Start == false && GameTwoDone == true) {
  325.  
  326.                     NextLevel.visible = false;
  327.                     LevelComplete.visible = false;
  328.                     GameObjective3.visible = true;
  329.                     SnakeTimer3.start();
  330.  
  331.                 }
  332.  
  333.  
  334.  
  335.             }
  336.  
  337.             SnakeTimer2.addEventListener(TimerEvent.TIMER, Countdown2);
  338.             function Countdown2(evt: TimerEvent): void {
  339.  
  340.                 GameObjective2.visible = false;
  341.                 StartLevel2();
  342.  
  343.             }
  344.  
  345.             SnakeTimer3.addEventListener(TimerEvent.TIMER, Countdown3);
  346.             function Countdown3(evt: TimerEvent): void {
  347.  
  348.                 GameObjective3.visible = false;
  349.                 Game3Start = true;
  350.                 Snake.visible = true;
  351.  
  352.             }
  353.  
  354.             stage.addEventListener(MouseEvent.MOUSE_MOVE, AimSnake);
  355.             function AimSnake(evt: MouseEvent): void {
  356.                 if (Game2Start == true) {
  357.                     SnakePower.rotation = Math.atan2(mouseY - SnakePower.y, mouseX - SnakePower.x) * 180 / Math.PI + 90;
  358.                     Angle = Math.atan2(SnakePower.y - mouseY, SnakePower.x - mouseX) * 180 / Math.PI - 90;
  359.                 }
  360.             }
  361.  
  362.             stage.addEventListener(MouseEvent.MOUSE_DOWN, ShootFun);
  363.             function ShootFun(evt: MouseEvent): void {
  364.  
  365.                 if (ShootCheck == true && Game2Start == true && GameTwoDone == false) {
  366.  
  367.                     Speed = 0;
  368.                     DirPower = "up";
  369.  
  370.                     var Ammo: ammo = new ammo();
  371.                     AmmoArray.push(Ammo);
  372.                     addChild(AmmoArray[AmmoArray.length - 1]);
  373.                     AmmoArray[AmmoArray.length - 1].x = SnakePower.x;
  374.                     AmmoArray[AmmoArray.length - 1].y = SnakePower.y;
  375.  
  376.                     AmmoArray[AmmoArray.length - 1].rotation = SnakePower.rotation;
  377.                     SnakePower.rotation = (Math.atan2(SnakePower.y - mouseY, SnakePower.x - mouseX) * 180 / Math.PI) - 90;
  378.  
  379.                     XArray.push(0);
  380.                     YArray.push(0);
  381.                     ShootArray.push(false);
  382.                     ShootCheck = false;
  383.  
  384.                 }
  385.  
  386.             }
  387.  
  388.             stage.addEventListener(MouseEvent.MOUSE_UP, ShootFun2);
  389.             function ShootFun2(evt: MouseEvent): void {
  390.  
  391.                 if (Game2Start == true) {
  392.                     Angle = (SnakePower.rotation + 90) * Math.PI / 180;
  393.  
  394.                     XArray[XArray.length - 1] = Math.cos(Angle) * Speed;
  395.                     YArray[YArray.length - 1] = Math.sin(Angle) * Speed;
  396.  
  397.                     ShootArray[ShootArray.length - 1] = true;
  398.                     ShootCheck = true;
  399.  
  400.                 }
  401.             }
  402.  
  403.             stage.addEventListener(MouseEvent.MOUSE_MOVE, Aim);
  404.             function Aim(evt: MouseEvent): void {
  405.  
  406.                 if (Game2Start == true) {
  407.  
  408.                     Angle = SnakePower.rotation;
  409.                     SnakePower.rotation = Math.atan2(SnakePower.y - mouseY, SnakePower.x - mouseX) * 180 / Math.PI - 90;
  410.  
  411.                     if (ShootArray[ShootArray.length - 1] == false) {
  412.                         AmmoArray[AmmoArray.length - 1].rotation = SnakePower.rotation;
  413.                     }
  414.  
  415.                 }
  416.  
  417.             }
  418.  
  419.             // Functions
  420.  
  421.             // Level One: Snake
  422.  
  423.             function SnakeEat(): void {
  424.  
  425.                 if (Game1Start) {
  426.  
  427.                     if (FrameNum == Span - 1) {
  428.  
  429.                         if (Head.x == Food.x && Head.y == Food.y) {
  430.  
  431.                             AppleBiteChannel = AppleBite.play();
  432.                             NewFood();
  433.                             AttachNewPart();
  434.  
  435.                         }
  436.  
  437.                         for (var i: int = BodyArray.length - 1; i > 0; i--) {
  438.  
  439.                             BodyArray[i].x = BodyArray[(i - 1)].x;
  440.                             BodyArray[i].y = BodyArray[(i - 1)].y;
  441.  
  442.                         }
  443.  
  444.                     }
  445.  
  446.                 }
  447.  
  448.             }
  449.  
  450.             function NewFood(): void {
  451.  
  452.                 FoodX = Math.ceil(((stage.stageWidth - 25) / (25)) * Math.random()) * 25;
  453.                 FoodY = Math.ceil((((stage.stageHeight - 25) - 25) / (25)) * Math.random()) * 25;
  454.  
  455.                 Food.x = FoodX - 12.5;
  456.                 Food.y = FoodY - 12.5;
  457.  
  458.             }
  459.  
  460.             function MoveSnakeHead(): void {
  461.  
  462.                 KeyFrame = FrameNum / Span;
  463.  
  464.                 if (Game1Start) {
  465.  
  466.                     if (FrameNum / Span == KeyFrame) {
  467.  
  468.                         if (Dir == "left") {
  469.  
  470.                             Head.x -= 25;
  471.  
  472.                         } else if (Dir == "up") {
  473.  
  474.                             Head.y -= 25;
  475.  
  476.                         } else if (Dir == "right") {
  477.  
  478.                             Head.x += 25;
  479.  
  480.                         } else if (Dir == "down") {
  481.  
  482.                             Head.y += 25;
  483.  
  484.                         }
  485.  
  486.                         FrameNum = 0;
  487.  
  488.                     }
  489.  
  490.                     FrameNum++;
  491.  
  492.                 }
  493.  
  494.             }
  495.            
  496.             function ScoreFunction(x, y):void{
  497.                
  498.                
  499.                
  500.                
  501.             }
  502.  
  503.             function CheckScore(): void {
  504.  
  505.                 Score.text = "Score: " + String(Answer);
  506.                 Score.setTextFormat(ScoreTF);
  507.  
  508.             }
  509.  
  510.             function AttachNewPart(): void {
  511.  
  512.                 if (Game1Start) {
  513.  
  514.                     var NewPart1: snakebody = new snakebody();
  515.                     addChild(NewPart1);
  516.                     BodyArray.push(NewPart1);
  517.                     //ScoreNum += 5;
  518.  
  519.                 }
  520.  
  521.             }
  522.  
  523.             function SnakeRestrictions(): void {
  524.  
  525.                 if (Game1Start) {
  526.  
  527.                     if (Dir == "left" && Head.x < 0) {
  528.  
  529.                         SnakeDead();
  530.  
  531.                     } else if (Dir == "up" && Head.y < 0) {
  532.  
  533.                         SnakeDead();
  534.  
  535.                     } else if (Dir == "right" && Head.x > 550) {
  536.  
  537.                         SnakeDead();
  538.  
  539.                     } else if (Dir == "down" && Head.y > 375) {
  540.  
  541.                         SnakeDead();
  542.  
  543.                     }
  544.  
  545.                 }
  546.  
  547.             }
  548.  
  549.             function Animating(): void {
  550.  
  551.                 if (Game1Start == true && GameOneDone == false) {
  552.  
  553.                     var i:Number = 0;
  554.                     while (i < 50) {
  555.  
  556.                         Snake.x += SnakeSpeed;
  557.                         i++;
  558.  
  559.                     }
  560.                    
  561.                     if (Snake.x > 550) SnakeSpeed *= -1;
  562.                     if (Snake.x < 50) SnakeSpeed *= -1;
  563.                 }
  564.             }
  565.  
  566.             function SnakeDead(): void {
  567.  
  568.                 Head.visible = false;
  569.                 Score.visible = false;
  570.                 ScoreNum = 0;
  571.                 Food.visible = false;
  572.                 GameOver.visible = true;
  573.                 Game1Start = false;
  574.  
  575.             }
  576.  
  577.             function GameWin1(): void {
  578.  
  579.                 if (ScoreNum == 50 && Game1Start == true) {
  580.  
  581.                     for (var i: Number = 0; i > BodyArray.length - 1; i++) {
  582.  
  583.                         BodyArray.visible = false;
  584.  
  585.                     }
  586.  
  587.                     Dir = "stop";
  588.                     Snake.visible = false;
  589.                     LevelComplete.visible = true;
  590.                     NextLevel.visible = true;
  591.                     Food.visible = false;
  592.                     Game1Start = false;
  593.                     Score.visible = false;
  594.                     //ScoreNum = 0;
  595.                     GameOneDone = true;
  596.  
  597.                 }
  598.  
  599.             }
  600.  
  601.             // Level 2: Apple Shooter
  602.  
  603.             function StartLevel2(): void {
  604.  
  605.                 Game2Start = true;
  606.                 PlaceFoodOnStage();
  607.                 SnakePower.visible = true;
  608.  
  609.             }
  610.  
  611.             function PlaceFoodOnStage(): void {
  612.  
  613.                 for (var i: Number = 0; i < 10; i++) {
  614.                     for (var j: Number = 0; j < 5; j++) {
  615.  
  616.                         var Food: food = new food();
  617.                         FoodArray.push(Food);
  618.                         addChild(FoodArray[FoodArray.length - 1]);
  619.                         FoodArray[FoodArray.length - 1].x = i * 50 + 50;
  620.                         FoodArray[FoodArray.length - 1].y = j * 50 + 25;
  621.  
  622.                     }
  623.                 }
  624.  
  625.             }
  626.  
  627.             function MoveAmmo(): void {
  628.  
  629.                 for (var i: Number = 0; i < AmmoArray.length; i++) {
  630.  
  631.                     if (ShootArray[i] == true) {
  632.  
  633.                         AmmoArray[i].x -= XArray[i];
  634.                         AmmoArray[i].y -= YArray[i];
  635.                         YArray[i] -= 0.33;
  636.  
  637.                         AmmoArray[i].rotation = Math.atan2(YArray[i], XArray[i]) * 180 / Math.PI - 90;
  638.  
  639.                         if (AmmoArray[i].x > 550 || AmmoArray[i].x < 0 || AmmoArray[i].y > 400) {
  640.                             removeChild(AmmoArray[i]);
  641.                             AmmoArray.splice(i, 1);
  642.                             XArray.splice(i, 1);
  643.                             YArray.splice(i, 1);
  644.                             ShootArray.splice(i, 1);
  645.                         }
  646.  
  647.                         for (var j: Number = 0; j < FoodArray.length; j++) {
  648.  
  649.                             if (AmmoArray[i].hitTestObject(FoodArray[j])) {
  650.                                 removeChild(FoodArray[j]);
  651.                                 FoodArray.splice(j, 1);
  652.                                 ApplesHit++;
  653.                             }
  654.  
  655.                         }
  656.  
  657.                     }
  658.                 }
  659.  
  660.             }
  661.  
  662.             function PowerFun(): void {
  663.  
  664.                 if (DirPower == "up" && Game2Start == true) {
  665.  
  666.                     Speed++;
  667.                     if (Speed > 30) {
  668.                         DirPower = "down";
  669.                     }
  670.                 } else if (DirPower == "down" && Game2Start == true) {
  671.  
  672.                     Speed--;
  673.                     if (Speed < 0) {
  674.                         DirPower = "up";
  675.                     }
  676.                 }
  677.  
  678.             }
  679.  
  680.             function Game2Win(): void {
  681.  
  682.                 if (Game2Start == true && GameTwoDone == false)
  683.  
  684.                     if (ApplesHit == 50) {
  685.  
  686.                         Game2Start = false;
  687.                         GameTwoDone = true;
  688.                         ApplesHit = 0;
  689.                         LevelComplete.visible = true;
  690.                         NextLevel.visible = true;
  691.                         SnakePower.visible = false;
  692.  
  693.                         for (var i: Number = 0; i < AmmoArray.length; i++) {
  694.  
  695.                             removeChild(AmmoArray[i]);
  696.  
  697.                         }
  698.  
  699.                     }
  700.             }
  701.  
  702.         }
  703.  
  704.     }
  705.  
  706. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement