bit o game logic and spanish and french dictionaties (unprocessed)
This commit is contained in:
1
TODO
1
TODO
@@ -31,5 +31,6 @@
|
|||||||
→ Optimise! nary tree
|
→ Optimise! nary tree
|
||||||
|
|
||||||
[ ] Game logic
|
[ ] Game logic
|
||||||
|
→ Game creation
|
||||||
✘ Singleplayer game logic - OUT OF SCOPE @cancelled(21-04-11 01:04)
|
✘ Singleplayer game logic - OUT OF SCOPE @cancelled(21-04-11 01:04)
|
||||||
✘ AI CPU player @cancelled(21-04-11 01:07)
|
✘ AI CPU player @cancelled(21-04-11 01:07)
|
||||||
|
|||||||
@@ -293,13 +293,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<piece class="unselectable unplayed-piece">Ç<score>8</score></piece>
|
<div id="piece-drawer">
|
||||||
<piece class="unselectable unplayed-piece">B<score>4</score></piece>
|
<piece class="unselectable unplayed-piece">Ç<score>8</score></piece>
|
||||||
<piece class="unselectable unplayed-piece">C<score>3</score></piece>
|
<piece class="unselectable unplayed-piece">_<score>_</score></piece>
|
||||||
<piece class="unselectable unplayed-piece">D<score>2</score></piece>
|
<piece class="unselectable unplayed-piece">C<score>3</score></piece>
|
||||||
<piece class="unselectable unplayed-piece">E<score>1</score></piece>
|
<piece class="unselectable unplayed-piece">D<score>2</score></piece>
|
||||||
<piece class="unselectable unplayed-piece">F<score>4</score></piece>
|
<piece class="unselectable unplayed-piece">E<score>1</score></piece>
|
||||||
<piece class="unselectable unplayed-piece">G<score>2</score></piece>
|
<piece class="unselectable unplayed-piece">F<score>4</score></piece>
|
||||||
|
<piece class="unselectable unplayed-piece">G<score>2</score></piece>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="game-info-compact" style="display: none;">
|
<div id="game-info-compact" style="display: none;">
|
||||||
<div id="player-scores-compact">
|
<div id="player-scores-compact">
|
||||||
@@ -340,27 +342,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="moves">
|
<div id="moves">
|
||||||
<div class="move">Jerry played OXYPHENBUTAZONE for 40 points</div>
|
<div class="move">Jerry played OXYPHENBUTAZONE for 40 points</div>
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">Jerry played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
<div class="move">CPU played CUM for 40 points</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
const urlParser = new URLSearchParams(window.location.search);
|
const urlParser = new URLSearchParams(window.location.search);
|
||||||
|
|
||||||
const ConnectionState = document.querySelector('#connection-state');
|
const ConnectionState = document.querySelector('#connection-state');
|
||||||
|
const PieceDrawer = document.querySelector('#piece-drawer');
|
||||||
|
|
||||||
function initMultiplayer()
|
function initMultiplayer()
|
||||||
{
|
{
|
||||||
@@ -83,7 +83,7 @@ function initMultiplayer()
|
|||||||
|
|
||||||
function onConnect()
|
function onConnect()
|
||||||
{
|
{
|
||||||
|
PieceDrawer.innerHTML = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDisconnect()
|
function onDisconnect()
|
||||||
|
|||||||
636598
data/es-dictionary.dict
Normal file
636598
data/es-dictionary.dict
Normal file
File diff suppressed because it is too large
Load Diff
336528
data/fr-dictionary.dict
Normal file
336528
data/fr-dictionary.dict
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,9 @@ const Router = require('./src/router.js');
|
|||||||
const Socket = require('./src/socketserver.js');
|
const Socket = require('./src/socketserver.js');
|
||||||
const Locale = require('./src/locale.js');
|
const Locale = require('./src/locale.js');
|
||||||
const Dict = require('./src/dictionary.js');
|
const Dict = require('./src/dictionary.js');
|
||||||
|
const Dist = require('./src/letter-distributions.js');
|
||||||
|
|
||||||
|
const Helpers = require('./src/helpers.js');
|
||||||
|
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
|
||||||
@@ -31,9 +34,7 @@ function benchmarkDictionary()
|
|||||||
|
|
||||||
// Time 10 thousand reads
|
// Time 10 thousand reads
|
||||||
for (let i = 0; i < 10000; i++)
|
for (let i = 0; i < 10000; i++)
|
||||||
{
|
|
||||||
Dict.FindWord('en', 'ZZZS');
|
Dict.FindWord('en', 'ZZZS');
|
||||||
}
|
|
||||||
|
|
||||||
hrTime = process.hrtime();
|
hrTime = process.hrtime();
|
||||||
let endTime = hrTime[0] * 1000000 + hrTime[1] / 1000;
|
let endTime = hrTime[0] * 1000000 + hrTime[1] / 1000;
|
||||||
@@ -49,9 +50,7 @@ function benchmarkDictionary()
|
|||||||
|
|
||||||
// Time 10 thousand reads
|
// Time 10 thousand reads
|
||||||
for (let i = 0; i < 10000; i++)
|
for (let i = 0; i < 10000; i++)
|
||||||
{
|
|
||||||
Dict.FindWord('en', 'ZZZS');
|
Dict.FindWord('en', 'ZZZS');
|
||||||
}
|
|
||||||
|
|
||||||
hrTime = process.hrtime();
|
hrTime = process.hrtime();
|
||||||
endTime = hrTime[0] * 1000000 + hrTime[1] / 1000;
|
endTime = hrTime[0] * 1000000 + hrTime[1] / 1000;
|
||||||
@@ -60,6 +59,4 @@ function benchmarkDictionary()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
main();
|
main();
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
const Logger = require('./logger.js');
|
const Logger = require('./logger.js');
|
||||||
const Registrar = require('./game-registrar.js');
|
const Registrar = require('./game-registrar.js');
|
||||||
const Lobbies = require('./lobbies.js');
|
const Lobbies = require('./lobbies.js');
|
||||||
|
const Dist = require('./letter-distributions.js');
|
||||||
|
const Helpers = require('./helpers.js');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
GAME OBJECT
|
GAME OBJECT
|
||||||
@@ -8,11 +10,9 @@ GAME OBJECT
|
|||||||
// reference UID
|
// reference UID
|
||||||
lobbyuid: uid,
|
lobbyuid: uid,
|
||||||
locale: en,
|
locale: en,
|
||||||
players: [{uid, activetiles, score}],
|
players: [{uid, name, activetiles, score}],
|
||||||
// index of players
|
// index of players
|
||||||
turn: int,
|
turn: int,
|
||||||
// TODO: vvv
|
|
||||||
turnstate:
|
|
||||||
tilebag: []
|
tilebag: []
|
||||||
}
|
}
|
||||||
NOTES
|
NOTES
|
||||||
@@ -27,16 +27,38 @@ function StartGame(lobby)
|
|||||||
// game uses the owners language
|
// game uses the owners language
|
||||||
const gameowner = Registrar.GetUserByUID(lobby.owneruid);
|
const gameowner = Registrar.GetUserByUID(lobby.owneruid);
|
||||||
|
|
||||||
|
let tilebag = Dist.GenerateStartStateDistribution(gameowner.locale);
|
||||||
|
|
||||||
|
let players = lobby.players.map(i => { return {
|
||||||
|
uid: i.uid,
|
||||||
|
name: i.name,
|
||||||
|
activetiles: [],
|
||||||
|
score: 0
|
||||||
|
}});
|
||||||
|
|
||||||
|
// shuffle for turn order
|
||||||
|
players = Helpers.ShuffleArray(players);
|
||||||
|
|
||||||
|
console.log(players)
|
||||||
|
|
||||||
|
// populate users tile drawer
|
||||||
|
|
||||||
ActiveGames[lobby.uid] = {
|
ActiveGames[lobby.uid] = {
|
||||||
lobbyuid: lobby.uid,
|
lobbyuid: lobby.uid,
|
||||||
locale: gameowner.locale,
|
locale: gameowner.locale,
|
||||||
|
players: players,
|
||||||
turn: 0,
|
turn: 0,
|
||||||
|
tilebag: tilebag
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return ActiveGames[lobby.uid];
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns tuple ([newtileset], [newusertiles])
|
||||||
|
function ExchangeTiles(tileset, tilesToExchange)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
24
server/src/helpers.js
Normal file
24
server/src/helpers.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
|
||||||
|
function ShuffleArray(array)
|
||||||
|
{
|
||||||
|
let length = array.length;
|
||||||
|
let index;
|
||||||
|
let temp;
|
||||||
|
|
||||||
|
while (length)
|
||||||
|
{
|
||||||
|
index = Math.floor(Math.random() * length);
|
||||||
|
length--;
|
||||||
|
|
||||||
|
temp = array[length];
|
||||||
|
array[length] = array[index];
|
||||||
|
array[index] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
ShuffleArray: ShuffleArray
|
||||||
|
};
|
||||||
@@ -239,6 +239,28 @@ Distributions['cs'] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function GenerateStartStateDistribution(locale)
|
||||||
|
{
|
||||||
|
const loc = Distributions[locale];
|
||||||
|
|
||||||
|
let ret = [];
|
||||||
|
|
||||||
|
// loops over every point object and adds j amount of i letter
|
||||||
|
// to ret for the game board
|
||||||
|
for (let p of loc.dist)
|
||||||
|
for (let i = 0; i < p.letters.length; i++)
|
||||||
|
for (let j = 0; j < p.amounts[i]; j++)
|
||||||
|
ret.push(p.letters[i]);
|
||||||
|
|
||||||
|
for (let i = 0; i < loc.blanktiles; i++)
|
||||||
|
ret.push('_');
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
Distributions: Distributions
|
Distributions: Distributions,
|
||||||
|
|
||||||
|
GenerateStartStateDistribution: GenerateStartStateDistribution
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -70,8 +70,6 @@ async function Router(socket)
|
|||||||
socket.on('lobby-game-begin', args => LobbyGameBegin(socket, args));
|
socket.on('lobby-game-begin', args => LobbyGameBegin(socket, args));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
socket.on('disconnect', args => HandleDisconnect(socket, ...args));
|
socket.on('disconnect', args => HandleDisconnect(socket, ...args));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user