Browse Source

Solved error of not removing cups after the 7th cup. Winner function was reworked, draw funktion was removed.

master
Maximilian Gold 2 years ago
parent
commit
c2be377a92
5 changed files with 75 additions and 92 deletions
  1. 42
    48
      Output/BoardServer.js
  2. 21
    32
      Output/public/js/Board.js
  3. 2
    4
      Output/public/js/app.js
  4. 0
    5
      Output/server.js
  5. 10
    3
      README.md

+ 42
- 48
Output/BoardServer.js View File

GAME_READY: 'gameReady', GAME_READY: 'gameReady',
CUP_MARKED: 'cupMarked', CUP_MARKED: 'cupMarked',
CHANGE_TURN: 'changeTurn', CHANGE_TURN: 'changeTurn',
WINNER: 'winner',
DRAW: 'draw'
WINNER: 'winner'
}; };


util.inherits(Board, EventEmitter); util.inherits(Board, EventEmitter);
var res = this.checkWinner(); var res = this.checkWinner();
if (res.win) { if (res.win) {
this.disableAll(); 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 { } else {
this.currentTurn = (this.currentTurn + 1) % 2; this.currentTurn = (this.currentTurn + 1) % 2;
this.emit(Board.events.CHANGE_TURN, this.players[this.currentTurn]); this.emit(Board.events.CHANGE_TURN, this.players[this.currentTurn]);
* @returns {boolean} * @returns {boolean}
*/ */
Board.prototype.checkTurn = function(playerId) { Board.prototype.checkTurn = function(playerId) {
('checkTurn');
return this.players[this.currentTurn].id == playerId; return this.players[this.currentTurn].id == playerId;
}; };


* *
* @returns {{win: boolean, pos: Array}} * @returns {{win: boolean, pos: Array}}
*/ */
Board.prototype.checkWinner = function() {
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]
];

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;
}
}
Board.prototype.checkWinner = function() {
var win = false;
var counter=0;


return false;
}, this);
this.cups.forEach(function(cup) {
if(cup.active == false) {
counter++;
}
});


return {
win: win,
pos: pos
};
if(counter == 10) {
win = true;
}



/*
var winPosition = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
];

var player = this.players[this.currentTurn];
var 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);
};


/** /**
* *

+ 21
- 32
Output/public/js/Board.js View File

}); });
}; };


Board.prototype.highlightcups = function(pos) {
Board.prototype.highlightcups = function() {
var cups = this.cups; var cups = this.cups;
alert('highlightcups'); alert('highlightcups');
pos.forEach(function(i) {
// cups[i].classList.add('colorRed');
});


cups.forEach(function(cup) { cups.forEach(function(cup) {
cup.setAttribute('marked', 'true'); cup.setAttribute('marked', 'true');
* *
* @param pos * @param pos
*/ */
Board.prototype.doWinner = function(pos) {
Board.prototype.doWinner = function() {
this.disableAll(); this.disableAll();
this.highlightcups(pos);
this.highlightcups();
}; };


/**
*
*/
Board.prototype.doDraw = function() {
alert('doDraw');
this.lowlightcups();
};



/** /**
* *
* @returns {{win: boolean, pos: Array}} * @returns {{win: boolean, pos: Array}}
*/ */
Board.prototype.checkWinner = function() { Board.prototype.checkWinner = function() {
var winPosition = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
var counter=0;
var win = false;
this.cups.forEach(function(cup) {
if (cup.getAttribute('marked') === 'true') {
counter++;
}
});

if(counter === 10) {
win = true;
}


[0, 3, 6],
[1, 4, 7],
[2, 5, 8],


[0, 4, 8],
[6, 4, 2]

/*
var winPosition = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
]; ];


var player = this.players[this.currentTurn]; var player = this.players[this.currentTurn];
} }


return false; return false;
}, this);
}, this);*/


return { return {
win: win, win: win,


}; };


/**
*
* @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);
};



/** /**
* *

+ 2
- 4
Output/public/js/app.js View File

var socket = new WebSocket('ws://localhost:2667');
var socket = new WebSocket('ws://192.168.188.72:2667');
var events = { var events = {
outgoing: { outgoing: {
JOIN_GAME: 'csJoinGame', JOIN_GAME: 'csJoinGame',


case events.incoming.GAME_OVER: case events.incoming.GAME_OVER:
if (msg.data.player) { if (msg.data.player) {
board.doWinner(msg.data.pos);
} else {
board.doDraw();
board.doWinner();
} }


socket.send(makeMessage(events.outgoing.QUIT, hero.id)); socket.send(makeMessage(events.outgoing.QUIT, hero.id));

+ 0
- 5
Output/server.js View File

}); });
}); });


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) { ws.on('message', function incoming(msg) {



+ 10
- 3
README.md View File



Entstehung im Rahmen einer Praktikumsaufgabe im Fach Interaktion. 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 npm run-script web-server


danach den Socket-server starten mit: danach den Socket-server starten mit:
npm run-script socket-server
npm run-script socket-server

Becher über die Tasten:
qwer
asd
yx
c
verschwinden lassen.

Loading…
Cancel
Save