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
+
Spieler am Zug:
1
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
From bad0899c160e4152afab85404816fe1656ac295e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 12:10:00 +0100
Subject: [PATCH 02/26] Test Gewinner, wenn vier Steine in Spalte
---
vier_gewinnt/JS/vierInSpalte.js | 23 ++++++++++++--------
vier_gewinnt/tests/test_vierInSpalte.test.js | 10 +++++++++
2 files changed, 24 insertions(+), 9 deletions(-)
create mode 100644 vier_gewinnt/tests/test_vierInSpalte.test.js
diff --git a/vier_gewinnt/JS/vierInSpalte.js b/vier_gewinnt/JS/vierInSpalte.js
index 6fb48b8..a900485 100644
--- a/vier_gewinnt/JS/vierInSpalte.js
+++ b/vier_gewinnt/JS/vierInSpalte.js
@@ -1,13 +1,18 @@
-function vierInSpalte(spalte){
- if(spalte == [0, 0, 1, 1, 1, 1] || spalte == [0, 1, 1, 1, 1, 0] || spalte == [1, 1, 1, 1, 0, 0]|| spalte == [1, 1, 1, 1, 1, 0]|| spalte == [0, 1, 1, 1, 1, 1]|| spalte == [1, 1, 1, 1, 1, 1] || spalte == [2, 2, 1, 1, 1, 1] || spalte == [2, 1, 1, 1, 1, 2] || spalte == [1, 1, 1, 1, 2, 2]|| spalte == [1, 1, 1, 1, 1, 2]|| spalte == [2, 1, 1, 1, 1, 1]){
- //Spieler Gruen
- return 1;
+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;
+ }
}
- else if(spalte == [0, 0, 2, 2, 2, 2] || spalte == [0, 2, 2, 2, 2, 0] || spalte == [2, 2, 2, 2, 0, 0]|| spalte == [2, 2, 2, 2, 2, 0]|| spalte == [0, 2, 2, 2, 2, 2]|| spalte == [2, 2, 2, 2, 2, 2] || spalte == [1, 1, 2, 2, 2, 2] || spalte == [1, 2, 2, 2, 2, 1] || spalte == [2, 2, 2, 2, 1, 1]|| spalte == [2, 2, 2, 2, 2, 1]|| spalte == [1, 2, 2, 2, 2, 2]){
- //Spieler Rot
- return 2;
- } else {
- return 0;
+ //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_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
From ef5f27c63aa0797fec8020c50489b49816d8c99e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 12:35:20 +0100
Subject: [PATCH 03/26] =?UTF-8?q?Test=20welcher=20Platz=20als=20n=C3=A4chs?=
=?UTF-8?q?tes=20Frei=20ist?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vier_gewinnt/JS/naechsteFreierPlatz.js | 9 +++++++++
vier_gewinnt/tests/test_naechsterFreierPlatz.test.js | 8 ++++++++
2 files changed, 17 insertions(+)
create mode 100644 vier_gewinnt/JS/naechsteFreierPlatz.js
create mode 100644 vier_gewinnt/tests/test_naechsterFreierPlatz.test.js
diff --git a/vier_gewinnt/JS/naechsteFreierPlatz.js b/vier_gewinnt/JS/naechsteFreierPlatz.js
new file mode 100644
index 0000000..f8d8950
--- /dev/null
+++ b/vier_gewinnt/JS/naechsteFreierPlatz.js
@@ -0,0 +1,9 @@
+function ersterFerierPlatz(arr) {
+ for (let elem = 0; elem < arr.length; elem++) {
+ if (arr[elem] === 0) {
+ return elem+1;
+ }
+
+ }
+}
+module.exports= ersterFerierPlatz;
\ 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..a8365a4
--- /dev/null
+++ b/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js
@@ -0,0 +1,8 @@
+const ersterFerierPlatz = require("../JS/naechsteFreierPlatz");
+
+describe("Test Vier Gewinnt", () => {
+ it("Test welcher naechster platz ist frei", () =>{
+ expect(ersterFerierPlatz([1, 1, 0, 0, 0, 0])).toBe(3);
+ expect(ersterFerierPlatz([1, 1, 2, 1, 0, 0])).toBe(5);
+ })
+})
\ No newline at end of file
From a856b6ba3fbbab71b9744ee0ce01f1f378d7c85a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 13:19:36 +0100
Subject: [PATCH 04/26] =?UTF-8?q?Stein=20unten=20platzieren=20und=20Stein?=
=?UTF-8?q?=20wird=20nicht=20mehr=20=C3=BCberschrieben?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vier_gewinnt/JS/naechsteFreierPlatz.js | 4 ++--
vier_gewinnt/JS/steinSetzen.js | 4 ++++
vier_gewinnt/tests/test_naechsterFreierPlatz.test.js | 6 +++---
vier_gewinnt/tests/test_vierGewint.test.js | 9 +--------
vier_gewinnt/vierGewinnt.html | 1 +
5 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/vier_gewinnt/JS/naechsteFreierPlatz.js b/vier_gewinnt/JS/naechsteFreierPlatz.js
index f8d8950..a41d52f 100644
--- a/vier_gewinnt/JS/naechsteFreierPlatz.js
+++ b/vier_gewinnt/JS/naechsteFreierPlatz.js
@@ -1,4 +1,4 @@
-function ersterFerierPlatz(arr) {
+function ersterFreierPlatz(arr) {
for (let elem = 0; elem < arr.length; elem++) {
if (arr[elem] === 0) {
return elem+1;
@@ -6,4 +6,4 @@ function ersterFerierPlatz(arr) {
}
}
-module.exports= ersterFerierPlatz;
\ No newline at end of file
+module.exports= ersterFreierPlatz;
\ No newline at end of file
diff --git a/vier_gewinnt/JS/steinSetzen.js b/vier_gewinnt/JS/steinSetzen.js
index 4189dd2..27f7acd 100644
--- a/vier_gewinnt/JS/steinSetzen.js
+++ b/vier_gewinnt/JS/steinSetzen.js
@@ -1,4 +1,5 @@
function setzeStein(reihe, spalte) {
+ // const ersterFreierPlatz = require("./naechsteFreierPlatz");
var aktuellerSpieler = document.getElementById("aktuellerSpieler").innerHTML;
var color;
if (aktuellerSpieler == 1) {
@@ -7,6 +8,9 @@ function setzeStein(reihe, spalte) {
} else {
color = "red";
}
+
+ var reihe = ersterFreierPlatz(steinInSpalte(spalte));
+
document.getElementById(reihe + "/" + spalte).style.backgroundColor= color;
spielerWechsel();
}
\ No newline at end of file
diff --git a/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js b/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js
index a8365a4..2a55f21 100644
--- a/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js
+++ b/vier_gewinnt/tests/test_naechsterFreierPlatz.test.js
@@ -1,8 +1,8 @@
-const ersterFerierPlatz = require("../JS/naechsteFreierPlatz");
+const ersterFreierPlatz = require("../JS/naechsteFreierPlatz");
describe("Test Vier Gewinnt", () => {
it("Test welcher naechster platz ist frei", () =>{
- expect(ersterFerierPlatz([1, 1, 0, 0, 0, 0])).toBe(3);
- expect(ersterFerierPlatz([1, 1, 2, 1, 0, 0])).toBe(5);
+ 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_vierGewint.test.js b/vier_gewinnt/tests/test_vierGewint.test.js
index 75baf45..efc6144 100644
--- a/vier_gewinnt/tests/test_vierGewint.test.js
+++ b/vier_gewinnt/tests/test_vierGewint.test.js
@@ -5,11 +5,4 @@ describe("Test Vier Gewinnt", () => {
expect(neuer_stein_in_spalte(5)).toBe(6);
expect(neuer_stein_in_spalte(6)).toBe("Spalte voll");
})
-})
-
-// const steinInSpalte = require("../JS/steineInSpalte");
-// describe("Test Vier Gewinnt", () => {
-// it("Test Stein und Spielerfarbe erkennen", () =>{
-// expect(steinInSpalte(1)).toStrictEqual([0,0,0,0,0,0]);
-// })
-// })
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/vier_gewinnt/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html
index 83dd58e..e67b1fe 100644
--- a/vier_gewinnt/vierGewinnt.html
+++ b/vier_gewinnt/vierGewinnt.html
@@ -8,6 +8,7 @@
+
Vier Gewinnt
From e23ee32289fbd65527ae916fdb697210767bc6d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 19:00:46 +0100
Subject: [PATCH 05/26] Vier horizontal in Reihe wird erkannt
---
vier_gewinnt/JS/gewinnErmitteln.js | 8 ++++++++
vier_gewinnt/JS/steinSetzen.js | 3 ++-
vier_gewinnt/JS/steineInSpalte.js | 14 +++++---------
vier_gewinnt/vierGewinnt.html | 2 ++
4 files changed, 17 insertions(+), 10 deletions(-)
create mode 100644 vier_gewinnt/JS/gewinnErmitteln.js
diff --git a/vier_gewinnt/JS/gewinnErmitteln.js b/vier_gewinnt/JS/gewinnErmitteln.js
new file mode 100644
index 0000000..5a8d2b8
--- /dev/null
+++ b/vier_gewinnt/JS/gewinnErmitteln.js
@@ -0,0 +1,8 @@
+function gewinnErmitteln(spalte) {
+ if (vierInSpalte(steinInSpalte(spalte)) === 1) {
+ alert("Spieler 1 (Grün) hat gewonnen")
+ }if (vierInSpalte(steinInSpalte(spalte)) === 2) {
+ alert("Spieler 2 (Rot) hat gewonnen")
+ }
+
+}
\ No newline at end of file
diff --git a/vier_gewinnt/JS/steinSetzen.js b/vier_gewinnt/JS/steinSetzen.js
index 27f7acd..fed4f56 100644
--- a/vier_gewinnt/JS/steinSetzen.js
+++ b/vier_gewinnt/JS/steinSetzen.js
@@ -1,5 +1,4 @@
function setzeStein(reihe, spalte) {
- // const ersterFreierPlatz = require("./naechsteFreierPlatz");
var aktuellerSpieler = document.getElementById("aktuellerSpieler").innerHTML;
var color;
if (aktuellerSpieler == 1) {
@@ -12,5 +11,7 @@ function setzeStein(reihe, spalte) {
var reihe = ersterFreierPlatz(steinInSpalte(spalte));
document.getElementById(reihe + "/" + spalte).style.backgroundColor= color;
+ gewinnErmitteln(spalte);
spielerWechsel();
+
}
\ No newline at end of file
diff --git a/vier_gewinnt/JS/steineInSpalte.js b/vier_gewinnt/JS/steineInSpalte.js
index 554c61d..5ba41d2 100644
--- a/vier_gewinnt/JS/steineInSpalte.js
+++ b/vier_gewinnt/JS/steineInSpalte.js
@@ -1,27 +1,23 @@
-
-
-
-
function steinInSpalte(spalte) {
// Feld mit Steinen in Zeile
// O = kein Stein
// 1 = gruener Stein
// 2 = roter Stein
- var zeile1 = [];
+ var zeile = [];
for (let i = 1; i <= 6; i++) {
var color = document.getElementById(i + "/" + spalte).style.backgroundColor;
if (color == "red") {
- zeile1.push(2);
+ zeile.push(2);
}else if (color == "green") {
- zeile1.push(1);
+ zeile.push(1);
} else {
- zeile1.push(0);
+ zeile.push(0);
}
}
- return zeile1;
+ return zeile;
}
diff --git a/vier_gewinnt/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html
index e67b1fe..16815b7 100644
--- a/vier_gewinnt/vierGewinnt.html
+++ b/vier_gewinnt/vierGewinnt.html
@@ -9,6 +9,8 @@
+
+
Vier Gewinnt
From d966f5a91948919ac2a357555404e04286fb07d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 19:27:04 +0100
Subject: [PATCH 06/26] Reihen auslesen und Array ausgeben
---
vier_gewinnt/JS/steineInReihe.js | 23 +++++++++++++++++++++++
vier_gewinnt/vierGewinnt.html | 1 +
2 files changed, 24 insertions(+)
create mode 100644 vier_gewinnt/JS/steineInReihe.js
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/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html
index 16815b7..95bcf35 100644
--- a/vier_gewinnt/vierGewinnt.html
+++ b/vier_gewinnt/vierGewinnt.html
@@ -8,6 +8,7 @@
+
From 5c5592f12619f4c3bc3cce8a9a8a49b3111d95f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 19:41:26 +0100
Subject: [PATCH 07/26] Test: Vier vertikal in Reihe nebeneinander wird erkannt
---
vier_gewinnt/JS/vierInReihe.js | 18 ++++++++++++++++++
vier_gewinnt/tests/test_vierInReihe.test.js | 10 ++++++++++
2 files changed, 28 insertions(+)
create mode 100644 vier_gewinnt/JS/vierInReihe.js
create mode 100644 vier_gewinnt/tests/test_vierInReihe.test.js
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/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
From 5a7b675d2514f8bdec420420e77e7e5415a4d936 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 19:55:00 +0100
Subject: [PATCH 08/26] Vier horizontal in Reihe wird erkannt und Gewinner
genannt
---
vier_gewinnt/JS/gewinnErmitteln.js | 6 +++++-
vier_gewinnt/JS/steinSetzen.js | 2 +-
vier_gewinnt/vierGewinnt.html | 1 +
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/vier_gewinnt/JS/gewinnErmitteln.js b/vier_gewinnt/JS/gewinnErmitteln.js
index 5a8d2b8..0cab2d3 100644
--- a/vier_gewinnt/JS/gewinnErmitteln.js
+++ b/vier_gewinnt/JS/gewinnErmitteln.js
@@ -1,8 +1,12 @@
-function gewinnErmitteln(spalte) {
+function gewinnErmitteln(spalte,reihe) {
if (vierInSpalte(steinInSpalte(spalte)) === 1) {
alert("Spieler 1 (Grün) hat gewonnen")
}if (vierInSpalte(steinInSpalte(spalte)) === 2) {
alert("Spieler 2 (Rot) hat gewonnen")
+ }if (vierInReihe(steinInReihe(reihe)) === 1) {
+ alert("Spieler 1 (Grün) hat gewonnen")
+ }if (vierInReihe(steinInReihe(reihe)) === 2) {
+ alert("Spieler 2 (Rot) hat gewonnen")
}
}
\ No newline at end of file
diff --git a/vier_gewinnt/JS/steinSetzen.js b/vier_gewinnt/JS/steinSetzen.js
index fed4f56..16337f8 100644
--- a/vier_gewinnt/JS/steinSetzen.js
+++ b/vier_gewinnt/JS/steinSetzen.js
@@ -11,7 +11,7 @@ function setzeStein(reihe, spalte) {
var reihe = ersterFreierPlatz(steinInSpalte(spalte));
document.getElementById(reihe + "/" + spalte).style.backgroundColor= color;
- gewinnErmitteln(spalte);
+ gewinnErmitteln(spalte, reihe);
spielerWechsel();
}
\ No newline at end of file
diff --git a/vier_gewinnt/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html
index 95bcf35..8ff58b4 100644
--- a/vier_gewinnt/vierGewinnt.html
+++ b/vier_gewinnt/vierGewinnt.html
@@ -11,6 +11,7 @@
+
Vier Gewinnt
From b134e8480416744e4707a6b9f791335e83722887 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Raphael=20Elstr=C3=B6m?=
Date: Tue, 7 Feb 2023 20:00:25 +0100
Subject: [PATCH 09/26] Button zum Spiel neustarten hinzugefuegt
---
vier_gewinnt/vierGewinnt.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/vier_gewinnt/vierGewinnt.html b/vier_gewinnt/vierGewinnt.html
index 8ff58b4..bd5c818 100644
--- a/vier_gewinnt/vierGewinnt.html
+++ b/vier_gewinnt/vierGewinnt.html
@@ -78,5 +78,6 @@