diff --git a/built/index.html b/built/index.html new file mode 100644 index 0000000..384a0b2 --- /dev/null +++ b/built/index.html @@ -0,0 +1,22 @@ + + + + + +

Knilch Out

+ +
+ + + +
+ + + + diff --git a/knilch.png b/built/knilch.png similarity index 100% rename from knilch.png rename to built/knilch.png diff --git a/knilchoff.png b/built/knilchoff.png similarity index 100% rename from knilchoff.png rename to built/knilchoff.png diff --git a/built/main.js b/built/main.js new file mode 100644 index 0000000..2678f1a --- /dev/null +++ b/built/main.js @@ -0,0 +1,172 @@ +var gridsize = 3; +var grid = initGrid(gridsize); +grid = populateGrid(grid, gridsize); +var c = document.getElementById("Game"); +var knilchoff = new Image(); +var knilchon = new Image(); +var ctx = c.getContext("2d"); +var scoring = true; +var turns = 0; +var edit = false; +function initGrid(gridsize) { + var grid = new Array(gridsize); + for (var i = 0; i < gridsize; i++) { + grid[i] = new Array(gridsize); + for (var k = 0; k < gridsize; k++) { + grid[i][k] = false; + } + } + return grid; +} +//ctx.rect(0,0,c.width/gridsize, c.height/gridsize); +function getCursorPositionOnCanvas(canvas, event) { + const rect = canvas.getBoundingClientRect(); + const x = event.clientX - rect.left; + const y = event.clientY - rect.top; + return { x, y }; +} +function drawPointOnCanvas(canvas, event, ctx) { + var pos = getCursorPositionOnCanvas(canvas, event); + ctx.moveTo(pos.x, pos.y); + ctx.lineTo(pos.x + 1, pos.y + 1); + ctx.stroke(); +} +function resizeCanvas(canvas) { + canvas.width = (window.innerHeight / 100) * 80; + canvas.height = (window.innerHeight / 100) * 80; +} +function drawGrid(gridsize, grid, c, ctx) { + for (var i = 0; i < gridsize; i++) { + for (var k = 0; k < gridsize; k++) { + if (grid[i][k] == true) { + ctx.fillStyle = "#50C88C"; + ctx.fillRect((i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); + ctx.drawImage(knilchon, (i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); + } + else { + ctx.fillStyle = "#C85050"; + ctx.fillRect((i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); + ctx.drawImage(knilchoff, (i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); + } + } + } + ctx.stroke(); +} +function repopulateGrid() { + grid = populateGrid(grid, gridsize); + edit = false; + turns = 0; + scoring = true; + drawGrid(gridsize, grid, c, ctx); + var bt = document.getElementById("edittoggle"); + bt.style.color = "black"; +} +function changeGridsize(amount) { + gridsize += amount; + grid = initGrid(gridsize); + grid = populateGrid(grid, gridsize); + drawGrid(gridsize, grid, c, ctx); +} +function populateGrid(grid, gridsize) { + for (var i = 0; i < gridsize; i++) { + for (var k = 0; k < gridsize; k++) { + if (Math.random() > 0.5) { + grid[i][k] = true; + } + else { + grid[i][k] = false; + } + } + } + return grid; +} +function togglebool(bool) { + if (bool == true) { + return false; + } + return true; +} +function handelClicks(c, e, gridsize, grid, ctx) { + var pos = getCursorPositionOnCanvas(c, e); + for (var i = 0; i < gridsize; i++) { + for (var k = 0; k < gridsize; k++) { + if (pos.x > (i * c.width) / gridsize && + pos.x < (i * c.width) / gridsize + c.width / gridsize) { + if (pos.y > (k * c.height) / gridsize && + pos.y < (k * c.height) / gridsize + c.width / gridsize) { + grid[i][k] = togglebool(grid[i][k]); + if (edit == false) { + if (i != 0) { + grid[i - 1][k] = togglebool(grid[i - 1][k]); + } + if (k != 0) { + grid[i][k - 1] = togglebool(grid[i][k - 1]); + } + if (i != gridsize - 1) { + grid[i + 1][k] = togglebool(grid[i + 1][k]); + } + if (k != gridsize - 1) { + grid[i][k + 1] = togglebool(grid[i][k + 1]); + } + } + } + } + } + } + drawGrid(gridsize, grid, c, ctx); + if (scoring == true) { + turns++; + var none = false; + var all = false; + if (grid[0][0] == false) { + none = true; + } + else { + all = true; + } + for (i = 0; i < gridsize; i++) { + for (k = 0; k < gridsize; k++) { + if (grid[i][k] == false) { + all = false; + } + else { + none = false; + } + } + } + if (all == true || none == true) { + Winscreen(c, ctx); + console.log(`Won took ${turns} to win.`); + } + } +} +function Winscreen(c, ctx) { + ctx.fillStyle = "#fffff"; + ctx.font; + ctx.fillText(`You won it took ${turns} Turns.`, 30, c.height / 2, c.width - 30); +} +function toggleEditMode() { + edit = togglebool(edit); + scoring = false; + var bt = document.getElementById("edittoggle"); + if (edit == true) { + bt.style.color = "red"; + } + else { + bt.style.color = "blue"; + } +} +function bodyLoad() { + resizeCanvas(c); + c.addEventListener("mousedown", function (e) { + handelClicks(c, e, gridsize, grid, ctx); + }); + knilchon.src = "knilch.png"; + knilchon.onload = (e) => { + knilchoff.src = "knilchoff.png"; + knilchoff.onload = (e) => { + ctx.moveTo(0, 0); + drawGrid(gridsize, grid, c, ctx); + }; + }; +} diff --git a/index.html b/index.html deleted file mode 100644 index bc2f11e..0000000 --- a/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -

Knilch Out

- - - - - diff --git a/main.js b/main.js deleted file mode 100644 index 837cc08..0000000 --- a/main.js +++ /dev/null @@ -1,109 +0,0 @@ -function initGrid(gridsize) { - var grid = new Array(gridsize); - for (var i = 0; i < gridsize; i++) { - grid[i] = new Array(gridsize); - for (var k = 0; k < gridsize; k++) { - grid[i][k] = false; - } - } - return grid; -} -//ctx.rect(0,0,c.width/gridsize, c.height/gridsize); -function getCursorPositionOnCanvas(canvas, event) { - var rect = canvas.getBoundingClientRect(); - var x = event.clientX - rect.left; - var y = event.clientY - rect.top; - return { x: x, y: y }; -} -function drawPointOnCanvas(canvas, event, ctx) { - var pos = getCursorPositionOnCanvas(canvas, event); - ctx.moveTo(pos.x, pos.y); - ctx.lineTo(pos.x + 1, pos.y + 1); - ctx.stroke(); -} -function resizeCanvas(canvas) { - canvas.width = (window.innerHeight / 100) * 90; - canvas.height = (window.innerHeight / 100) * 90; -} -function drawGrid(gridsize, grid, c, ctx) { - var knilchon = new Image(); - knilchon.src = 'knilch.png'; - knilchon.onload = function (e) { - var knilchoff = new Image(); - knilchoff.src = 'knilchoff.png'; - knilchoff.onload = function (e) { - for (var i = 0; i <= gridsize; i++) { - for (var k = 0; k <= gridsize; k++) { - if (grid[i][k] == true) { - ctx.fillStyle = "#50C88C"; - ctx.fillRect((i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); - ctx.drawImage(knilchon, (i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); - } - else { - ctx.fillStyle = "#C85050"; - ctx.fillRect((i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); - ctx.drawImage(knilchoff, (i * c.width) / gridsize, (k * c.height) / gridsize, c.width / gridsize, c.height / gridsize); - } - } - } - ctx.stroke(); - }; - }; -} -function populateGrid(grid, gridsize) { - for (var i = 0; i < gridsize; i++) { - for (var k = 0; k < gridsize; k++) { - if (Math.random() > 0.5) { - grid[i][k] = true; - } - else { - grid[i][k] = false; - } - } - } - return grid; -} -function togglebool(bool) { - if (bool == true) { - return false; - } - return true; -} -function handelClicks(c, e, gridsize, grid, ctx) { - var pos = getCursorPositionOnCanvas(c, e); - for (var i = 0; i < gridsize; i++) { - for (var k = 0; k < gridsize; k++) { - if (pos.x > i * c.width / gridsize && pos.x < i * c.width / gridsize + c.width / gridsize) { - if (pos.y > k * c.height / gridsize && pos.y < k * c.height / gridsize + c.width / gridsize) { - grid[i][k] = togglebool(grid[i][k]); - if (i != 0) { - grid[i - 1][k] = togglebool(grid[i - 1][k]); - } - if (k != 0) { - grid[i][k - 1] = togglebool(grid[i][k - 1]); - } - if (i != gridsize - 1) { - grid[i + 1][k] = togglebool(grid[i + 1][k]); - } - if (k != gridsize - 1) { - grid[i][k + 1] = togglebool(grid[i][k + 1]); - } - } - } - } - } - drawGrid(gridsize, grid, c, ctx); -} -function bodyLoad() { - var gridsize = 3; - var grid = initGrid(gridsize); - grid = populateGrid(grid, gridsize); - var c = document.getElementById("Game"); - resizeCanvas(c); - c.addEventListener("mousedown", function (e) { - handelClicks(c, e, gridsize, grid, ctx); - }); - var ctx = c.getContext("2d"); - ctx.moveTo(0, 0); - drawGrid(gridsize, grid, c, ctx); -} diff --git a/main.ts b/main.ts index e692ed0..3e500d3 100644 --- a/main.ts +++ b/main.ts @@ -1,12 +1,23 @@ +var gridsize: number = 3; +var grid: boolean[][] = initGrid(gridsize); +grid = populateGrid(grid, gridsize); +var c: HTMLCanvasElement = document.getElementById("Game") as HTMLCanvasElement; +var knilchoff: HTMLImageElement = new Image(); +var knilchon: HTMLImageElement = new Image(); +var ctx = c.getContext("2d"); +var scoring: boolean = true; +var turns: number = 0; +var edit: boolean = false; + function initGrid(gridsize: number): boolean[][] { var grid: Array> = new Array(gridsize); for (var i = 0; i < gridsize; i++) { - grid[i] = new Array(gridsize); - for(var k = 0; k < gridsize; k++) { - grid[i][k] = false - } - } - return grid + grid[i] = new Array(gridsize); + for (var k = 0; k < gridsize; k++) { + grid[i][k] = false; + } + } + return grid; } //ctx.rect(0,0,c.width/gridsize, c.height/gridsize); @@ -27,107 +38,181 @@ function drawPointOnCanvas( ctx.stroke(); } function resizeCanvas(canvas: HTMLCanvasElement) { - canvas.width = (window.innerHeight / 100) * 90; - canvas.height = (window.innerHeight / 100) * 90; + canvas.width = (window.innerHeight / 100) * 80; + canvas.height = (window.innerHeight / 100) * 80; } -function drawGrid(gridsize: number, grid: boolean[][], c: HTMLCanvasElement, ctx: CanvasRenderingContext2D){ - var knilchon : HTMLImageElement = new Image() - knilchon.src = 'knilch.png' - knilchon.onload = (e: Event) => { - var knilchoff : HTMLImageElement = new Image() - knilchoff.src = 'knilchoff.png' - knilchoff.onload = (e: Event) => { - for (var i: number = 0; i <= gridsize; i++) { - for (var k: number = 0; k <= gridsize; k++) { - - if (grid[i][k] == true) { - ctx.fillStyle = "#50C88C" - ctx.fillRect( - (i * c.width) / gridsize, - (k * c.height) / gridsize, - c.width / gridsize, - c.height / gridsize - ); - ctx.drawImage(knilchon,(i * c.width) / gridsize,(k * c.height) / gridsize,c.width / gridsize,c.height / gridsize); - } else { - ctx.fillStyle = "#C85050" - ctx.fillRect( - (i * c.width) / gridsize, - (k * c.height) / gridsize, - c.width / gridsize, - c.height / gridsize - ); - ctx.drawImage(knilchoff,(i * c.width) / gridsize,(k * c.height) / gridsize,c.width / gridsize,c.height / gridsize); - } - - - - - } - } - ctx.stroke(); - } - } - +function drawGrid( + gridsize: number, + grid: boolean[][], + c: HTMLCanvasElement, + ctx: CanvasRenderingContext2D +) { + for (var i: number = 0; i < gridsize; i++) { + for (var k: number = 0; k < gridsize; k++) { + if (grid[i][k] == true) { + ctx.fillStyle = "#50C88C"; + ctx.fillRect( + (i * c.width) / gridsize, + (k * c.height) / gridsize, + c.width / gridsize, + c.height / gridsize + ); + ctx.drawImage( + knilchon, + (i * c.width) / gridsize, + (k * c.height) / gridsize, + c.width / gridsize, + c.height / gridsize + ); + } else { + ctx.fillStyle = "#C85050"; + ctx.fillRect( + (i * c.width) / gridsize, + (k * c.height) / gridsize, + c.width / gridsize, + c.height / gridsize + ); + ctx.drawImage( + knilchoff, + (i * c.width) / gridsize, + (k * c.height) / gridsize, + c.width / gridsize, + c.height / gridsize + ); + } + } + } + ctx.stroke(); } -function populateGrid (grid: boolean[][],gridsize):boolean[][]{ - for (var i: number = 0; i < gridsize; i++) { - for (var k: number = 0; k < gridsize; k++) { - if (Math.random() > 0.5) { - grid[i][k] = true - } else { - grid[i][k] = false - } - } - } - return grid -} -function togglebool(bool:boolean):boolean { - if (bool == true) { - return false - } - return true +function repopulateGrid() { + grid = populateGrid(grid, gridsize); + edit = false + turns = 0; + scoring = true; + drawGrid(gridsize, grid, c, ctx); + var bt = document.getElementById("edittoggle") + bt.style.color = "black" } -function handelClicks(c: HTMLCanvasElement,e: Event,gridsize: number,grid: boolean[][],ctx: CanvasRenderingContext2D){ - var pos = getCursorPositionOnCanvas(c,e) - for (var i: number = 0; i < gridsize; i++) { - for (var k: number = 0; k < gridsize; k++) { - if (pos.x > i * c.width/gridsize && pos.x < i* c.width/gridsize + c.width/gridsize){ - if (pos.y > k * c.height/gridsize && pos.y < k* c.height/gridsize + c.width/gridsize){ - grid[i][k] = togglebool(grid[i][k]) - if (i != 0) { - grid[i-1][k] = togglebool(grid[i-1][k]) - } - if (k != 0) { - grid[i][k-1] = togglebool(grid[i][k-1]) - } - if (i != gridsize-1) { - grid[i+1][k] = togglebool(grid[i+1][k]) - } - if (k != gridsize-1) { - grid[i][k+1] = togglebool(grid[i][k+1]) - } - } - } - } - } - drawGrid(gridsize,grid,c,ctx) +function changeGridsize(amount: number) { + gridsize += amount; + grid = initGrid(gridsize); + grid = populateGrid(grid, gridsize); + drawGrid(gridsize, grid, c, ctx); +} + +function populateGrid(grid: boolean[][], gridsize): boolean[][] { + for (var i: number = 0; i < gridsize; i++) { + for (var k: number = 0; k < gridsize; k++) { + if (Math.random() > 0.5) { + grid[i][k] = true; + } else { + grid[i][k] = false; + } + } + } + return grid; +} +function togglebool(bool: boolean): boolean { + if (bool == true) { + return false; + } + return true; +} + +function handelClicks( + c: HTMLCanvasElement, + e: Event, + gridsize: number, + grid: boolean[][], + ctx: CanvasRenderingContext2D +) { + var pos = getCursorPositionOnCanvas(c, e); + for (var i: number = 0; i < gridsize; i++) { + for (var k: number = 0; k < gridsize; k++) { + if ( + pos.x > (i * c.width) / gridsize && + pos.x < (i * c.width) / gridsize + c.width / gridsize + ) { + if ( + pos.y > (k * c.height) / gridsize && + pos.y < (k * c.height) / gridsize + c.width / gridsize + ) { + grid[i][k] = togglebool(grid[i][k]); + if (edit == false) { + if (i != 0) { + grid[i - 1][k] = togglebool(grid[i - 1][k]); + } + if (k != 0) { + grid[i][k - 1] = togglebool(grid[i][k - 1]); + } + if (i != gridsize - 1) { + grid[i + 1][k] = togglebool(grid[i + 1][k]); + } + if (k != gridsize - 1) { + grid[i][k + 1] = togglebool(grid[i][k + 1]); + } + } + } + } + } + } + drawGrid(gridsize, grid, c, ctx); + if (scoring == true) { + turns++; + var none: boolean = false; + var all: boolean = false; + if (grid[0][0] == false) { + none = true; + } else { + all = true; + } + for (i = 0; i < gridsize; i++) { + for (k = 0; k < gridsize; k++) { + if (grid[i][k] == false) { + all = false; + } else { + none = false; + } + } + } + if (all == true || none == true) { + Winscreen(c,ctx) + console.log(`Won took ${turns} to win.`); + } + } +} + +function Winscreen(c: HTMLCanvasElement, ctx: CanvasRenderingContext2D) { + ctx.fillStyle = "#fffff" + ctx.font + ctx.fillText(`You won it took ${turns} Turns.`,30,c.height/2,c.width-30) +} +function toggleEditMode(){ + edit = togglebool(edit) + scoring = false + var bt = document.getElementById("edittoggle") + if (edit == true) { + bt.style.color = "red" + } else { + bt.style.color = "blue" + } + } function bodyLoad() { - var gridsize: number = 3; - var grid : boolean[][] = initGrid(gridsize) - grid = populateGrid(grid, gridsize) - var c: HTMLCanvasElement = document.getElementById( - "Game" - ) as HTMLCanvasElement; resizeCanvas(c); c.addEventListener("mousedown", function(e) { - handelClicks(c, e,gridsize,grid, ctx); + handelClicks(c, e, gridsize, grid, ctx); }); - var ctx = c.getContext("2d"); - ctx.moveTo(0, 0); - drawGrid(gridsize,grid,c,ctx) -} \ No newline at end of file + + knilchon.src = "knilch.png"; + knilchon.onload = (e: Event) => { + knilchoff.src = "knilchoff.png"; + knilchoff.onload = (e: Event) => { + ctx.moveTo(0, 0); + drawGrid(gridsize, grid, c, ctx); + }; + }; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7bbb805 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "ES6", + "moduleResolution": "node", + "resolveJsonModule": true, + "outDir": "./built" + } +} \ No newline at end of file