diff --git a/vier_gewinnt/JS/allSpaltenArrays.js b/vier_gewinnt/JS/allSpaltenArrays.js new file mode 100644 index 0000000..62e4a69 --- /dev/null +++ b/vier_gewinnt/JS/allSpaltenArrays.js @@ -0,0 +1,8 @@ +function allSpaltenArrays() { + var allSpaltenArray =[]; + for (let i = 1; i <= 7; i++) { + allSpaltenArray.push(steinInSpalte(i)) + } + + return allSpaltenArray +} \ No newline at end of file diff --git a/vier_gewinnt/JS/gewinnErmitteln.js b/vier_gewinnt/JS/gewinnErmitteln.js new file mode 100644 index 0000000..0a4446c --- /dev/null +++ b/vier_gewinnt/JS/gewinnErmitteln.js @@ -0,0 +1,8 @@ +function gewinnErmitteln(spalte,reihe) { + if (vierInSpalte(steinInSpalte(spalte)) === 1 || vierInReihe(steinInReihe(reihe)) === 1 || vierDiagonalRechts(allSpaltenArrays()) === 1 || vierDiagonalLinks(allSpaltenArrays()) === 1) { + alert("Herzlichen Glückwunsch Spieler 1 (Grün) du hast gewonnen") + }if (vierInSpalte(steinInSpalte(spalte)) === 2 || vierInReihe(steinInReihe(reihe)) === 2 || vierDiagonalRechts(allSpaltenArrays()) === 2 || vierDiagonalLinks(allSpaltenArrays()) === 2){ + alert("Spieler 2 (Rot) hat gewonnen") + } + +} \ No newline at end of file diff --git a/vier_gewinnt/JS/naechsteFreierPlatz.js b/vier_gewinnt/JS/naechsteFreierPlatz.js new file mode 100644 index 0000000..a41d52f --- /dev/null +++ b/vier_gewinnt/JS/naechsteFreierPlatz.js @@ -0,0 +1,9 @@ +function ersterFreierPlatz(arr) { + for (let elem = 0; elem < arr.length; elem++) { + if (arr[elem] === 0) { + return elem+1; + } + + } +} +module.exports= ersterFreierPlatz; \ No newline at end of file diff --git a/vier_gewinnt/JS/regeln.js b/vier_gewinnt/JS/regeln.js new file mode 100644 index 0000000..de165db --- /dev/null +++ b/vier_gewinnt/JS/regeln.js @@ -0,0 +1,10 @@ +function regelAnzeige() { + if (document.getElementById("regeln").innerHTML === '') { + document.getElementById("regelButton").innerHTML = "Regeln ausblenden"; + document.getElementById("regeln").innerHTML = "Vier Gewinnt ist ein Spiel, indem Spieler abwechseld Steine in Felder legen, wer als erstes vier Steine nebeneinader, übereinander oder diagonal hat, hat gewonnen."; + }else { + document.getElementById("regelButton").innerHTML = "Regeln anzeigen"; + document.getElementById("regeln").innerHTML = ""; + } + +} \ No newline at end of file diff --git a/vier_gewinnt/JS/steinSetzen.js b/vier_gewinnt/JS/steinSetzen.js index 1f7de7f..16337f8 100644 --- a/vier_gewinnt/JS/steinSetzen.js +++ b/vier_gewinnt/JS/steinSetzen.js @@ -2,11 +2,16 @@ function setzeStein(reihe, spalte) { var aktuellerSpieler = document.getElementById("aktuellerSpieler").innerHTML; var color; if (aktuellerSpieler == 1) { - color = "red"; + color = "green"; } else { - color = "green"; + color = "red"; } + + var reihe = ersterFreierPlatz(steinInSpalte(spalte)); + document.getElementById(reihe + "/" + spalte).style.backgroundColor= color; + gewinnErmitteln(spalte, reihe); spielerWechsel(); + } \ No newline at end of file diff --git a/vier_gewinnt/JS/steineInReihe.js b/vier_gewinnt/JS/steineInReihe.js new file mode 100644 index 0000000..d4ffd3c --- /dev/null +++ b/vier_gewinnt/JS/steineInReihe.js @@ -0,0 +1,23 @@ +function steinInReihe(reiheImFeld) { + // Feld mit Steinen in Reihe + // O = kein Stein + // 1 = gruener Stein + // 2 = roter Stein + var reihe = []; + + for (let i = 1; i <= 7; i++) { + var color = document.getElementById(reiheImFeld + "/" + i).style.backgroundColor; + + if (color == "red") { + reihe.push(2); + }else if (color == "green") { + reihe.push(1); + } else { + reihe.push(0); + } + } + + return reihe; + + +} \ No newline at end of file diff --git a/vier_gewinnt/JS/steineInSpalte.js b/vier_gewinnt/JS/steineInSpalte.js index 764ea8c..5ba41d2 100644 --- a/vier_gewinnt/JS/steineInSpalte.js +++ b/vier_gewinnt/JS/steineInSpalte.js @@ -6,15 +6,19 @@ function steinInSpalte(spalte) { var zeile = []; for (let i = 1; i <= 6; i++) { + var color = document.getElementById(i + "/" + spalte).style.backgroundColor; - if (document.getElementById( i +"/"+ spalte).style.backgroundColor == "red") { + if (color == "red") { zeile.push(2); - }if (document.getElementById(i + "/"+ spalte).style.backgroundColor == "green") { + }else if (color == "green") { zeile.push(1); } else { zeile.push(0); } } + + return zeile; -} \ No newline at end of file +} +//module.exports = steinInSpalte; \ No newline at end of file diff --git a/vier_gewinnt/JS/vierDiagonalLinks.js b/vier_gewinnt/JS/vierDiagonalLinks.js new file mode 100644 index 0000000..18e8c79 --- /dev/null +++ b/vier_gewinnt/JS/vierDiagonalLinks.js @@ -0,0 +1,14 @@ +function vierDiagonalLinks(allSpaltenArray) { + var Gewinner =0; + for (let i = 3; i <= allSpaltenArray.length; i++) { + for (let j = 0; j <= allSpaltenArray[0].length -3; j++) { + if (allSpaltenArray[j][i]===1 && allSpaltenArray[j+1][i-1]===1 && allSpaltenArray[j+2][i-2]===1 && allSpaltenArray[j+3][i-3]===1) { + Gewinner = 1; + }if (allSpaltenArray[j][i]===2 && allSpaltenArray[j+1][i-1]===2 && allSpaltenArray[j+2][i-2]===2 && allSpaltenArray[j+3][i-3]===2) { + Gewinner = 2; + } + } + } + return Gewinner; +} +module.exports = vierDiagonalLinks; \ No newline at end of file diff --git a/vier_gewinnt/JS/vierDiagonalRechts.js b/vier_gewinnt/JS/vierDiagonalRechts.js new file mode 100644 index 0000000..81d1a29 --- /dev/null +++ b/vier_gewinnt/JS/vierDiagonalRechts.js @@ -0,0 +1,15 @@ +function vierDiagonalRechts(allSpaltenArray) { + var Gewinner =0; + for (let i = 0; i <= allSpaltenArray.length -3; i++) { + for (let j = 0; j <= allSpaltenArray[0].length -3; j++) { + if (allSpaltenArray[j][i]===1 && allSpaltenArray[j+1][i+1]===1 && allSpaltenArray[j+2][i+2]===1 && allSpaltenArray[j+3][i+3]===1) { + Gewinner = 1; + } + if (allSpaltenArray[j][i]===2 && allSpaltenArray[j+1][i+1]===2 && allSpaltenArray[j+2][i+2]===2 && allSpaltenArray[j+3][i+3]===2) { + Gewinner = 2; + } + } + } + return Gewinner; +} +module.exports = vierDiagonalRechts; \ No newline at end of file diff --git a/vier_gewinnt/JS/vierInReihe.js b/vier_gewinnt/JS/vierInReihe.js new file mode 100644 index 0000000..c62735b --- /dev/null +++ b/vier_gewinnt/JS/vierInReihe.js @@ -0,0 +1,18 @@ +function vierInReihe(arr){ + var Gewinner = 0; + //Spieler Gruen + for (let i = 0; i < arr.length - 3; i++) { + if (arr[i] === 1 && arr[i + 1] === 1 && arr[i + 2] === 1 && arr[i + 3] === 1) { + Gewinner = 1; + } + } + //Spieler Rot + for (let i = 0; i < arr.length - 3; i++) { + if (arr[i] === 2 && arr[i + 1] === 2 && arr[i + 2] === 2 && arr[i + 3] === 2) { + Gewinner = 2; + } + } + return Gewinner; + +} +module.exports = vierInReihe; \ No newline at end of file diff --git a/vier_gewinnt/JS/vierInSpalte.js b/vier_gewinnt/JS/vierInSpalte.js new file mode 100644 index 0000000..a900485 --- /dev/null +++ b/vier_gewinnt/JS/vierInSpalte.js @@ -0,0 +1,18 @@ +function vierInSpalte(arr){ + var Gewinner = 0; + //Spieler Gruen + for (let i = 0; i < arr.length - 3; i++) { + if (arr[i] === 1 && arr[i + 1] === 1 && arr[i + 2] === 1 && arr[i + 3] === 1) { + Gewinner = 1; + } + } + //Spieler Rot + for (let i = 0; i < arr.length - 3; i++) { + if (arr[i] === 2 && arr[i + 1] === 2 && arr[i + 2] === 2 && arr[i + 3] === 2) { + Gewinner = 2; + } + } + return Gewinner; + +} +module.exports = vierInSpalte; \ No newline at end of file diff --git a/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js b/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js new file mode 100644 index 0000000..2a55f21 --- /dev/null +++ b/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js @@ -0,0 +1,8 @@ +const ersterFreierPlatz = require("../JS/naechsteFreierPlatz"); + +describe("Test Vier Gewinnt", () => { + it("Test welcher naechster platz ist frei", () =>{ + expect(ersterFreierPlatz([1, 1, 0, 0, 0, 0])).toBe(3); + expect(ersterFreierPlatz([1, 1, 2, 1, 0, 0])).toBe(5); + }) +}) \ No newline at end of file diff --git a/vier_gewinnt/tests/test_vierDiagonalLinks.test.js b/vier_gewinnt/tests/test_vierDiagonalLinks.test.js new file mode 100644 index 0000000..1970e3a --- /dev/null +++ b/vier_gewinnt/tests/test_vierDiagonalLinks.test.js @@ -0,0 +1,24 @@ +const vierDiagonalLinks = require("../JS/vierDiagonalLinks"); + +describe("Test Vier Gewinnt", () => { + it("Test vierDiagonalLinks: Vier Diagonal nach links erkennen und Gewinner 1(Gruen) zuruek geben", () =>{ + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 2, 1, 1, 0, 0], [2, 1, 1, 0, 0, 0], [2, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0]])).toBe(1); + expect(vierDiagonalLinks([[2, 1, 2, 1, 0, 0], [2, 1, 1, 0, 0, 0], [2, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(1); + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 2, 1, 2, 1, 1], [2, 1, 2, 1, 1, 0], [2, 1, 2, 1, 0, 0], [1, 2, 1, 0, 0, 0]])).toBe(1); + expect(vierDiagonalLinks([[2, 2, 1, 2, 1, 1], [2, 1, 2, 1, 1, 0], [2, 1, 2, 1, 0, 0], [1, 2, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(1); + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [1, 2, 1, 2, 1, 0], [2, 1, 2, 1, 0, 0], [2, 1, 1, 0, 0, 0], [2, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 2, 2, 0, 0, 0]])).toBe(1); + + }) +}) + + +describe("Test Vier Gewinnt", () => { + it("Test vierDiagonalLinks: Vier Diagonal nach links erkennen und Gewinner 2(Rot) zuruek geben", () =>{ + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 1, 2, 2, 0, 0], [1, 2, 2, 0, 0, 0], [1, 2, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0]])).toBe(2); + expect(vierDiagonalLinks([[1, 2, 1, 2, 0, 0], [1, 2, 2, 0, 0, 0], [1, 2, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(2); + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 1, 2, 1, 2, 2], [1, 2, 1, 2, 2, 0], [1, 2, 1, 2, 0, 0], [2, 1, 2, 0, 0, 0]])).toBe(2); + expect(vierDiagonalLinks([[1, 1, 2, 1, 2, 2], [1, 2, 1, 2, 2, 0], [1, 2, 1, 2, 0, 0], [2, 1, 2, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(2); + expect(vierDiagonalLinks([[0, 0, 0, 0, 0, 0], [2, 1, 2, 1, 2, 0], [1, 2, 1, 2, 0, 0], [1, 2, 2, 0, 0, 0], [1, 2, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 1, 1, 0, 0, 0]])).toBe(2); + + }) +}) \ No newline at end of file diff --git a/vier_gewinnt/tests/test_vierDiagonalRechts.test.js b/vier_gewinnt/tests/test_vierDiagonalRechts.test.js new file mode 100644 index 0000000..cb4e536 --- /dev/null +++ b/vier_gewinnt/tests/test_vierDiagonalRechts.test.js @@ -0,0 +1,21 @@ +const vierDiagonalRechts = require("../JS/vierDiagonalRechts"); + +describe("Test Vier Gewinnt", () => { + it("Test vierDiagonalRechts: Vier Diagonal erkennen und Gewinner 1(Gruen) zuruek geben", () =>{ + expect(vierDiagonalRechts([[1, 0, 0, 0, 0, 0], [2, 1, 0, 0, 0, 0], [2, 1, 1, 0, 0, 0], [2, 2, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(1); + expect(vierDiagonalRechts([[1, 2, 1, 0, 0, 0], [2, 1, 2, 1, 0, 0], [2, 1, 1, 2, 1, 0], [2, 2, 1, 2, 1, 1], [0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(1); + expect(vierDiagonalRechts([[2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [2, 1, 0, 0, 0, 0], [2, 1, 1, 0, 0, 0], [2, 1, 2, 1, 0, 0], [1, 2, 1, 2, 1, 0]])).toBe(1); + expect(vierDiagonalRechts([[2, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0], [2, 1, 2, 1, 0, 0], [2, 1, 2, 1, 1, 0], [2, 2, 1, 2, 1, 1]])).toBe(1); + expect(vierDiagonalRechts([[2, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0], [2, 1, 2, 1, 0, 0], [2, 1, 2, 1, 1, 0], [2, 2, 1, 2, 1, 1], [1, 0, 0, 0, 0, 0]])).toBe(1); + }) +}) + +describe("Test Vier Gewinnt", () => { + it("Test vierDiagonalRechts: Vier Diagonal erkennen und Gewinner 2 (rot) zuruek geben", () =>{ + expect(vierDiagonalRechts([[2, 0, 0, 0, 0, 0], [1, 2, 0, 0, 0, 0], [1, 2, 2, 0, 0, 0], [1, 1, 2, 2, 0, 0], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(2); + expect(vierDiagonalRechts([[2, 1, 2, 0, 0, 0], [1, 2, 1, 2, 0, 0], [1, 2, 2, 1, 2, 0], [1, 1, 2, 1, 2, 2], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])).toBe(2); + expect(vierDiagonalRechts([[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 2, 0, 0, 0, 0], [1, 2, 2, 0, 0, 0], [1, 2, 1, 2, 0, 0], [2, 1, 2, 1, 2, 0]])).toBe(2); + expect(vierDiagonalRechts([[1, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [2, 1, 2, 0, 0, 0], [1, 2, 1, 2, 0, 0], [1, 2, 1, 2, 2, 0], [1, 1, 2, 1, 2, 2]])).toBe(2); + expect(vierDiagonalRechts([[1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [2, 1, 2, 0, 0, 0], [1, 2, 1, 2, 0, 0], [1, 2, 1, 2, 2, 0], [1, 1, 2, 1, 2, 2], [2, 0, 0, 0, 0, 0]])).toBe(2); + }) +}) \ No newline at end of file diff --git a/vier_gewinnt/tests/test_vierInReihe.test.js b/vier_gewinnt/tests/test_vierInReihe.test.js new file mode 100644 index 0000000..ccd9796 --- /dev/null +++ b/vier_gewinnt/tests/test_vierInReihe.test.js @@ -0,0 +1,10 @@ +const vierInSpalte = require("../JS/vierInSpalte"); + +describe("Test Vier Gewinnt", () => { + it("Test vier Steine nebeneinander in einer Reihe vorhanden und gebe Gewinner 1 aus", () =>{ + expect(vierInSpalte([0, 1, 1, 1, 1, 0, 0])).toBe(1); + }) + it("Test vier Steine nebeneinander in einer Reihe vorhanden und gebe Gewinner 2 aus", () =>{ + expect(vierInSpalte([0, 0, 2, 2, 2, 2, 0])).toBe(2); + }) +}) \ No newline at end of file diff --git a/vier_gewinnt/tests/test_vierInSpalte.test.js b/vier_gewinnt/tests/test_vierInSpalte.test.js new file mode 100644 index 0000000..e675dee --- /dev/null +++ b/vier_gewinnt/tests/test_vierInSpalte.test.js @@ -0,0 +1,10 @@ +const vierInSpalte = require("../JS/vierInSpalte"); + +describe("Test Vier Gewinnt", () => { + it("Test vier Stein in einer Spalte vorhanden und gebe Gewinner 1 aus", () =>{ + expect(vierInSpalte([1, 1, 1, 1, 0, 0])).toBe(1); + }) + it("Test vier Stein in einer Spalte vorhanden und gebe Gewinner 2 aus", () =>{ + expect(vierInSpalte([0, 2, 2, 2, 2, 0])).toBe(2); + }) +}) \ No newline at end of file diff --git a/vier_gewinnt/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html index b425127..2d01e3f 100644 --- a/vier_gewinnt/vierGewinnt.html +++ b/vier_gewinnt/vierGewinnt.html @@ -8,70 +8,81 @@ + + + + + + + + + Vier Gewinnt

Vier Gewinnt

-

Vier Gewinnt ist ein Spiel, indem Spieler abwechseld Steine in Felder legen, wer als erstes vier Steine nebeneinader, übereinander oder diagonal hat, hat gewonnen.

-

Spieler an Zug:

1

+ +

Vier Gewinnt ist ein Spiel, indem Spieler abwechseld Steine in Felder legen, wer als erstes vier Steine nebeneinader, übereinander oder diagonal hat, hat gewonnen.

+

Spieler am Zug:

1

- - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + +
+