Code edit (13 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'tintBorderCircle')' in this line: 'gameInstance.roundIndicator.tintBorderCircle(winner);' Line Number: 162
User prompt
when a player wins a round, tint a borderCircle using the player color
Code edit (1 edits merged)
Please save this source code
User prompt
To simulate a border, at the center of each circle draw a black circle a little smaller
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'Uncaught ReferenceError: Circle is not defined' in this line: 'var circle = self.addChild(new Circle(circleRadius));' Line Number: 62
User prompt
Fix Bug: 'Uncaught TypeError: circleGraphics.lineStyle is not a function' in this line: 'circleGraphics.lineStyle(5, 0xFFFFFF);' Line Number: 63
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var graphics = new Graphics();' Line Number: 62
User prompt
at the 3 center, add 3 centered empty circles with a white border that will represent 3 rounds
Code edit (8 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: offsetX is not defined' in this line: 'gift.x = offsetX + box.col * 300 + 150;' Line Number: 81
User prompt
now when a box is filled by a player, draw a gift at its center with the player tint
Code edit (1 edits merged)
Please save this source code
Code edit (17 edits merged)
Please save this source code
User prompt
pad scores with a space ' ' when <10
Code edit (1 edits merged)
Please save this source code
User prompt
implement updatePlayerScores
Code edit (1 edits merged)
Please save this source code
User prompt
if setBoxesCount is > (player1Score+player2Score) increment current player's score
User prompt
implement checkSquares checking all BoardBox in boxes. for each BoardBox, update isSet value to true, if top, right, bottom and left lines have their isSet true. console log the number of set Boxes.
Code edit (22 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: gameInstance.player1Icon.alpha.set is not a function' in this line: 'gameInstance.player1Icon.alpha.set(playingPlayer === 1 ? 1 : 0.6);' Line Number: 69
Code edit (1 edits merged)
Please save this source code
var Gift = Container.expand(function (playerNumber) { var self = Container.call(this); var giftGraphics = self.createAsset('gift', 'Gift Graphics', 0.5, 0.5); giftGraphics.tint = playerNumber === 1 ? 0xFF0000 : 0x00FF00; return self; }); var Line = Container.expand(function (row, col, isHorizontal, gameInstance) { var self = Container.call(this); var lineGraphics = self.createAsset(isHorizontal ? 'lineHorizontal' : 'lineVertical', 'Line Graphics', isHorizontal ? 0 : 0.5, isHorizontal ? 0.5 : 0); lineGraphics.alpha = 0.3; self.playerNumber = null; self.col = col; self.row = row; self.isSet = false; self.setLength = function (length) { if (isHorizontal) { lineGraphics.width = length; } else { lineGraphics.height = length; } }; self.on('down', function () { if (!self.isSet) { console.log("Setting " + row + "," + col + " by player " + currentPlayer); console.log("boxes :", gameInstance.boxes); self.isSet = true; activateLine(self, currentPlayer, lineGraphics, gameInstance); } }); return self; }); var Dot = Container.expand(function () { var self = Container.call(this); var dotGraphics = self.createAsset('dot', 'Dot Graphics', .5, .5); self.connect = function () {}; }); var Square = Container.expand(function () { var self = Container.call(this); var squareGraphics = self.createAsset('square', 'Square Graphics', .5, .5); self.isComplete = function () { var topLineComplete = this.topLine && this.topLine.playerNumber !== null; var bottomLineComplete = this.bottomLine && this.bottomLine.playerNumber !== null; var leftLineComplete = this.leftLine && this.leftLine.playerNumber !== null; var rightLineComplete = this.rightLine && this.rightLine.playerNumber !== null; return topLineComplete && bottomLineComplete && leftLineComplete && rightLineComplete; }; }); var PlayerIcon = Container.expand(function (playerNumber) { var self = Container.call(this); var iconAsset = playerNumber === 1 ? 'player1Icon' : 'player2Icon'; var playerIconGraphics = self.createAsset(iconAsset, 'Player ' + playerNumber + ' Icon', 0.5, 0.5); playerIconGraphics.tint = playerNumber === 2 ? 0x00FF00 : playerIconGraphics.tint; playerIconGraphics.tint = playerNumber === 1 ? 0xFF0000 : playerIconGraphics.tint; return self; }); var RoundIndicator = Container.expand(function () { var self = Container.call(this); RoundIndicator.prototype.tintBorderCircle = function (playerNumber) { console.log("tintBorderCircle for player " + playerNumber); var tint = playerNumber === 1 ? 0xFF0000 : 0x00FF00; this.children.forEach(function (child) { if (child.description === 'Border Circle Graphic') { child.tint = tint; } }); }; var circleDistance = 160; var circleRadius = 50; for (var i = 0; i < 3; i++) { var circle = self.addChild(LK.getAsset('circle', 'Circle Graphic', 0.5, 0.5)); circle.width = circle.height = circleRadius * 2; circle.x = 2048 / 2 - circleDistance + i * circleDistance; circle.y = 0; var borderCircle = self.addChild(LK.getAsset('circle', 'Border Circle Graphic', 0.5, 0.5)); borderCircle.width = borderCircle.height = (circleRadius - 10) * 2; borderCircle.tint = 0x000000; borderCircle.x = circle.x; borderCircle.y = circle.y; self.addChild(borderCircle); } return self; }); function BoardLine(row, col) { this.col = col; this.row = row; this.isSet = false; } function BoardBox(row, col, borderLines) { this.col = col; this.row = row; this.top = borderLines[0]; this.right = borderLines[1]; this.bottom = borderLines[2]; this.left = borderLines[3]; this.isFilled = false; this.playerFilled = 0; } function checkSquares(gameInstance) { console.log('checkSquares for current player:', currentPlayer); var setBoxesCount = 0; var previousCount = player1Score + player2Score; gameInstance.boxes.forEach(function (box) { if (box.top.isSet && box.right.isSet && box.bottom.isSet && box.left.isSet) { if (!box.isFilled) { box.isFilled = true; box.playerFilled = currentPlayer; var gift = new Gift(currentPlayer); gift.x = gameInstance.offsetX + box.col * 300 + 150; gift.y = gameInstance.offsetY + box.row * 300 + 150; gameInstance.addChild(gift); } setBoxesCount++; } }); var newSquares = setBoxesCount - previousCount; if (newSquares > 0) { if (currentPlayer === 1) { console.log(newSquares + ' Box for player 1'); player1Score += newSquares; } else if (currentPlayer === 2) { console.log(newSquares + 'Box for player 1'); player2Score += newSquares; } } updatePlayerScoress(gameInstance); console.log('Total Number of set Boxes:', setBoxesCount); return newSquares; } function updateRounds(gameInstance) { console.log("Rounds :", rounds); } function updatePlayerScoress(gameInstance) { gameInstance.player1ScoreText.setText(player1Score < 10 ? ' ' + player1Score : player1Score.toString()); gameInstance.player2ScoreText.setText(player2Score < 10 ? ' ' + player2Score : player2Score.toString()); } function updatePlayerIcons(gameInstance, playingPlayer) { gameInstance.player1Icon.scale.set(playingPlayer === 1 ? 1.2 : 0.8); gameInstance.player2Icon.scale.set(playingPlayer === 2 ? 1.2 : 0.8); gameInstance.player1Icon.alpha = playingPlayer === 1 ? 1 : 0.6; gameInstance.player2Icon.alpha = playingPlayer === 2 ? 1 : 0.6; } function activateLine(line, playerNumber, lineGraphics, gameInstance) { if (line.playerNumber === null) { console.log('Line click by player ', playerNumber); line.playerNumber = playerNumber; lineGraphics.alpha = 1; lineGraphics.tint = playerNumber === 1 ? 0xFF0000 : 0x00FF00; var boardLine = gameInstance.lines.find(function (l) { return l.col === line.col && l.row === line.row; }); if (boardLine) { boardLine.isSet = true; } var newSquares = checkSquares(gameInstance); if (!newSquares) { currentPlayer = currentPlayer === 1 ? 2 : 1; } else { if (player1Score + player2Score >= nbBoardBoxes) { console.log("Round end!"); var winner = player1Score > player2Score ? 1 : player1Score < player2Score ? 2 : 0; console.log(winner === 1 ? "Winner 1" : winner === 2 ? "Winner 2" : "Tie"); if (winner !== 0) { gameInstance.roundIndicator.tintBorderCircle(winner); } } } updatePlayerIcons(gameInstance, currentPlayer); } } var currentPlayer = 1; var player2Score = 0; var player1Score = 0; var boardRows = 2; var boardCols = 2; var rounds = []; var nbBoardBoxes = boardRows * boardCols; var Game = Container.expand(function () { var self = Container.call(this); var dots = []; var squares = []; var lines = []; var player1Icon, player2Icon; var boardSize = 6 * 300; self.offsetX = (2048 - boardSize) / 2; self.offsetY = (2732 - boardSize) / 2 + 150; self.player1Icon = self.addChild(new PlayerIcon(1)); self.player1Icon.x = 2048 * 0.25; self.player1Icon.y = 250; self.player1Icon.scale.set(1.2); self.player1ScoreText = new Text2(' 0', { size: 200, fill: "#ffffff", anchor: { x: 0.5, y: 0 } }); self.player1ScoreText.x = 750; self.player1ScoreText.y = 150; self.addChild(self.player1ScoreText); self.player2Icon = self.addChild(new PlayerIcon(2)); self.player2Icon.x = 2048 * 0.75; self.player2Icon.y = 250; self.player2Icon.scale.set(1); self.player2ScoreText = new Text2(' 0', { size: 200, fill: "#ffffff", anchor: { x: 0.5, y: 0 } }); self.player2ScoreText.x = 1070; self.player2ScoreText.y = 150; self.addChild(self.player2ScoreText); player1Icon = self.player1Icon; player2Icon = self.player2Icon; for (var i = 0; i < boardRows * 2 + 1; i++) { for (var j = 0; j < boardCols * 2 + 1; j++) { if (i % 2 == 0 && j % 2 != 0) { var hLine = new Line(i, j, true, self); hLine.x = j / 2 * 300; hLine.y = self.offsetY + i / 2 * 300; hLine.setLength(300); self.addChild(hLine); boardLine = new BoardLine(i, j); lines.push(boardLine); } if (i % 2 != 0 && j % 2 == 0) { var vLine = new Line(i, j, false, self); vLine.x = self.offsetX + j / 2 * 300; vLine.y = self.offsetY * 0.75 + i / 2 * 300; vLine.setLength(300); self.addChild(vLine); boardLine = new BoardLine(i, j); lines.push(boardLine); } } } self.lines = lines; var boxes = []; for (var i = 0; i < boardRows; i++) { for (var j = 0; j < boardCols; j++) { var topLine = lines.find(line => line.row === i * 2 && line.col === 1 + j * 2); var bottomLine = lines.find(line => line.row === i * 2 + 2 && line.col === 1 + j * 2); var leftLine = lines.find(line => line.row === 1 + i * 2 && line.col === j * 2); var rightLine = lines.find(line => line.row === 1 + i * 2 && line.col === j * 2 + 2); var box = new BoardBox(i, j, [topLine, rightLine, bottomLine, leftLine]); boxes.push(box); } } for (var i = 0; i < boardRows + 1; i++) { for (var j = 0; j < boardCols + 1; j++) { var dot = new Dot(); var boardLine = null; dot.x = self.offsetX + i * 300; dot.y = self.offsetY + j * 300; dots.push(dot); self.addChild(dot); } } self.boxes = boxes; updatePlayerIcons(self, currentPlayer); self.roundIndicator = self.addChild(new RoundIndicator()); self.roundIndicator.y = 60; });
===================================================================
--- original.js
+++ change.js
@@ -55,8 +55,9 @@
});
var RoundIndicator = Container.expand(function () {
var self = Container.call(this);
RoundIndicator.prototype.tintBorderCircle = function (playerNumber) {
+ console.log("tintBorderCircle for player " + playerNumber);
var tint = playerNumber === 1 ? 0xFF0000 : 0x00FF00;
this.children.forEach(function (child) {
if (child.description === 'Border Circle Graphic') {
child.tint = tint;
a b&w grinch icon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
b&w smiling Santa Clauss' head icon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a white christmas star. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
top face of a white gift. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.