Skip to content

Commit

Permalink
Updating game logic, user account and puzzles
Browse files Browse the repository at this point in the history
  • Loading branch information
gustaYo committed Jan 17, 2017
1 parent 1359952 commit 33eb697
Show file tree
Hide file tree
Showing 108 changed files with 3,362 additions and 604 deletions.
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,14 @@ VueChess
Images
------

![mostrando app](images/1.png "Vs PC")
![mostrando app](images/2.png "Viewing a finished game")
![mostrando app](images/3.png "Puzzle (White mates in a movement)")
![mostrando app](images/game.png "users players")
![mostrando app](images/invite.png "user invite")
![mostrando app](images/invites.png "invites users")
![mostrando app](images/init.png "init game")
![mostrando app](images/puzzles.png "Puzzle (White mates in 3)")
![mostrando app](images/create_puzzle.png "adding a puzzle type")
![mostrando app](images/visor.png "visor")
![mostrando app](images/user_account.png "user account")


*in progress*
Expand Down
Binary file removed images/1.png
Binary file not shown.
Binary file removed images/2.png
Binary file not shown.
Binary file removed images/3.png
Binary file not shown.
Binary file added images/create_puzzle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/game.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/init.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/invite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/invites.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/puzzles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/user_account.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/visor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion server/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ var config = {
// user: 'admin',
// pass: '123456'
},
uri: process.env.MONGO_URL || 'mongodb://127.0.0.1/vuexchess'
uri: process.env.MONGO_URL || 'mongodb://127.0.0.1/vuegustchess'
},
porthttp: process.env.PORT || 3311,
multicore: false,
Expand Down
150 changes: 145 additions & 5 deletions server/controllers/board.server.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var Board = mongoose.model('boards');
var boards= {};
var async = require('async');
var userController= require('./chat.server.controller');
var useFork = false

var userIsPlayed = (user) => {
for (var i in boards) {
Expand All @@ -23,6 +24,17 @@ var changeBoards = (someBoard, method) => {
process.send(send)
}

exports.confirmGame = (io,socket,dta,next) => {
// usuario invitado confirma que quiere juegar la partida indicada
var nicknames = userController.getNicknames(io)
var otherUser = dta.u1 === socket.nickname.nickname ? dta.u2 : dta.u1
if(nicknames[otherUser]){
dta.event = 'confirmGame'
dta.confirm = true
io.sockets.connected[nicknames[otherUser].socket].emit("event", dta);
}
nicknames = {}
}

exports.addBoard = (io,socket,dta,next) => {
// crear nuevo tablero
Expand Down Expand Up @@ -65,13 +77,14 @@ exports.addBoard = (io,socket,dta,next) => {
if (dta.u2 !== 'PC' && nicknames[dta.u2]) {
io.sockets.connected[nicknames[dta.u2].socket].join(board._id);
}
socket.join(board._id)
socket.join(board._id)
// iniciar juego de sala
var data= {
event: 'initGame',
data: board
}
io.sockets.in(board._id).emit('event', data);
nicknames = {}
return next(null,board)
});
}
Expand All @@ -81,6 +94,7 @@ exports.inviteGame = (io,socket,dta,next) => {
if(nicknames[dta.data.recibe]){
io.sockets.connected[nicknames[dta.data.recibe].socket].emit("event", dta);
}
nicknames = {}
}

var closeGame = (io, dta, next) => {
Expand Down Expand Up @@ -150,7 +164,6 @@ var isFinishTime = (idBoard, io) => {
}
exports.move = (io,socket,board,next) => {
// salvar estado de tablero

if (boards[board.data.idBoard]) {
if (board.data.pgn) {
boards[board.data.idBoard].pgn = board.data.pgn;
Expand Down Expand Up @@ -178,7 +191,6 @@ exports.getBoard = (io,socket,board,next) => {
return next('not_found')
}
// en el servidor se llevan los tiempos reales de cada partida

if (!timesBoards[board._id]){
// inicializacion de tiempos de juego
timesBoards[board._id] =
Expand Down Expand Up @@ -215,7 +227,7 @@ exports.getBoard = (io,socket,board,next) => {
next(null,{board:boards[board._id] ,times: timesBoards[board._id].times})
setTimeout(function() {
isFinishTime(board._id, io);
},1000)
},1000)
}

exports.filterViews = (req, res) => {
Expand Down Expand Up @@ -243,4 +255,132 @@ exports.filterViews = (req, res) => {
return res.status(200).send(results)
}
});
}
}

exports.stats = (req, res) => {
var parms = req.query;
getStaticticsUser(parms.user, (err,results) => {
// dar formato al resultado
results = formatResultStatis(results)
if (err) {
return res.status(500).send(err);
} else {
return res.status(200).send(results)
}
})


}

var getStaticticsUser = (user,next) => {
async.parallel({
whitevsPC: function(callback) {
Board.count(
{
u1: user,
u2: 'PC',
wins: 'white'
}
, function(err, count) {
callback(null, count);
})
},
blackvsPC: function(callback) {
Board.count(
{
u2: user,
u1: 'PC',
wins: 'black'
}
, function(err, count) {
callback(null, count);
})
},
totalWhitevsPC: function(callback) {
Board.count(
{
u1: user,
u2: 'PC'
}
, function(err, count) {
callback(null, count);
})
},
totalvsPC: function(callback) {
Board.count(
{
u1: {$in: ['PC',user]},
u2: {$in: ['PC',user]}
}
, function(err, count) {
callback(null, count);
})
},

// vs user no pc
whitevsOthersUsers: function(callback) {
Board.count(
{
u1: user,
u2: {$nin: ['PC']},
wins: 'white'
}
, function(err, count) {
callback(null, count);
})
},
blackvsOthersUsers: function(callback) {
Board.count(
{
u2: user,
u1: {$nin: ['PC']},
wins: 'black'
}
, function(err, count) {
callback(null, count);
})
},
totalvsOthersUsers: function(callback) {
Board.count(
{$or:
[{u1: user, u2: {$nin: ['PC']}},
{u1: {$nin: ['PC']}, u2: user}]
}
, function(err, count) {
callback(null, count);
})
},
totalWhitevsOthersUsers: function(callback) {
Board.count(
{
u1: user,
u2: {$nin: ['PC']}
}
, function(err, count) {
callback(null, count);
})
}
},
function(err, results){
if (err) {
return next(err);
} else {
return next(null,results)
}
});
}

var formatResultStatis = (results) => {
var result= {}
for(var key in results) {
if (Array.isArray(results[key])) {
for(var n in results[key]) {
result[key] = {}
result[key][results[key][n]._id]=results[key][n].nums
}
}else {
result[key] = results[key]
}
}
return result
}
29 changes: 20 additions & 9 deletions server/controllers/chat.server.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ exports.username = (io,socket,dta,next) => {
}
var _user = {
nickname: user.username,
name: user.name,
image: user.image,
id: user._id,
socket:socket.id
}
Expand Down Expand Up @@ -138,21 +140,17 @@ var loadConver = (user1, user2, range, next) => {
.sort({created: -1})
.limit(range.limit)
.skip(range.skip)
.exec(function(err, men) {
if (err) {
return next(err);
} else {
return next(men);
}
.exec(function(err, mens) {
next(err,mens)
})
}

exports.loadUserConvert = (io,socket,dta,next) => {
if (socket.nickname)
loadConver(socket.nickname.nickname, dta.user, dta.range, function (log) {
next(null,log)
loadConver(socket.nickname.nickname, dta.user, dta.range, function (err,log) {
next(err,log)
})
}
}

var userLog = (user, next) => {
var losgs_retorn = new Array();
Expand Down Expand Up @@ -240,4 +238,17 @@ exports.uploadFile = (req, res) => {
});
// parse the incoming request containing the form data
form.parse(req);
}

exports.deleteImage = function(req, res) {
var parms = req.body
var dir = path.join(__dirname, '../public/uploads')
fs.unlink(dir+'/'+parms.name, function(err){
if(err){
console.log(err)
return res.send(500, err);
}
console.log('eliminando', parms)
return res.status(200).send('ok')
})
}
Loading

0 comments on commit 33eb697

Please sign in to comment.