From c2be377a926ae65cc9f661b90bca6e996f1ec604 Mon Sep 17 00:00:00 2001 From: Max Gold Date: Mon, 21 Jun 2021 11:34:43 +0200 Subject: [PATCH] Solved error of not removing cups after the 7th cup. Winner function was reworked, draw funktion was removed. --- Output/BoardServer.js | 80 ++++++++++++++++++--------------------- Output/public/js/Board.js | 55 +++++++++++---------------- Output/public/js/app.js | 6 +-- Output/server.js | 5 --- README.md | 13 +++++-- 5 files changed, 71 insertions(+), 88 deletions(-) diff --git a/Output/BoardServer.js b/Output/BoardServer.js index f09c6a7..91baa1a 100644 --- a/Output/BoardServer.js +++ b/Output/BoardServer.js @@ -19,8 +19,7 @@ Board.events = { GAME_READY: 'gameReady', CUP_MARKED: 'cupMarked', CHANGE_TURN: 'changeTurn', - WINNER: 'winner', - DRAW: 'draw' + WINNER: 'winner' }; util.inherits(Board, EventEmitter); @@ -67,9 +66,7 @@ Board.prototype.mark = function(cupId) { var res = this.checkWinner(); if (res.win) { this.disableAll(); - this.emit(Board.events.WINNER, {player: this.players[this.currentTurn], pos: res.pos}); - } else if (this.checkDraw()) { - this.emit(Board.events.DRAW, {}); + this.emit(Board.events.WINNER, {player: this.players[this.currentTurn]}); } else { this.currentTurn = (this.currentTurn + 1) % 2; this.emit(Board.events.CHANGE_TURN, this.players[this.currentTurn]); @@ -83,7 +80,6 @@ Board.prototype.mark = function(cupId) { * @returns {boolean} */ Board.prototype.checkTurn = function(playerId) { - ('checkTurn'); return this.players[this.currentTurn].id == playerId; }; @@ -91,52 +87,50 @@ Board.prototype.checkTurn = function(playerId) { * * @returns {{win: boolean, pos: Array}} */ -Board.prototype.checkWinner = function() { - var winPosition = [ - [0, 1, 2], - [3, 4, 5], - [6, 7, 8], + Board.prototype.checkWinner = function() { + var win = false; + var counter=0; - [0, 3, 6], - [1, 4, 7], - [2, 5, 8], + this.cups.forEach(function(cup) { + if(cup.active == false) { + counter++; + } + }); - [0, 4, 8], - [6, 4, 2] - ]; + if(counter == 10) { + win = true; + } - var player = this.players[this.currentTurn]; - var pos = []; - var win = winPosition.some(function(win) { - if (this.cups[win[0]].value === player.label) { - var res = this.cups[win[0]].value === this.cups[win[1]].value && this.cups[win[1]].value === this.cups[win[2]].value; - if (res) { - pos = win; - return true; - } - } + /* + var winPosition = [ + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ]; - return false; - }, this); + var player = this.players[this.currentTurn]; + var pos = []; - return { - win: win, - pos: pos - }; + var win = winPosition.some(function(win) { + if (this.cups[win[0]].textContent === player.label) { + var res = this.cups[win[0]].textContent === this.cups[win[1]].textContent && this.cups[win[1]].textContent === this.cups[win[2]].textContent; + + if (res) { + pos = win; + return true; + } +} + + return false; + }, this);*/ + + return { + win: win + }; + + }; -}; -/** - * - * @returns {boolean} - */ -Board.prototype.checkDraw = function() { - return this.cups.every(function(cup) { - return cup.value === this.players[0].label || cup.value === this.players[1].label; - }, this); -}; /** * diff --git a/Output/public/js/Board.js b/Output/public/js/Board.js index db6508f..fc6bbf0 100644 --- a/Output/public/js/Board.js +++ b/Output/public/js/Board.js @@ -62,12 +62,9 @@ Board.prototype.enableTurn = function() { }); }; -Board.prototype.highlightcups = function(pos) { +Board.prototype.highlightcups = function() { var cups = this.cups; alert('highlightcups'); - pos.forEach(function(i) { - // cups[i].classList.add('colorRed'); - }); cups.forEach(function(cup) { cup.setAttribute('marked', 'true'); @@ -208,18 +205,12 @@ Board.prototype.doMark = function(cupId, label) { * * @param pos */ -Board.prototype.doWinner = function(pos) { +Board.prototype.doWinner = function() { this.disableAll(); - this.highlightcups(pos); + this.highlightcups(); }; -/** - * - */ -Board.prototype.doDraw = function() { - alert('doDraw'); - this.lowlightcups(); -}; + /** * @@ -241,17 +232,23 @@ Board.prototype.highlightScoreboard = function(playerId) { * @returns {{win: boolean, pos: Array}} */ Board.prototype.checkWinner = function() { + var counter=0; + var win = false; + this.cups.forEach(function(cup) { + if (cup.getAttribute('marked') === 'true') { + counter++; + } + }); + + if(counter === 10) { + win = true; + } + + + +/* var winPosition = [ - [0, 1, 2], - [3, 4, 5], - [6, 7, 8], - - [0, 3, 6], - [1, 4, 7], - [2, 5, 8], - - [0, 4, 8], - [6, 4, 2] + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ]; var player = this.players[this.currentTurn]; @@ -268,7 +265,7 @@ Board.prototype.checkWinner = function() { } return false; - }, this); + }, this);*/ return { win: win, @@ -277,15 +274,7 @@ Board.prototype.checkWinner = function() { }; -/** - * - * @returns {boolean} - */ -Board.prototype.checkDraw = function() { - return this.cups.every(function(cup) { - return cup.textContent === this.players[0].label || cup.textContent === this.players[1].label; - }, this); -}; + /** * diff --git a/Output/public/js/app.js b/Output/public/js/app.js index 6552e45..277016d 100644 --- a/Output/public/js/app.js +++ b/Output/public/js/app.js @@ -1,4 +1,4 @@ -var socket = new WebSocket('ws://localhost:2667'); +var socket = new WebSocket('ws://192.168.188.72:2667'); var events = { outgoing: { JOIN_GAME: 'csJoinGame', @@ -114,9 +114,7 @@ socket.onmessage = function(event){ case events.incoming.GAME_OVER: if (msg.data.player) { - board.doWinner(msg.data.pos); - } else { - board.doDraw(); + board.doWinner(); } socket.send(makeMessage(events.outgoing.QUIT, hero.id)); diff --git a/Output/server.js b/Output/server.js index d829338..007dfa5 100644 --- a/Output/server.js +++ b/Output/server.js @@ -71,11 +71,6 @@ wss.on('connection', function connection(ws) { }); }); - board.on(Board.events.DRAW, function(event) { - wss.clients.forEach(function(client) { - client.send(makeMessage(events.outgoing.GAME_OVER, event)); - }); - }); ws.on('message', function incoming(msg) { diff --git a/README.md b/README.md index 7114d4a..c6186bc 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,17 @@ Ein Projekt das es ermöglicht Beerpong über das Internet von zwei unabhängige Entstehung im Rahmen einer Praktikumsaufgabe im Fach Interaktion. -Voraussetzungen: Node.js wurde installiert. +Voraussetzungen: Node.js wurde installiert, so dass npm im Terminal verfügbar ist. -Erst den Web-server starten mit: +Erst den Web-server starten mit: npm run-script web-server danach den Socket-server starten mit: -npm run-script socket-server \ No newline at end of file +npm run-script socket-server + +Becher über die Tasten: + qwer + asd + yx + c +verschwinden lassen.