Skip to content

Instantly share code, notes, and snippets.

@dineshsonachalam
Last active December 11, 2016 19:38
Show Gist options
  • Save dineshsonachalam/e55d416133c4943ef0da7b2e3c7bce54 to your computer and use it in GitHub Desktop.
Save dineshsonachalam/e55d416133c4943ef0da7b2e3c7bce54 to your computer and use it in GitHub Desktop.
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