diff --git a/schlangen_und_leitern/js/Bridge.js b/schlangen_und_leitern/js/Bridge.js
index 9fc20b7..2117b7f 100644
--- a/schlangen_und_leitern/js/Bridge.js
+++ b/schlangen_und_leitern/js/Bridge.js
@@ -21,7 +21,7 @@ function init(playerCount){
let playerArray = buildPlayerArray(playerCount);
//Haupt Spielschleife aufrufen
- document.getElementById("rollButton").addEventListener("click", function(){gameloop(boardArr,playerArray, playerCount);});
+ document.getElementById("rollButton").addEventListener("click", function(){gameloop(playerArray, playerCount, objectArr);});
playerInit(playerArray);
@@ -39,46 +39,56 @@ function init(playerCount){
}
-function gameloop (boardArr, playerArray, playerCount){
+function gameloop (playerArray, playerCount, objectArr){
console.log("player " + turnCount + " ist dran");
+ player = playerArray[turnCount-1];
- //würfle function aufrufen
- let roll = rollDice();
+ if(player.won == false){
+ //würfle function aufrufen
+ let roll = rollDice();
+
+ //spieler auswählen
+ //spieler newPosition mit roll Aktualisierung
+ movePlayer(player, roll);
+ //TODO checken ob die Spieler an eine leiter oder Schlange gelandet hat
+ //TODO prüfen ob jemand gewonnen hat und wenn ja spiele beenden // weiter spielen
+ checkPosition(player, objectArr);
- //spieler auswählen
- player = playerArray[turnCount-1];
- //spieler newPosition mit roll Aktualisierung
- movePlayer(player, roll);
- //TODO checken ob die Spieler an eine leiter oder Schlange gelandet hat
-
- //TODO prüfen ob jemand gewonnen hat und wenn ja spiele beenden // weiter spielen
+ //TODO checken ob die Spieler an eine leiter oder Schlange gelandet hat
+
+
+ //alter Stelle löschen
+ eraseOLd(playerArray,turnCount);
+ // setzen newPostion auf position um und neuPosition leeren
+ resetNewOld(player);
+ //spieler Stelle auf dem Brett zeichnen
+ drawNew(playerArray,turnCount);
+
- //TODO checken ob die Spieler an eine leiter oder Schlange gelandet hat
-
-
- //alter Stelle löschen
- eraseOLd(playerArray,turnCount);
- // setzen newPostion auf position um und neuPosition leeren
- resetNewOld(player);
- //spieler Stelle auf dem Brett zeichnen
- drawNew(playerArray,turnCount);
-
+ //TODO prüfen ob jemand gewonnen hat und wenn ja spiele beenden // weiter spielen
+ // bei gewinn, zwei optionen anbieten; spiel wieter oder beenden
+ //TODO verstekte new game taste der alles new setzt
+ //TODO falls spiel weiter, taste verstecken und gewohnen spieler ignorieren (schware)
- //TODO prüfen ob jemand gewonnen hat und wenn ja spiele beenden // weiter spielen
- // bei gewinn, zwei optionen anbieten; spiel wieter oder beenden
- //TODO verstekte new game taste der alles new setzt
- //TODO falls spiel weiter, taste verstecken und gewohnen spieler ignorieren (schware)
-
- // Reihezähler inkrementieren bzw. zurücksetzen
- if(turnCount >= playerCount){
- turnCount = 1;
+ // Reihezähler inkrementieren bzw. zurücksetzen
+ if(turnCount >= playerCount){
+ turnCount = 1;
+ }
+ else {
+ turnCount ++
+ }
+ //show who is up
+ turnIndicater(turnCount);
}
- else {
- turnCount ++
+ else{
+ if(turnCount >= playerCount){
+ turnCount = 1;
+ }
+ else {
+ turnCount ++
+ }
}
- //show who is up
- turnIndicater(turnCount);
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/js/makeBoard.js b/schlangen_und_leitern/js/makeBoard.js
index fbf55a7..26fda34 100644
--- a/schlangen_und_leitern/js/makeBoard.js
+++ b/schlangen_und_leitern/js/makeBoard.js
@@ -248,19 +248,43 @@ function createBoardObjects(canvasPointArr, objectArray){
drawLine(objectArray[i].type,startPointX, startPointY, endPointX, endPointY)
-
-
-
-
-
+ }
}
-
+}
+function checkPosition(player, objectArr){
+
+ //above 100
+ if(player.newPosition > 100){
+ player.newPosition = 100;
+ }
+ //win condition
+ if(player.newPosition == 100){
+ player.won = true;
+ document.getElementById("continue").style.display = "block"
+ document.getElementById("replay").style.display = "block"
+ document.getElementById("würfelBereich").style.display = "none"
+ }
+
+ //snake condition
+ //ladder condition
+ for(let i = 0; i < (objectArr.length) ; i++){
+ if(player.newPosition == objectArr[i].start){
+ player.newPosition = objectArr[i].end;
+ }
+ }
+
}
-}
+function continueGame (){
+
+ document.getElementById("continue").style.display = "none"
+ document.getElementById("replay").style.display = "none"
+ document.getElementById("würfelBereich").style.display = "grid"
+
+ }
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index efc3ec0..301e439 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -5,6 +5,7 @@ function PlayerBuilder(){
this.position = 1;
this.newPosition;
+ this.won = false
}
@@ -193,19 +194,36 @@ function turnIndicater(turnCount){
default:
break;
}
+}
-}
-
-function checkWin(player){
- if(player.position == 100){
- }
-}
+function checkPosition(player, objectArr){
+
+ //above 100
+ if(player.newPosition > 100){
+ player.newPosition = 100;
+ }
+ //win condition
+ if(player.newPosition == 100){
+ player.won = true;
+ document.getElementById("continue").style.display = "block"
+ document.getElementById("replay").style.display = "block"
+ document.getElementById("würfelBereich").style.display = "none"
+ }
+ //snake condition
+ //ladder condition
+ for(let i = 0; i < (objectArr.length) ; i++){
+ if(player.newPosition == objectArr[i].start){
+ player.newPosition = objectArr[i].end;
+ }
+ }
+
+}
\ No newline at end of file
From 311d72f60e62e9f1ad1c6a57461209641da245fc Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Wed, 8 Feb 2023 16:10:10 +0100
Subject: [PATCH 06/22] Refactoring: playerInit-Funktion neu geschrieben und
optimiert
---
schlangen_und_leitern/js/playerHandling.js | 48 +++++++---------------
1 file changed, 15 insertions(+), 33 deletions(-)
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 301e439..f8da9ea 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -33,44 +33,26 @@ function movePlayer(player, roll){
player.newPosition = player.position + roll;
if(player.newPosition >= 100){
player.newPosition = 100;
- //TODO gewinn aufrufen.
}
- //TODO Schlange oder Leiter fehlschalg.
+
}
+
+ function initialise(count, playerArray){
+ //player id ie. count 0 =
+ var id = count +1;
+ var Token = document.createElement("div")
+ let position = playerArray[count].position
+ var boardPostition = boardLocation(position);
+ Token.classList.add("p"+ id);
+ Token.id = "p" + id;
+ document.getElementById(boardPostition).appendChild(Token)
+
+ }
+
//Draw Spieler bei Spiele init
function playerInit(playerArray){
for(let i = 0; i < playerArray.length; i++){
- var Token = document.createElement("div")
- if(i == 0){
- let position = playerArray[i].position
- var boardPostition = boardLocation(position);
- Token.classList.add("p1");
- Token.id = "p1";
- document.getElementById(boardPostition).appendChild(Token)
- }
- else if(i == 1){
- let position = playerArray[i].position
- var boardPostition = boardLocation(position);
- Token.classList.add("p2");
- Token.id = "p2";
- document.getElementById(boardPostition).appendChild(Token)
- }
- else if(i == 2){
- let position = playerArray[i].position
- var boardPostition = boardLocation(position);
- Token.classList.add("p3");
- Token.id = "p3";
- document.getElementById(boardPostition).appendChild(Token)
- }
- else if(i == 3){
- let position = playerArray[i].position
- var boardPostition = boardLocation(position);
- Token.classList.add("p4");
- Token.id = "p4";
- document.getElementById(boardPostition).appendChild(Token)
- }
-
-
+ initialise(i,playerArray)
}
}
From be2f7b821fc9c74aa73ab6412cffe70de9851f99 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Wed, 8 Feb 2023 16:20:34 +0100
Subject: [PATCH 07/22] =?UTF-8?q?Refactoring:=20Ausblenden=20des=20Startme?=
=?UTF-8?q?n=C3=BCs=20durch=20eine=20einzige=20Funktion?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/Bridge.js | 10 ++--------
schlangen_und_leitern/js/makeBoard.js | 11 +++++++++++
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/schlangen_und_leitern/js/Bridge.js b/schlangen_und_leitern/js/Bridge.js
index 2117b7f..13c4e79 100644
--- a/schlangen_und_leitern/js/Bridge.js
+++ b/schlangen_und_leitern/js/Bridge.js
@@ -2,14 +2,8 @@
let turnCount = 1;
function init(playerCount){
- //playerselect versctecken
- document.getElementById("2Player").style.display = "none";
- document.getElementById("3Player").style.display = "none";
- document.getElementById("4Player").style.display = "none";
- document.getElementById("isUp").style.display = "block";
-
- // Wufelbereich zeigen.
- document.getElementById("würfelBereich").style.display = "grid";
+ //hide menue
+ hideStartMenu()
// Spielbrett Aufbauen
boardArr = buildBoard();
diff --git a/schlangen_und_leitern/js/makeBoard.js b/schlangen_und_leitern/js/makeBoard.js
index 26fda34..29637c8 100644
--- a/schlangen_und_leitern/js/makeBoard.js
+++ b/schlangen_und_leitern/js/makeBoard.js
@@ -286,6 +286,17 @@ function continueGame (){
}
+function hideStartMenu(){
+ //playerselect versctecken
+ document.getElementById("2Player").style.display = "none";
+ document.getElementById("3Player").style.display = "none";
+ document.getElementById("4Player").style.display = "none";
+ document.getElementById("isUp").style.display = "block";
+
+ // Wufelbereich zeigen.
+ document.getElementById("würfelBereich").style.display = "grid";
+}
+
From a5c54a54fce2fe99763df5be2461b89d6bab18b0 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Wed, 8 Feb 2023 16:32:32 +0100
Subject: [PATCH 08/22] =?UTF-8?q?Refactoring:=20Funktion=20zum=20Ein-=20un?=
=?UTF-8?q?d=20Ausblenden=20von=20HTML-Elementen=20hinzugef=C3=BCgt=20und?=
=?UTF-8?q?=20wo=20n=C3=B6tig=20eingesetzt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/makeBoard.js | 28 ++++++++++++----------
schlangen_und_leitern/js/playerHandling.js | 6 ++---
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/schlangen_und_leitern/js/makeBoard.js b/schlangen_und_leitern/js/makeBoard.js
index 29637c8..ba30bd7 100644
--- a/schlangen_und_leitern/js/makeBoard.js
+++ b/schlangen_und_leitern/js/makeBoard.js
@@ -261,9 +261,9 @@ function checkPosition(player, objectArr){
//win condition
if(player.newPosition == 100){
player.won = true;
- document.getElementById("continue").style.display = "block"
- document.getElementById("replay").style.display = "block"
- document.getElementById("würfelBereich").style.display = "none"
+ changeElement("continue", "block")
+ changeElement("replay", "block")
+ changeElement("würfelBereich", "none")
}
//snake condition
@@ -279,26 +279,28 @@ function checkPosition(player, objectArr){
function continueGame (){
- document.getElementById("continue").style.display = "none"
- document.getElementById("replay").style.display = "none"
- document.getElementById("würfelBereich").style.display = "grid"
-
+ changeElement("continue", "none")
+ changeElement("replay", "none")
+ changeElement("würfelBereich", "grid")
}
function hideStartMenu(){
//playerselect versctecken
- document.getElementById("2Player").style.display = "none";
- document.getElementById("3Player").style.display = "none";
- document.getElementById("4Player").style.display = "none";
- document.getElementById("isUp").style.display = "block";
+ changeElement("2Player", "none")
+ changeElement("3Player", "none")
+ changeElement("4Player", "none")
+ changeElement("isUp", "block")
// Wufelbereich zeigen.
- document.getElementById("würfelBereich").style.display = "grid";
+ changeElement("würfelBereich", "grid")
}
-
\ No newline at end of file
+ function changeElement(id, style){
+
+ document.getElementById(id).style.display = style;
+ }
\ No newline at end of file
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index f8da9ea..406d6f0 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -194,9 +194,9 @@ function checkPosition(player, objectArr){
//win condition
if(player.newPosition == 100){
player.won = true;
- document.getElementById("continue").style.display = "block"
- document.getElementById("replay").style.display = "block"
- document.getElementById("würfelBereich").style.display = "none"
+ changeElement("continue","block")
+ changeElement("replay","block")
+ changeElement("würfelBereich","none")
}
//snake condition
From de499f868ca01caf000df027216987c282506d4c Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Wed, 8 Feb 2023 17:48:42 +0100
Subject: [PATCH 09/22] refactoring: Spielbrett jetzt mit einem einzelnen
Funktionsaufruf aufgebaut
---
schlangen_und_leitern/HTML.html | 2 +-
schlangen_und_leitern/js/Bridge.js | 15 ++++-----
.../js/{makeBoard.js => boardHandling.js} | 32 +++++++++++--------
3 files changed, 26 insertions(+), 23 deletions(-)
rename schlangen_und_leitern/js/{makeBoard.js => boardHandling.js} (93%)
diff --git a/schlangen_und_leitern/HTML.html b/schlangen_und_leitern/HTML.html
index 2fc2f93..8a0eb22 100644
--- a/schlangen_und_leitern/HTML.html
+++ b/schlangen_und_leitern/HTML.html
@@ -6,7 +6,7 @@
-
+
Document
diff --git a/schlangen_und_leitern/js/Bridge.js b/schlangen_und_leitern/js/Bridge.js
index 13c4e79..3af95c3 100644
--- a/schlangen_und_leitern/js/Bridge.js
+++ b/schlangen_und_leitern/js/Bridge.js
@@ -4,13 +4,13 @@ let turnCount = 1;
function init(playerCount){
//hide menue
hideStartMenu()
-
+ //arrays deklaren
+ var canvasPointArr= [];
+ let objectArr = [];
// Spielbrett Aufbauen
- boardArr = buildBoard();
- drawBoard(boardArr);
+ buildBoard(objectArr,canvasPointArr);
//spielbret objekte genererien
- let objectArr = [];
- generateBoardObjects(leitern, schlangen, objectArr);
+
// spieler Strukturen aufbauen mit hilfe spieler Anzahl
let playerArray = buildPlayerArray(playerCount);
@@ -22,10 +22,9 @@ function init(playerCount){
////////experiemnt
- var canvasPointArr= [];
- drawCanavas();
+
canvasPointGen(canvasPointArr);
- createBoardObjects(canvasPointArr, objectArr)
+ drawBoardObjects(canvasPointArr, objectArr)
diff --git a/schlangen_und_leitern/js/makeBoard.js b/schlangen_und_leitern/js/boardHandling.js
similarity index 93%
rename from schlangen_und_leitern/js/makeBoard.js
rename to schlangen_und_leitern/js/boardHandling.js
index ba30bd7..b1d40e7 100644
--- a/schlangen_und_leitern/js/makeBoard.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -1,12 +1,12 @@
//ein Array erstellen, aus dem die Spilebrett gezeichnet werden kann
-function buildBoard(){
-
+function buildBoard(objectArr,canvasPointArr){
+
let boardArr = [];
let width = 10;
let height = 10;
let count = 100
let direction = 0 //0 = gerade reihe (links nach Rechts) ; 1 = ungerade reihe (rechts nach Links)
-
+ // construct board array
for(var y = 0; y < height ; y++){
let row = [];
if(direction == 0){
@@ -29,14 +29,20 @@ function buildBoard(){
}
boardArr.push(row)
}
- console.log(boardArr)
- return boardArr;
- }
-
-
+ // draw board on screen using board array
+ drawBoard(boardArr);
+ //draw canvas overlay
+ drawCanavas()
+ // cast points to center of board cells
+ canvasPointGen(canvasPointArr);
+ // add snakes and ladders objects to object array
+ generateBoardObjects(leitern, schlangen, objectArr)
+ //draw board objects
+ drawBoardObjects(canvasPointArr, objectArr)
+}
function drawBoard(arr){
@@ -57,11 +63,6 @@ function drawBoard(arr){
cell.innerHTML = (arr[y][x]);
}
}
- // add drawing of snakes and ladders
-
-
-
-
}
//spielbrett objekt Struktur
@@ -100,6 +101,9 @@ function generateBoardObjects (leitern, schlangen, objectArray){
objectArray.push(schlange);
}
}
+
+
+
//make a canvas the same size as the playbaord
function drawCanavas(){
var ctx = document.getElementById("canvas");
@@ -215,7 +219,7 @@ function drawLine(type, startPosX, startPosY, endPosX, endPosY){
}
-function createBoardObjects(canvasPointArr, objectArray){
+function drawBoardObjects(canvasPointArr, objectArray){
//loop through all object in the object array
for(let i = 0; i < objectArray.length; i++){
From 0fb99a74a1056bb19ed94564a6e7c4bfa50ba8b1 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 12:31:15 +0100
Subject: [PATCH 10/22] refactoring: Funktionen checkPostion, buildBoard und
rollDice in kleinere Funktionen zum Testen aufgeteilt
---
schlangen_und_leitern/js/boardHandling.js | 53 +++++++---------------
schlangen_und_leitern/js/diceHandling.js | 31 +++++++------
schlangen_und_leitern/js/playerHandling.js | 30 ++++++------
3 files changed, 50 insertions(+), 64 deletions(-)
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index b1d40e7..ac8043b 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -1,6 +1,20 @@
//ein Array erstellen, aus dem die Spilebrett gezeichnet werden kann
function buildBoard(objectArr,canvasPointArr){
+ // build board array
+ let boardArr = buildBoardArray()
+ // draw board on screen using board array
+ drawBoard(boardArr);
+ //draw canvas overlay
+ drawCanavas()
+ // cast points to center of board cells
+ canvasPointGen(canvasPointArr);
+ // add snakes and ladders objects to object array
+ generateBoardObjects(leitern, schlangen, objectArr)
+ //draw board objects
+ drawBoardObjects(canvasPointArr, objectArr)
+}
+function buildBoardArray(){
let boardArr = [];
let width = 10;
let height = 10;
@@ -29,20 +43,8 @@ function buildBoard(objectArr,canvasPointArr){
}
boardArr.push(row)
}
- // draw board on screen using board array
- drawBoard(boardArr);
- //draw canvas overlay
- drawCanavas()
- // cast points to center of board cells
- canvasPointGen(canvasPointArr);
- // add snakes and ladders objects to object array
- generateBoardObjects(leitern, schlangen, objectArr)
- //draw board objects
- drawBoardObjects(canvasPointArr, objectArr)
-
-
-
-}
+ return boardArr;
+ }
function drawBoard(arr){
@@ -256,30 +258,7 @@ function drawBoardObjects(canvasPointArr, objectArray){
}
}
-function checkPosition(player, objectArr){
-
- //above 100
- if(player.newPosition > 100){
- player.newPosition = 100;
- }
- //win condition
- if(player.newPosition == 100){
- player.won = true;
- changeElement("continue", "block")
- changeElement("replay", "block")
- changeElement("würfelBereich", "none")
- }
-
- //snake condition
- //ladder condition
- for(let i = 0; i < (objectArr.length) ; i++){
- if(player.newPosition == objectArr[i].start){
- player.newPosition = objectArr[i].end;
- }
- }
-
-}
function continueGame (){
diff --git a/schlangen_und_leitern/js/diceHandling.js b/schlangen_und_leitern/js/diceHandling.js
index 047be71..c52dc6c 100644
--- a/schlangen_und_leitern/js/diceHandling.js
+++ b/schlangen_und_leitern/js/diceHandling.js
@@ -10,21 +10,26 @@ let faces = ["img/wurfle/f(1).png",
//dice
function rollDice() {
- //Max und Min Zahl geben
- max = 6;
- min = 1
- // min und max als .Math variable umwandeln
- min = Math.ceil(min);
- max = Math.floor(max);
- //ein zufällige zahl zwischen min und max generieren
- roll = Math.floor(Math.random() * (max - min + 1) + min);
-
-
+ let roll = generateNumber()
// Wurfelbild ändern
document.querySelector("#face").src= faces[roll-1];
console.log(roll);
-
-
-
+
return roll;
}
+
+function generateNumber(){
+ let num;
+ //Max und Min Zahl geben
+ max = 6;
+ min = 1
+ // min und max als .Math variable umwandeln
+ min = Math.ceil(min);
+ max = Math.floor(max);
+ //ein zufällige zahl zwischen min und max generieren
+ num = Math.floor(Math.random() * (max - min + 1) + min);
+ return num;
+
+ }
+
+
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 406d6f0..6cbef27 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -180,32 +180,34 @@ function turnIndicater(turnCount){
-
-
-
-
-
function checkPosition(player, objectArr){
//above 100
- if(player.newPosition > 100){
- player.newPosition = 100;
- }
+ over100(player)
//win condition
if(player.newPosition == 100){
player.won = true;
- changeElement("continue","block")
- changeElement("replay","block")
- changeElement("würfelBereich","none")
+ changeElement("continue", "block")
+ changeElement("replay", "block")
+ changeElement("würfelBereich", "none")
}
-
//snake condition
//ladder condition
+ landedOn(player,objectArr)
+
+}
+
+function over100(player){
+
+ if(player.newPosition > 100){
+ player.newPosition = 100;
+ }
+}
+function landedOn (player, objectArr){
+
for(let i = 0; i < (objectArr.length) ; i++){
if(player.newPosition == objectArr[i].start){
player.newPosition = objectArr[i].end;
}
}
-
-
}
\ No newline at end of file
From b82a87741b8295be9d4c72ec36a82d847909173f Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 13:04:29 +0100
Subject: [PATCH 11/22] Test: testen ob rollDice immer eine Zahl zwischen 1 bis
6 ergibt
---
schlangen_und_leitern/js/diceHandling.js | 2 ++
schlangen_und_leitern/tests/diceHandling.test.js | 14 ++++++++++++++
2 files changed, 16 insertions(+)
create mode 100644 schlangen_und_leitern/tests/diceHandling.test.js
diff --git a/schlangen_und_leitern/js/diceHandling.js b/schlangen_und_leitern/js/diceHandling.js
index c52dc6c..6ce9cc9 100644
--- a/schlangen_und_leitern/js/diceHandling.js
+++ b/schlangen_und_leitern/js/diceHandling.js
@@ -33,3 +33,5 @@ function generateNumber(){
}
+ module.exports = generateNumber;
+
diff --git a/schlangen_und_leitern/tests/diceHandling.test.js b/schlangen_und_leitern/tests/diceHandling.test.js
new file mode 100644
index 0000000..72f79ee
--- /dev/null
+++ b/schlangen_und_leitern/tests/diceHandling.test.js
@@ -0,0 +1,14 @@
+const generateNumber = require('../js/diceHandling');
+
+describe('würfel testen', ()=>{
+
+ it('testen ob es von 100 Versuche immer eine zahl zwischen 1 und 6 zurück gibt',()=>{
+ for(let i = 0; i <= 100; i++)
+ {
+ expect(generateNumber()).toBeGreaterThanOrEqual(1);
+ expect(generateNumber()).toBeLessThan(7);
+ }
+ })
+
+
+})
From 4817ec28ab9e150f0812e1b922695e8e35b0d1bc Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 14:35:02 +0100
Subject: [PATCH 12/22] =?UTF-8?q?Test;=20testen,=20ob=20die=20Spielerobjek?=
=?UTF-8?q?te=20f=C3=BCr=20jede=20Spieleranzahl=20korrekt=20erzeugt=20werd?=
=?UTF-8?q?en?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/playerHandling.js | 11 ++++--
.../tests/playerHandling.test.js | 36 +++++++++++++++++++
2 files changed, 45 insertions(+), 2 deletions(-)
create mode 100644 schlangen_und_leitern/tests/playerHandling.test.js
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 6cbef27..9340360 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -4,7 +4,7 @@
function PlayerBuilder(){
this.position = 1;
- this.newPosition;
+ this.newPosition = 1;
this.won = false
}
@@ -19,7 +19,7 @@ function buildPlayerArray(playerCount, boardArr){
for(let i = 1; i <= playerCount; i++){
let player = new PlayerBuilder(i);
playerArray.push(player)
- console.log("player added to array!")
+
}
return playerArray;
@@ -210,4 +210,11 @@ function landedOn (player, objectArr){
player.newPosition = objectArr[i].end;
}
}
+}
+
+
+
+module.exports = {
+ PlayerBuilder,
+ buildPlayerArray,
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/playerHandling.test.js b/schlangen_und_leitern/tests/playerHandling.test.js
new file mode 100644
index 0000000..62792ba
--- /dev/null
+++ b/schlangen_und_leitern/tests/playerHandling.test.js
@@ -0,0 +1,36 @@
+//Importieren der FUnktionen
+const { PlayerBuilder, buildPlayerArray, movePlayer } = require('../js/playerHandling');
+
+//example player array
+let playerArr2 = [
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false}
+
+]
+let playerArr3 = [
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false},
+
+]
+let playerArr4 = [
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false},
+ {"position": 1, "newPosition": 1, "won": false}
+
+]
+
+//Eine Test Gruppe, mit mehreren Tests
+describe('Testen, ob für jede mögliche Spieleranzahl die richtige Anzahl von Spielerobjekten erzeugt wird', () => {
+
+ it('testen ob 2 Spieler Objekte generiert wird ', ()=>{
+ expect(buildPlayerArray(2)).toEqual(playerArr2);
+ });
+ it('testen ob 3 Spieler Objekte generiert wird ', ()=>{
+ expect(buildPlayerArray(3)).toEqual(playerArr3);
+ });
+ it('testen ob 4 Spieler Objekte generiert wird ', ()=>{
+ expect(buildPlayerArray(4)).toEqual(playerArr4);
+ });
+})
\ No newline at end of file
From 4c6bc11431351ce605f76801864fe1ee1d4fd4eb Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 14:45:45 +0100
Subject: [PATCH 13/22] =?UTF-8?q?test:=20Testen=20ob=20die=20Position=20de?=
=?UTF-8?q?s=20spielers=20rigtig=20g=C3=A4ndert=20wird?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/playerHandling.js | 1 +
schlangen_und_leitern/tests/playerHandling.test.js | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 9340360..a484bae 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -217,4 +217,5 @@ function landedOn (player, objectArr){
module.exports = {
PlayerBuilder,
buildPlayerArray,
+ movePlayer
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/playerHandling.test.js b/schlangen_und_leitern/tests/playerHandling.test.js
index 62792ba..a06dc66 100644
--- a/schlangen_und_leitern/tests/playerHandling.test.js
+++ b/schlangen_und_leitern/tests/playerHandling.test.js
@@ -20,6 +20,7 @@ let playerArr4 = [
{"position": 1, "newPosition": 1, "won": false}
]
+let rolls =[1,2,3,4,5,6];
//Eine Test Gruppe, mit mehreren Tests
describe('Testen, ob für jede mögliche Spieleranzahl die richtige Anzahl von Spielerobjekten erzeugt wird', () => {
@@ -33,4 +34,17 @@ describe('Testen, ob für jede mögliche Spieleranzahl die richtige Anzahl von S
it('testen ob 4 Spieler Objekte generiert wird ', ()=>{
expect(buildPlayerArray(4)).toEqual(playerArr4);
});
+})
+
+describe('Testen ob das movePlayer funkction:', () => {
+
+ it('die Position bei jeder möglichen Rolle korrekt ändert', ()=>{
+ for(let i = 0; i
Date: Thu, 9 Feb 2023 15:06:05 +0100
Subject: [PATCH 14/22] =?UTF-8?q?test:=20Pr=C3=BCfung,=20ob=20der=20Spiele?=
=?UTF-8?q?r=20die=20maximale=20Position=20=C3=BCberschreiten=20kann?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/playerHandling.js | 3 +-
.../tests/playerHandling.test.js | 32 ++++++++++++++++---
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index a484bae..386980c 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -217,5 +217,6 @@ function landedOn (player, objectArr){
module.exports = {
PlayerBuilder,
buildPlayerArray,
- movePlayer
+ movePlayer,
+ over100
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/playerHandling.test.js b/schlangen_und_leitern/tests/playerHandling.test.js
index a06dc66..29bdb33 100644
--- a/schlangen_und_leitern/tests/playerHandling.test.js
+++ b/schlangen_und_leitern/tests/playerHandling.test.js
@@ -1,5 +1,12 @@
//Importieren der FUnktionen
-const { PlayerBuilder, buildPlayerArray, movePlayer } = require('../js/playerHandling');
+const {
+PlayerBuilder,
+buildPlayerArray,
+movePlayer,
+over100
+} = require('../js/playerHandling');
+
+let player = {"position": 1, "newPosition": 1, "won": false};
//example player array
let playerArr2 = [
@@ -41,10 +48,25 @@ describe('Testen ob das movePlayer funkction:', () => {
it('die Position bei jeder möglichen Rolle korrekt ändert', ()=>{
for(let i = 0; i {
+
+ //Ein Test mit Name und Funktion
+ it('101 bis 130 wieder auf 100 setzen', ()=>{
+ for(let i = 1; i <30; i++){
+ let player = {"position": 1, "newPosition": 100, "won": false};
+ over100(player);
+ expect(player).toEqual({"position": 1, "newPosition": 100, "won": false});
}
+
});
-})
\ No newline at end of file
+})
From 9ab43d350a53e622118f4e3e9029afa53908b76d Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 15:28:32 +0100
Subject: [PATCH 15/22] test: Testen, ob die Position des Spielers korrekt
aktualisiert wird, wenn er auf einer Schlange oder Leiter landet
---
schlangen_und_leitern/js/playerHandling.js | 3 +-
.../tests/playerHandling.test.js | 44 +++++++++++++++++--
2 files changed, 42 insertions(+), 5 deletions(-)
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 386980c..338ab0d 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -218,5 +218,6 @@ module.exports = {
PlayerBuilder,
buildPlayerArray,
movePlayer,
- over100
+ over100,
+ landedOn
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/playerHandling.test.js b/schlangen_und_leitern/tests/playerHandling.test.js
index 29bdb33..7efc993 100644
--- a/schlangen_und_leitern/tests/playerHandling.test.js
+++ b/schlangen_und_leitern/tests/playerHandling.test.js
@@ -3,11 +3,11 @@ const {
PlayerBuilder,
buildPlayerArray,
movePlayer,
-over100
+over100,
+landedOn
} = require('../js/playerHandling');
let player = {"position": 1, "newPosition": 1, "won": false};
-
//example player array
let playerArr2 = [
{"position": 1, "newPosition": 1, "won": false},
@@ -29,6 +29,20 @@ let playerArr4 = [
]
let rolls =[1,2,3,4,5,6];
+
+let ladderArr = (
+{start: 7, end: 33},
+{start: 24, end: 44},
+{start: 31, end: 55},
+{start: 60, end: 77}
+)
+let snakeArr = (
+{start: 99, end: 56},
+{start: 86, end: 64},
+{start: 60, end: 28},
+{start: 18, end: 1}
+)
+
//Eine Test Gruppe, mit mehreren Tests
describe('Testen, ob für jede mögliche Spieleranzahl die richtige Anzahl von Spielerobjekten erzeugt wird', () => {
@@ -56,10 +70,10 @@ describe('Testen ob das movePlayer funkction:', () => {
})
-//Eine Test Gruppe, mit mehreren Tests
+
describe('Testen, ob der Spieler in einer Position über 100 sein kann', () => {
- //Ein Test mit Name und Funktion
+
it('101 bis 130 wieder auf 100 setzen', ()=>{
for(let i = 1; i <30; i++){
let player = {"position": 1, "newPosition": 100, "won": false};
@@ -70,3 +84,25 @@ describe('Testen, ob der Spieler in einer Position über 100 sein kann', () => {
});
})
+
+
+describe('tests testen', () => {
+
+
+ it('testen alle leitern', ()=>{
+ for(let i = 0; i <= ladderArr.length; i++)
+ {
+ landedOn(player, ladderArr[i]);
+ expect(player).toBe({"position": 1, "newPosition": ladderArr[i].end, "won": false});
+ }
+ });
+ it('testen alle schlange', ()=>{
+
+ for(let i = 0; i <= snakeArr.length; i++)
+ {
+ landedOn(player, snakeArr[i]);
+ expect(player).toBe({"position": 1, "newPosition": ladderArr[i].end, "won": false});
+ }
+ });
+
+})
\ No newline at end of file
From 98a18e981d51ced505d2df6d8b96f59c3bb7f289 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 16:04:59 +0100
Subject: [PATCH 16/22] test: testen, ob die neue Position die aktuelle
Position korrekt ersetzt
---
schlangen_und_leitern/js/playerHandling.js | 3 ++-
.../tests/playerHandling.test.js | 23 ++++++++++++++++++-
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/schlangen_und_leitern/js/playerHandling.js b/schlangen_und_leitern/js/playerHandling.js
index 338ab0d..8906dec 100644
--- a/schlangen_und_leitern/js/playerHandling.js
+++ b/schlangen_und_leitern/js/playerHandling.js
@@ -219,5 +219,6 @@ module.exports = {
buildPlayerArray,
movePlayer,
over100,
- landedOn
+ landedOn,
+ resetNewOld
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/playerHandling.test.js b/schlangen_und_leitern/tests/playerHandling.test.js
index 7efc993..2889182 100644
--- a/schlangen_und_leitern/tests/playerHandling.test.js
+++ b/schlangen_und_leitern/tests/playerHandling.test.js
@@ -4,7 +4,8 @@ PlayerBuilder,
buildPlayerArray,
movePlayer,
over100,
-landedOn
+landedOn,
+resetNewOld
} = require('../js/playerHandling');
let player = {"position": 1, "newPosition": 1, "won": false};
@@ -105,4 +106,24 @@ describe('tests testen', () => {
}
});
+})
+
+
+describe('testen, ob die neue Position die aktuelle Position ersetzt ', () => {
+
+
+ it('mit einer Zufallszahl von 1 bis 100 zwanzigmal', ()=>{
+ for(let i = 0; i <= 20; i++)
+ {
+ min = Math.ceil(1);
+ max = Math.floor(100);
+ let position = Math.floor(Math.random() * (max - min + 1) + min)
+
+ let player = {"position": 1, "newPosition": position, "won": false}
+ resetNewOld(player);
+ expect(player).toEqual({"position": position, "newPosition": 0, "won": false});
+ }
+
+ });
+
})
\ No newline at end of file
From 56a23b51fb612bed5b73f241a7467b4189ea4212 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 16:23:33 +0100
Subject: [PATCH 17/22] test; testen, ob das boardArray korrekt aufgebaut ist
---
schlangen_und_leitern/js/boardHandling.js | 10 +++++-
.../tests/boardHandling.test.js | 32 +++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 schlangen_und_leitern/tests/boardHandling.test.js
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index ac8043b..6abb8d1 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -286,4 +286,12 @@ function hideStartMenu(){
function changeElement(id, style){
document.getElementById(id).style.display = style;
- }
\ No newline at end of file
+ }
+
+
+
+
+
+ module.exports = {
+ buildBoardArray
+}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/boardHandling.test.js b/schlangen_und_leitern/tests/boardHandling.test.js
new file mode 100644
index 0000000..106e407
--- /dev/null
+++ b/schlangen_und_leitern/tests/boardHandling.test.js
@@ -0,0 +1,32 @@
+//Importieren der FUnktionen
+const {
+ buildBoardArray
+ } = require('../js/boardHandling');
+
+
+ let boardEx =[
+ [100, 99, 98, 97, 96, 95, 94, 93, 92, 91],
+ [81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
+ [80, 79, 78, 77, 76, 75, 74, 73, 72, 71],
+ [61, 62, 63, 64, 65, 66, 67, 68, 69, 70],
+ [60, 59, 58, 57, 56, 55, 54, 53, 52, 51],
+ [41, 42, 43, 44, 45, 46, 47, 48, 49, 50],
+ [40, 39, 38, 37, 36, 35, 34, 33, 32, 31],
+ [21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
+ [20, 19, 18, 17, 16, 15, 14, 13, 12, 11],
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ ];
+
+
+
+
+describe('tests ob das boardArray rigtig aufgebaut würde', () => {
+
+
+ it('past zum beispiel array', ()=>{
+
+ expect(buildBoardArray()).toEqual(boardEx);
+
+ });
+
+})
\ No newline at end of file
From 1f504c10697de93b5d6b924b71180f8ff3651b8a Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 16:42:06 +0100
Subject: [PATCH 18/22] =?UTF-8?q?Test;=20Pr=C3=BCfen,=20ob=20die=20Anzahl?=
=?UTF-8?q?=20der=20dem=20objektArray=20hinzugef=C3=BCgten=20Objekte=20kor?=
=?UTF-8?q?rekt=20ist?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/boardHandling.js | 3 ++-
.../tests/boardHandling.test.js | 26 ++++++++++++++++---
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index 6abb8d1..705b88f 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -293,5 +293,6 @@ function hideStartMenu(){
module.exports = {
- buildBoardArray
+ buildBoardArray,
+ generateBoardObjects
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/boardHandling.test.js b/schlangen_und_leitern/tests/boardHandling.test.js
index 106e407..3abbce6 100644
--- a/schlangen_und_leitern/tests/boardHandling.test.js
+++ b/schlangen_und_leitern/tests/boardHandling.test.js
@@ -1,10 +1,11 @@
//Importieren der FUnktionen
const {
- buildBoardArray
+ buildBoardArray,
+ generateBoardObjects
} = require('../js/boardHandling');
- let boardEx =[
+let boardEx =[
[100, 99, 98, 97, 96, 95, 94, 93, 92, 91],
[81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
[80, 79, 78, 77, 76, 75, 74, 73, 72, 71],
@@ -17,6 +18,10 @@ const {
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
];
+//leiter Objekte
+let leitern = [[7, 33],[24, 44],[31, 55],[60, 77]];
+//schlange Objekte
+let schlangen = [[99, 56], [86, 64],[60, 28],[18,1]];
@@ -29,4 +34,19 @@ describe('tests ob das boardArray rigtig aufgebaut würde', () => {
});
-})
\ No newline at end of file
+})
+
+describe('testen ob alle board objekte korrekt initialisiert wird', () => {
+
+
+ it('testen, ob die Anzahl der Elemente im Array korrekt ist ', ()=>{
+ let objectArr = [] ;
+ generateBoardObjects(leitern, schlangen, objectArr);
+ expect(objectArr.length).toBe((leitern.length + schlangen.length));
+ });
+
+
+
+})
+
+
From ac128d9f4d6e0ee4d0ab553fe88ce29a5f59d141 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 17:03:06 +0100
Subject: [PATCH 19/22] =?UTF-8?q?test;=20pr=C3=BCfen,=20ob=20die=20Objekte?=
=?UTF-8?q?=20die=20richtigen=20Typen=20haben?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/boardHandling.js | 3 ++-
.../tests/boardHandling.test.js | 17 ++++++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index 705b88f..b379d70 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -294,5 +294,6 @@ function hideStartMenu(){
module.exports = {
buildBoardArray,
- generateBoardObjects
+ generateBoardObjects,
+ boardObject
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/boardHandling.test.js b/schlangen_und_leitern/tests/boardHandling.test.js
index 3abbce6..3a7e6fc 100644
--- a/schlangen_und_leitern/tests/boardHandling.test.js
+++ b/schlangen_und_leitern/tests/boardHandling.test.js
@@ -1,7 +1,8 @@
//Importieren der FUnktionen
const {
buildBoardArray,
- generateBoardObjects
+ generateBoardObjects,
+ boardObject
} = require('../js/boardHandling');
@@ -46,6 +47,20 @@ describe('testen ob alle board objekte korrekt initialisiert wird', () => {
});
+ it('prüfen, ob jedem Objekt der richtige Typ zugeordnet ist', ()=>{
+ let obArr = [] ;
+ generateBoardObjects(leitern, schlangen, obArr);
+
+ for(let i = 0; i < obArr.length; i++){
+ //prüfen leitern
+ if(obArr[i].start < obArr[i].end)
+ expect(obArr[i].type).toBe("l");
+ //prüfen schlange
+ else {
+ expect(obArr[i].type).toBe("s");
+ }
+ }
+ });
})
From 592b1fa3133997335f476d7d34efdd058c6def8a Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 18:51:42 +0100
Subject: [PATCH 20/22] =?UTF-8?q?die=20Positionen=20von=20Schlangen=20und?=
=?UTF-8?q?=20Leitern=20werden=20jedes=20Mal=20zuf=C3=A4llig=20ausgew?=
=?UTF-8?q?=C3=A4hlt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/js/boardHandling.js | 87 +++++++++++++++++++++--
1 file changed, 82 insertions(+), 5 deletions(-)
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index b379d70..76d6fd1 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -2,6 +2,11 @@
function buildBoard(objectArr,canvasPointArr){
// build board array
let boardArr = buildBoardArray()
+ //leiter Objekte(anfang , ende)
+ let leitern = [[7, 33],[24, 44],[31, 55],[60, 77]];
+ //schlange Objekte (anfang , ende)
+ let schlangen = [[99, 56], [86, 64],[60, 28],[18,1]];
+ dynamicObjects(leitern, schlangen)
// draw board on screen using board array
drawBoard(boardArr);
//draw canvas overlay
@@ -12,8 +17,8 @@ function buildBoard(objectArr,canvasPointArr){
generateBoardObjects(leitern, schlangen, objectArr)
//draw board objects
drawBoardObjects(canvasPointArr, objectArr)
-
}
+
function buildBoardArray(){
let boardArr = [];
let width = 10;
@@ -47,6 +52,82 @@ function buildBoardArray(){
}
+
+ function dynamicObjects(ladderArr, snakeArr){
+
+ //get the difficulty settings
+ //normal , intermediate, hard
+ //dicide number of snakes and ladders
+ //decide their positions
+ let snakeCount = 5 ;
+ let ladderCount = 5;
+ //everage number of rows moved
+ let snakeLength = 1.0
+ let ladderLength = 1.0
+
+ for (let i = 0; i < snakeCount; i++){
+ //pick random number between 11 and 100
+ let minStart = Math.ceil(11);
+ let maxStart = Math.floor(100);
+ let start = Math.floor(Math.random() * (maxStart - minStart + 1) + minStart)
+ //create an end point for this number
+ let minEnd = 10
+ let maxEnd = 30
+
+ //pick a seccond number not in the same decimal as the first number
+ let end = start - (Math.floor(Math.random() * (maxEnd - minEnd + 1) + minEnd))*snakeLength
+
+ //check if its below 1
+ if(end <=0){
+ end = 1
+ }
+ //add these as an [] to corisponding array
+ snakeArr[i] = [start,end]
+ }
+ for (let i = 0; i < ladderCount; i++){
+ //pick random number between 1 and 90
+ let minStart = Math.ceil(1);
+ let maxStart = Math.floor(90);
+ let start = Math.floor(Math.random() * (maxStart - minStart + 1) + minStart)
+ //create an end point for this number
+ let minEnd = 10
+ let maxEnd = 30
+
+ //pick a seccond number not in the same decimal as the first number
+ let end = start + (Math.floor(Math.random() * (maxEnd - minEnd + 1) + minEnd))*ladderLength
+
+ //check if its below 1
+ if(end >=100){
+ end = 99
+ }
+ //add these as an [] to corisponding array
+ ladderArr[i] = [start,end]
+ }
+ console.log(snakeArr)
+ console.log(ladderArr)
+
+
+
+ /////forbid
+ //ladders at top
+ //snakes on bottom
+ //6 snake starts next to each other
+ //neither leading to same level (not in the same decimal)
+ //cannot have two starts in one spot
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
function drawBoard(arr){
//Tabele Element auswählen
let tbl = document.getElementById("board");
@@ -76,10 +157,6 @@ function boardObject(){
}
-//leiter Objekte(anfang , ende)
-let leitern = [[7, 33],[24, 44],[31, 55],[60, 77]];
-//schlange Objekte (anfang , ende)
-let schlangen = [[99, 56], [86, 64],[60, 28],[18,1]];
From e9300ce032d48938c84b5aee22eea678aad83205 Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 19:17:40 +0100
Subject: [PATCH 21/22] Testen, ob dynamische Objekte korrekt erstellt werden
---
schlangen_und_leitern/js/boardHandling.js | 11 ++--
.../tests/boardHandling.test.js | 51 ++++++++++++++++++-
2 files changed, 55 insertions(+), 7 deletions(-)
diff --git a/schlangen_und_leitern/js/boardHandling.js b/schlangen_und_leitern/js/boardHandling.js
index 76d6fd1..137473e 100644
--- a/schlangen_und_leitern/js/boardHandling.js
+++ b/schlangen_und_leitern/js/boardHandling.js
@@ -3,9 +3,9 @@ function buildBoard(objectArr,canvasPointArr){
// build board array
let boardArr = buildBoardArray()
//leiter Objekte(anfang , ende)
- let leitern = [[7, 33],[24, 44],[31, 55],[60, 77]];
+ let leitern = [];
//schlange Objekte (anfang , ende)
- let schlangen = [[99, 56], [86, 64],[60, 28],[18,1]];
+ let schlangen = [];
dynamicObjects(leitern, schlangen)
// draw board on screen using board array
drawBoard(boardArr);
@@ -82,7 +82,7 @@ function buildBoardArray(){
end = 1
}
//add these as an [] to corisponding array
- snakeArr[i] = [start,end]
+ snakeArr.push([start,end])
}
for (let i = 0; i < ladderCount; i++){
//pick random number between 1 and 90
@@ -101,7 +101,7 @@ function buildBoardArray(){
end = 99
}
//add these as an [] to corisponding array
- ladderArr[i] = [start,end]
+ ladderArr.push([start,end])
}
console.log(snakeArr)
console.log(ladderArr)
@@ -372,5 +372,6 @@ function hideStartMenu(){
module.exports = {
buildBoardArray,
generateBoardObjects,
- boardObject
+ boardObject,
+ dynamicObjects
}
\ No newline at end of file
diff --git a/schlangen_und_leitern/tests/boardHandling.test.js b/schlangen_und_leitern/tests/boardHandling.test.js
index 3a7e6fc..498be54 100644
--- a/schlangen_und_leitern/tests/boardHandling.test.js
+++ b/schlangen_und_leitern/tests/boardHandling.test.js
@@ -2,7 +2,8 @@
const {
buildBoardArray,
generateBoardObjects,
- boardObject
+ boardObject,
+ dynamicObjects
} = require('../js/boardHandling');
@@ -62,6 +63,52 @@ describe('testen ob alle board objekte korrekt initialisiert wird', () => {
}
});
-})
+})
+
+
+
+
+describe('prüfen, ob dynamische Objekte korrekt erstellt wurden', () => {
+
+
+ it('Testen, ob genügend Objekte gemacht wurden', ()=>{
+
+ let leitern = [];
+ let schlangen = [];
+ dynamicObjects(leitern,schlangen)
+ expect(leitern.length).toBe(5);
+ expect(schlangen.length).toBe(5);
+
+ });
+
+ it('Prüfun, ob alle Schlangenobjekte niedriger enden als sie beginnenn', ()=>{
+
+
+ let leitern = [];
+ let schlangen = [];
+ dynamicObjects(leitern, schlangen)
+ for(let i = 0; i < schlangen.length; i++){
+
+ expect(schlangen[i][1]).toBeLessThan(schlangen[i][0]);
+ }
+
+
+ });
+
+ it('Prüfen, ob alle Leiterobjekte höher enden als sie beginnen', ()=>{
+
+
+ let leitern = [];
+ let schlangen = [];
+ dynamicObjects(leitern, schlangen)
+ for(let i = 0; i < leitern.length; i++){
+
+ expect(leitern[i][0]).toBeLessThan(leitern[i][1]);
+ }
+
+
+ });
+
+})
From 71e2fc701405c303c5b51e79b0fa4256ba9ff7bf Mon Sep 17 00:00:00 2001
From: Richard Halsall <richard-glyn.halsall@informatik.hs-fulda.e>
Date: Thu, 9 Feb 2023 19:33:32 +0100
Subject: [PATCH 22/22] =?UTF-8?q?refactoring:=20das=20oberfl=C3=A4chliche?=
=?UTF-8?q?=20aussiehen=20ver=C3=A4ndert?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
schlangen_und_leitern/HTML.html | 4 +--
schlangen_und_leitern/css/style.css | 41 ++++++++++++++++++++++++-----
2 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/schlangen_und_leitern/HTML.html b/schlangen_und_leitern/HTML.html
index 8a0eb22..3c8d892 100644
--- a/schlangen_und_leitern/HTML.html
+++ b/schlangen_und_leitern/HTML.html
@@ -32,8 +32,8 @@