Note that there are some explanatory texts on larger screens.

plurals
  1. POtower defense game in as3 adding the enemy
    primarykey
    data
    text
    <p>ok so i have been creating tower defense game off of a tutorial. I finished the tutorial and it worked fine but i couldn't figure out how to build off of it. So I started all over and built more towers and a second enemy but the problem is that on the first level it works but in the second level it doesn't. I've been working with this for hours i have not found anything. so what i am asking if someone can give me a tutorial or anything that might be of help on arrays and tower defense games in as3 it is kind of a lot of code so i wont post it now unless you really need it</p> <p>heres the tutorial <a href="http://www.flashgametuts.com/tutorials/as3/how-to-create-a-tower-defense-game-in-as3-part-1/" rel="nofollow">http://www.flashgametuts.com/tutorials/as3/how-to-create-a-tower-defense-game-in-as3-part-1/</a></p> <pre><code>stop(); //othervariables var money:int=100;//how much money the player has to spend on turrets var lives:int=20;//how many lives the player has //lvlarray var S:String = 'START'; var F:String = 'FINISH'; var U:String = 'UP'; var R:String = 'RIGHT'; var D:String = 'DOWN'; var L:String = 'LEFT'; var startDir:String;//the direction the enemies go when they enter var finDir:String;//the direction the enemies go when they exit var startCoord:int;//the coordinates of the beginning of the road var lvlArray:Array = new Array();//this array will hold the formatting of the roads lvlArray = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,R,1,1,D,0,0,R,1,1,D,0,0,R,1,1,D,0,0, 0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, 0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, S,D,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,R,1,F, 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0, 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0, 0,R,1,1,U,0,0,R,1,1,U,0,0,R,1,1,U,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ]; //enemy1array var currentLvl:int = 1; var gameOver:Boolean = false; var currentEnemy:int = 0;//the current enemy that we're creating from the array var enemyTime:int = 0;//how many frames have elapsed since the last enemy was created var enemyLimit:int = 12;//how many frames are allowed before another enemy is created var enemyArray:Array = new Array();//this array will tell the function when to create an enemy var enemiesLeft:int;//how many enemies are left on the field enemyArray = [//defining the array [2,2,1,1,1],//1's will just represent an enemy to be created [1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],//another row means another level [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] ]; function startGame():void{//we'll run this function every time a new level begins for(var i:int=0;i&lt;enemyArray[currentLvl-1].length;i++){ if(enemyArray[currentLvl-1][i] == 1){ enemiesLeft ++; } } } //enemy2array var currentEnemy2:int = 0;//the current enemy that we're creating from the array var enemy2Time:int = 0;//how many frames have elapsed since the last enemy was created var enemy2Limit:int = 15;//how many frames are allowed before another enemy is created function start2Game():void{//we'll run this function every time a new level begins for(var i:int=0;i&lt;enemyArray[currentLvl-1].length;i++){ if(enemyArray[currentLvl-1][i] == 1){ enemiesLeft ++; } } } //lvlcreate var roadHolder:Sprite = new Sprite();//create an object that will hold all parts of the road addChild(roadHolder);//add it to the stage function makeRoad():void{ var row:int = 0;//the current row we're working on var block;//this will act as the block that we're placing down for(var i:int=0;i&lt;lvlArray.length;i++){//creating a loop that'll go through the level array if(lvlArray[i] == 0){//if the current index is set to 0 block = new EmptyBlock();//create a gray empty block block.graphics.beginFill(0x333333); block.graphics.drawRect(0,0,25,25); block.graphics.endFill(); addChild(block); //and set the coordinates to be relative to the place in the array block.x= (i-row*22)*25; block.y = row*25; } else if(lvlArray[i] == 1){//if there is supposed to be a row //just add a box that will be a darker color and won't have any actions block = new Shape(); block.graphics.beginFill(0x111111); block.graphics.drawRect(0,0,25,25); block.graphics.endFill(); block.x= (i-row*22)*25; block.y = row*25; roadHolder.addChild(block);//add it to the roadHolder } else if(lvlArray[i] is String){//if it's a string, meaning a special block //then create a special block block = new DirectBlock(lvlArray[i],(i-row*22)*25,row*25); addChild(block); } for(var c:int = 1;c&lt;=16;c++){ if(i == c*22-1){ //if 22 columns have gone by, then we move onto the next row row++; } } } } //towers function makeTurret(xValue:int,yValue:int):void{//this will need to be told the x and y values var turret:Turret = new Turret();//creating a variable to hold the Turret //changing the coordinates turret.x = xValue+12.5; turret.y = yValue+12.5; addChild(turret);//add it to the stage } function makeTurret2(xValue:int,yValue:int):void{//this will need to be told the x and y values var turret2:Turret2 = new Turret2();//creating a variable to hold the Turrettwo //changing the coordinates turret2.x = xValue+12.5; turret2.y = yValue+12.5; addChild(turret2);//add it to the stage } //enemy1 addEventListener(Event.ENTER_FRAME, eFrame);//adding an eFrame function function eFrame(e:Event):void{ //if there aren't any levels left if(currentLvl &gt; enemyArray.length){ gameOver=true;//set the game to be over //reset all the stats currentLvl = 1; currentEnemy = 0; enemyTime = 0; enemyLimit = 12; enemiesLeft = 0; removeEventListener(Event.ENTER_FRAME, eFrame);//remove this listener removeChild(roadHolder);//remove the pieces of road gotoAndStop('win');//go to the win frame } if(lives&lt;=0){//if the user runs out of lives gameOver=true;//set the game to be over //reset all the stats currentLvl = 1; currentEnemy = 0; enemyTime = 0; enemyLimit = 12; enemiesLeft = 0; removeEventListener(Event.ENTER_FRAME, eFrame);//remove this listener removeChild(roadHolder);//remove the pieces of road gotoAndStop('lose');//go to the lose frame } makeEnemies();//we'll just make some enemies if(enemiesLeft==0){//if there are no more enemies left currentLvl ++;//continue to the next level currentEnemy = 0;//reset the amount of enemies there are start2Game(); startGame();//restart the game } //Updating the text fields txtLevel.text = 'Level '+currentLvl; txtMoney.text = '$'+money; txtLives.text = 'Lives: '+lives; txtEnemiesLeft.text = 'Enemies Left: '+enemiesLeft; } function makeEnemies():void{//this function will add enemies to the field if(enemyTime &lt; enemyLimit){//if it isn't time to make them yet enemyTime ++;//then keep on waiting } else {//otherwise var theCode:int = enemyArray[currentLvl-1][currentEnemy];//get the code from the array if(theCode == 2){//if it's set as 1 var newEnemy:Enemy = new Enemy();//then create a new enemy enemyHolder.addChild(newEnemy);//and add it to the enemyholder } currentEnemy ++;//move on to the next enemy enemyTime = 0;//and reset the time } } //enemy2 addEventListener(Event.ENTER_FRAME, e2Frame);//adding an eFrame function function e2Frame(e:Event):void{ //if there aren't any levels left if(currentLvl &gt; enemyArray.length){ gameOver=true;//set the game to be over //reset all the stats currentLvl = 1; currentEnemy2 = 0; enemy2Time = 0; enemy2Limit = 12; enemiesLeft = 0; removeEventListener(Event.ENTER_FRAME, eFrame);//remove this listener removeChild(roadHolder);//remove the pieces of road gotoAndStop('win');//go to the win frame } if(lives&lt;=0){//if the user runs out of lives gameOver=true;//set the game to be over //reset all the stats currentLvl = 1; currentEnemy2 = 0; enemy2Time = 0; enemy2Limit = 12; enemiesLeft = 0; removeEventListener(Event.ENTER_FRAME, e2Frame);//remove this listener removeChild(roadHolder);//remove the pieces of road gotoAndStop('lose');//go to the lose frame } makeEnemies2();//we'll just make some enemies if(enemiesLeft==0){//if there are no more enemies left currentLvl ++;//continue to the next level currentEnemy2 = 0;//reset the amount of enemies there are start2Game(); startGame();//restart the game } //Updating the text fields txtLevel.text = 'Level '+currentLvl; txtMoney.text = '$'+money; txtLives.text = 'Lives: '+lives; txtEnemiesLeft.text = 'Enemies Left: '+enemiesLeft; } function makeEnemies2():void{//this function will add enemies to the field if(enemy2Time &lt; enemy2Limit){//if it isn't time to make them yet enemy2Time ++;//then keep on waiting } else {//otherwise var theCode:int = enemyArray[currentLvl-1][currentEnemy2];//get the code from the array if(theCode == 2){//if it's set as 1 var newEnemy2:Enemy2 = new Enemy2();//then create a new enemy enemyHolder.addChild(newEnemy2);//and add it to the enemyholder } currentEnemy2 ++;//move on to the next enemy enemy2Time = 0;//and reset the time } } //other //run these functions at the start makeRoad(); var enemyHolder:Sprite = new Sprite(); addChild(enemyHolder); startGame(); start2Game(); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload