Last active
December 11, 2016 19:38
-
-
Save dineshsonachalam/e55d416133c4943ef0da7b2e3c7bce54 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var connection = require('../connection'); | |
function Todo() { | |
this.get = function(res) { | |
connection.acquire(function(err, con) { | |
con.query('select * from battles', function(err, result) { | |
/* | |
if(!err) | |
{ | |
console.log("In todo:"); | |
// var x = con.query('SELECT * FROM `battles` WHERE battle_number=1'); | |
console.log("Result0:"+result[0].name); | |
} | |
*/ | |
// Iterating throught every result | |
for (var i in result) | |
{ | |
// console.log("Results:"+result[i].name); | |
// count++; | |
/*Now part of the FAMOUS ELO ALGORITHM */ | |
var r1; | |
var r2; | |
var k = 32; | |
var x ; //calculated rating | |
var y ; //calculated rating | |
con.query('select * from rating', function(err, res) { | |
console.log("In rating"); | |
var l1=0; | |
var l2=0; | |
var king1 = result[i].attacker_king; | |
var king2 = result[i].defender_king; | |
for (var j in res) | |
{ | |
if((result[i].battle_number==1)) //for battle 1 | |
{ | |
r1 = r2 =400; | |
} | |
else if((king1==res[j].King)&&(res[j].rating==0)) //for 1st king whether gone to battle or not | |
{ | |
r1 = 400; | |
} | |
else if((king2==res[j].King)&&(res[j].rating==0)) | |
{ | |
r2 = 400; | |
} | |
else | |
{ | |
if((typeof(king1) !== "undefined") && king1==res[j].King) | |
{ | |
r1=res[j].rating; | |
l1=j; //location of the king in rating table | |
} | |
if ((typeof(king2) !== "undefined") && king2==res[j].King) | |
{ | |
r2=res[j].rating; | |
l2=j; | |
} | |
} | |
} | |
} | |
//1st step | |
var R1 =Math.pow(10,r1/400); | |
var R2 =Math.pow(10,r2/400); | |
//2nd step -expected score for each king | |
var e1 = R1 /(R1+R2); | |
var e2 = R2 /(R1+R2); | |
//after battle finishes | |
//3rd step | |
var s1; // attacker king | |
var s2; // defender king | |
if(result[i].attacker_outcome =="win") //attacker king wins | |
{ | |
s1 = 1; | |
s2=0; | |
} | |
else { | |
s2 =1; | |
s1= 0; | |
} | |
//4 th step update elo rating for each king | |
var x = r1 + k*(s1-e1); | |
var y = r2 + k*(s2-e2); | |
// update rating set rating = 3 where king = "john"; | |
console.log("L1:"+l1); | |
console.log("J:"+j); | |
var query ='update rating set'+'res[l1].rating='+x+'where res[j].King='+ king1; | |
// var query ='update rating set'+res[l1].rating+' =x,res[l2].rating =y'; | |
console.log("query:"+query); | |
// Final step - updating values | |
con.query('update rating set res[l1].rating =x,res[l2].rating =y', function(err, res) { | |
if(!err) | |
{ | |
console("Rating updated successfully"); | |
} | |
else { | |
// console.log("Error:"+err); | |
} | |
//do nothing | |
//It automaticall update value in database | |
}); | |
}); | |
} | |
/* | |
//calculating only for first fight | |
var r1; | |
var r2; | |
var k = 32; | |
var x ; //calculated rating | |
var y ; //calculated rating | |
if(result[0].battle_number==1) //for battle 1 | |
{ | |
r1 = r2 =400; | |
} | |
//1st step | |
var R1 =Math.pow(10,r1/400); | |
var R2 =Math.pow(10,r2/400); | |
//2nd step -expected score for each king | |
var e1 = R1 /(R1+R2); | |
var e2 = R2 /(R1+R2); | |
//after battle finishes | |
//3rd step | |
var s1; // attacker king | |
var s2; // defender king | |
if(result[0].attacker_outcome =="win") //attacker king wins | |
{ | |
s1 = 1; | |
s2=0; | |
} | |
else { | |
s2 =1; | |
s1= 0; | |
} | |
//4 th step update elo rating for each king | |
var x = r1 + k*(s1-e1); | |
var y = r2 + k*(s2-e2); | |
//now rating of 2 kings | |
console.log("Attacker King Rating:"+x); | |
console.log("Defender King Rating:"+y); | |
console.log("Total count:"+count); | |
*/ | |
con.release(); | |
res.send(result); | |
}); | |
}); | |
}; | |
} | |
/* | |
function elo() { | |
this.get = function(res) { | |
connection.acquire(function(err, con) { | |
con.query('select * from battles', function(err, result) { | |
if(!err) | |
{ | |
console.log("I'm awesome"); | |
// var x = con.query('SELECT * FROM `battles` WHERE battle_number=1'); | |
console.log("X:"+result[0].name); | |
} | |
con.release(); | |
res.send(result); | |
}); | |
}); | |
}; | |
} | |
*/ | |
/* | |
this.create = function(todo, res) { | |
connection.acquire(function(err, con) { | |
con.query('insert into todo_list set ?', todo, function(err, result) { | |
con.release(); | |
if (err) { | |
console.log("Error:"+err); | |
res.send({status: 1, message: 'TODO creation failed'}); | |
} else { | |
res.send({status: 0, message: 'TODO created successfully'}); | |
} | |
}); | |
}); | |
}; | |
*/ | |
/* | |
this.update = function(todo, res) { | |
connection.acquire(function(err, con) { | |
con.query('update todo_list set ? where id = ?', [todo, todo.id], function(err, result) { | |
con.release(); | |
if (err) { | |
res.send({status: 1, message: 'TODO update failed'}); | |
} else { | |
res.send({status: 0, message: 'TODO updated successfully'}); | |
} | |
}); | |
}); | |
}; | |
this.delete = function(id, res) { | |
connection.acquire(function(err, con) { | |
con.query('delete from todo_list where id = ?', [id], function(err, result) { | |
con.release(); | |
if (err) { | |
res.send({status: 1, message: 'Failed to delete'}); | |
} else { | |
res.send({status: 0, message: 'Deleted successfully'}); | |
} | |
}); | |
}); | |
}; | |
} | |
function elo | |
{ | |
//if first fight b/w ally or king | |
var r1; | |
var r2; | |
var k=32; | |
if(fight == 0) | |
{ | |
r1 =400 ; | |
r2 =400 ; //rating before fight | |
} | |
else | |
{ | |
//if already fought | |
r1 = //current rating get from db | |
r2 = //current rating get from db | |
} | |
//1st step | |
var R1 =Math.pow(10,r1/400); | |
var R2 =Math.pow(10,r2/400); | |
//2nd step -expected score for each king | |
var e1 = R1 /(R1+R2); | |
var e2 = R2 /(R1+R2); | |
//after battle finishes | |
//3rd step | |
var s1; | |
var s2; | |
if(attacker_outcome ="WIN") | |
{ | |
s1 = 1; | |
s2=0; | |
} | |
else { | |
s2 =1; | |
s1= 0; | |
} | |
//4 th step update elo rating for each king | |
var x = r1 + k*(s1-e1); | |
var y = r2 + k*(s2-e2); | |
*/ | |
//module.exports = new elo(); | |
module.exports = new Todo(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment