Skip to content
Snippets Groups Projects
Commit b34f93c4 authored by Patrick's avatar Patrick
Browse files

Added code to write to leaderboard if the board is solved.

parent 37449ad1
Branches
No related tags found
1 merge request!1Update 1
......@@ -16,6 +16,7 @@ initSqlJs().then(function (SQL) {
const filebuffer = fs.readFileSync(db_path);
db = new SQL.Database(filebuffer);
db.run("CREATE TABLE IF NOT EXISTS users(username VARCHAR(20), pwhash VARCHAR(100));");
db.run("CREATE TABLE IF NOT EXISTS leaderboard(username VARCHAR(20), score INT);");
const data = db.export();
const buffer = Buffer.from(data);
fs.writeFileSync(env["db_path"], buffer);
......@@ -51,6 +52,13 @@ function writeUser(user, hash) {
fs.writeFileSync(env["db_path"], buffer);
}
function writeRecord(user, score) {
db.run("INSERT INTO leaderboard (username, score) VALUES (?, ?);", [user, score]);
const data = db.export();
const buffer = Buffer.from(data);
fs.writeFileSync(env["db_path"], buffer);
}
async function signup(user, pass) {
if (user.length < 2 || user.length > 20)
return {"code": 400, "error": "Username should be 2-20 characters"};
......@@ -79,4 +87,4 @@ async function login(user, pass) {
}
}
module.exports = {login, signup, getUserForToken};
module.exports = {login, signup, getUserForToken, writeRecord};
......@@ -37,7 +37,8 @@
BOARD1.updateBoard(args.boardDisplay, args.boardLock, args.boardColors);
document.querySelector("#join-game").style.display = "none";
displayPlayerScores(args.playerScores);
socket.emit("verify solution", args.boardDisplay);
console.log(args.boardDisplay);
socket.emit("verify solution", {board: args.boardDisplay, playerScores: args.playerScores});
});
socket.on("game stop", () => {
......
......@@ -200,6 +200,13 @@ function ensureAuth(req, res, fn) {
fn(user);
}
function writeUser(user, hash) {
db.run("INSERT INTO users (username, pwhash) VALUES (?, ?);", [user, hash]);
const data = db.export();
const buffer = Buffer.from(data);
fs.writeFileSync(env["db_path"], buffer);
}
app.get("/", (req, res) => {
clearBadToken(req, res);
return res.sendFile(__dirname + "/semipublic/index.html");
......@@ -305,6 +312,20 @@ io.on("connection", (socket) => {
}
});
socket.on("verify solution", args => {
const { board, playerScores } = args;
// Check for missing/incorrect answers
for (let y = 0; y < 9; y++) {
for (let x = 0; x < 9; x++) {
if (board[y][x] !== game.boardSolution[y][x]) {
return;
}
}
}
// We solved the sudoku!
login.writeRecord(user, playerScores[user]);
});
socket.on("disconnect", () => {
if (game) {
game.userLeave(socketId, user);
......@@ -312,6 +333,7 @@ io.on("connection", (socket) => {
});
});
httpServer.listen(port, hostname, () => {
console.log(`http://${hostname}:${port}`);
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment