//my personal variables let w = 10; let h = 10; let lgrid = new Array(w); let rgrid = new Array(w); let waux = 10; let haux = 10; let x = "✔"; let o = "⬤"; let abilities_list = [ {"name": "air_strike", "description": "A strike that deals damage to all enemy's ships except submarines.", "ship_name": "aircraft_carrier", "round_period": 3}, {"name": "artilliery", "description": "A artilliery that allows you to shoot twice.", "round_period": 1, "ship_name": "bomber_ship"}, {"name": "sonar", "description": "A sonar scan that reveals the location of enemy's ships.", "round_period": 5, "ship_name": "sonar_ship", "cells_number": 5}, {"name": "torpedo", "description": "A torpedo that destroys a ship on hit.", "round_period": 10, "ship_name": "submarine"}, {"name": "spy", "description": "A spy that reveals the location of enemy's ships.", "round_period": 20, "ship_name": null} ] let ships = [ {"name": "aircraft_carrier", "size": 5, "lives": 1}, {"name": "bomber_ship", "size": 4, "lives": 1}, {"name": "sonar_ship", "size": 3, "lives": 1}, {"name": "submarine", "size": 2, "lives": 1}, {"name": "small_ship", "size": 1, "lives": 2} ] //for all ships add the ship name to description function addshipname() { for (let i = 0; i < abilities.length; i++) { if(abilities[i].ship_name != null){ abilities[i].description += " It is fired from a " + abilities[i].ship_name.replace("_", " ") + "."; } } } let randomize = true; let lauxgrid = new Array(w); let rauxgrid = new Array(w); //Write arrays to html function writegrid() { for (let i = 0; i < w; i++) { for (let j = 0; j < h; j++) { $('#lc' + i + '-' + j).html(lgrid[i][j]); $('#rc' + i + '-' + j).html(rgrid[i][j]); } } } function writeauxgrid(){ for (let i = 0; i < waux; i++) { for (let j = 0; j < haux; j++) { $('#lac' + i + '-' + j).html(lauxgrid[i][j]); $('#rac' + i + '-' + j).html(rauxgrid[i][j]); } } } function inittable(){ for (let i = 0; i < w; i++) { //create rows $('#local').append(''); $('#remote').append(''); for (let j = 0; j < h; j++) { //create cells $('#lt' + i).append(''); $('#rt' + i).append(''); //add divs to cells $('#lcx' + i + '-' + j).append('
'); $('#rcx' + i + '-' + j).append('
'); //add arrays to grids lgrid[i] = new Array(h); rgrid[i] = new Array(h); } } } function initauxtable(){ for (let i = 0; i < waux; i++) { //create rows $('#localaux').append(''); $('#remoteaux').append(''); for (let j = 0; j < haux; j++) { //create cells $('#lax' + i).append(''); $('#rax' + i).append(''); //add divs to cells $('#lacx' + i + '-' + j).append('
'); $('#racx' + i + '-' + j).append('
'); //add arrays to grids lauxgrid[i] = new Array(haux); rauxgrid[i] = new Array(haux); } } } function randomizetable(){ for (let i = 0; i < w; i++) { for (let j = 0; j < h; j++) { let r = Math.floor(Math.random() * 2); if (r == 0) { rgrid[i][j] = o; } else { rgrid[i][j] = x; } r = Math.floor(Math.random() * 2); if (r == 0) { lgrid[i][j] = o; } else { lgrid[i][j] = x; } } } } function randomizeaux(){ for (let i = 0; i < waux; i++) { for (let j = 0; j < haux; j++) { let r = Math.floor(Math.random() * 2); if (r == 0) { rauxgrid[i][j] = o; } else { rauxgrid[i][j] = x; } r = Math.floor(Math.random() * 2); if (r == 0) { lauxgrid[i][j] = o; } else { lauxgrid[i][j] = x; } } } } function randomizeall(){ randomizetable(); writegrid(); randomizeaux(); writeauxgrid(); } function init(){ inittable(); initauxtable(); } function websocket_init(){ websocket = new WebSocket("ws://" + window.location.host + "/ws"); websocket.onopen = function (evt) { console.log("Connected to websocket"); }; websocket.onmessage = function (evt) { let data = JSON.parse(evt.data); if (data.type == "grid") { lgrid = data.lgrid; rgrid = data.rgrid; lauxgrid = data.lauxgrid; rauxgrid = data.rauxgrid; writegrid(); writeauxgrid(); } } websocket.onclose = function (evt) { console.log("Disconnected from websocket"); //reconnect websocket_init(); } websocket.onerror = function (evt) { console.log("Error in websocket"); websocket_init(); } websocket.send(JSON.stringify({ type: "init" })); } function main() { init(); if (randomize) { setInterval(randomizeall, 500); } } $(function () { main(); });