| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /**
- This activity uses conditionals to provide instructions based on current state of the game. Loops are used to iterate through tiles.
- The player must roll the dice and select the tiles to reduce the total down to zero. The game is won when the total is zero
- and there are no tiles left.
- */
- //***********************************Scene - Initialize When Scene Starts Event*********************************************//
- // Tile creation
- if($this.scene.state() == "PLAY") {
- // create an array to store available tiles
- var availableTiles = [];
- // start with a target amount of 0
- var targetAmount = 0;
- // create the cloned tiles
- for (var t = 1; t < 10; t++) {
- var clonedTile = numberedTile.clone();
- var tileNumber = clonedTile.findName("number_" + t);
- // update the text on the clone's label object
- tileNumber.text(t);
- // assign the number to the tile
- clonedTile.number = t;
- // add the tile to the availableTiles array
- availableTiles.push(clonedTile);
- // place the cloned tile in the scene by setting its x value.
- clonedTile.x(20 + 85 * (t - 1));
- }
- // remove the original tile
- numberedTile.remove();
- }
- // run this function when a dice is clicked
- $this.rollDice = function() {
- // only allow rolls if targetAmount = 0
- if(targetAmount === 0) {
- // randomly roll the dic
- var die1Value = random(1,6);
- var die2Value = random(1,6);
- // update the sprite frames
- die1.frameIndex(die1Value);
- die2.frameIndex(die2Value);
- // set the target amount and update UI
- targetAmount = die1Value + die2Value;
- totalText.text(targetAmount);
- // update message text
- message.text("Click the tiles to subtract from the total.");
- // check for valid moves after every roll
- $this.checkForValidMoves();
-
- }
- };
- // run this function when a tile is clicked
- $this.processTile = function(clickedTile) {
- // make sure the tile's number is smaller than targetAmount
- if(clickedTile.number <= targetAmount) {
- // subtract clicked number from targetAmount
- targetAmount -= clickedTile.number;
- // update the text
- totalText.text(targetAmount);
- // hide clicked number tile
- clickedTile.visible(false);
- // loop through the availableTiles array
- for (var i = 0; i < availableTiles.length; i++) {
- // find the clickedTile in the availableTiles array
- if (availableTiles[i] == clickedTile) {
- // and remove it with splice function
- availableTiles.splice(i, 1);
- }
- }
- if (availableTiles.length === 0) {
- $this.checkForEndOfGame();
- } else {
- // if there are tiles, check for valid moves
- // check for valid moves after every clicked tile
- $this.checkForValidMoves();
- }
-
- }
- };
- $this.checkForValidMoves = function() {
- if(targetAmount > 0) {
- // find the smallest available tile
- var smallestTile = availableTiles[0];
- if (smallestTile.number > targetAmount) {
- message.text("There are no valid moves. Play again!");
- }
- } else {
- message.text("Click the dice to roll again!")
- }
- };
- $this.checkForEndOfGame = function() {
- if (targetAmount === 0) {
- message.text("Good job! You win!");
- } else {
- message.text("Game over. Try again!");
- }
- }
- //*********************************die 1 and die 2 Objects - Mouse Click Event*********************************************//
- $this.scene.rollDice();
- //****************************************numberedTile Object - Mouse Click***********************************************//
- $this.scene.processTile($this)
|