Resten av tankGame

For at listen med versjoner ikke skal bli for lang, er resten av tankGame lagt ut på github. Se tankgame Under er listinger henta derfra, de blir referert med lenke i teoriteksten.

versjon 0.4


'use strict';

function setup() {
    const MAXSKUDD = 20;
    let poeng = 0;

    let divBoard = document.getElementById("board");
    let frmRegistrer = document.getElementById("registrer");

    // sjekk om denne brukeren er registrert
    let playerInfo = localStorage.getItem('player');

    // vi skal legge en tanks ut på skjermen
    // første versjon er bare en div med class="tank"
    let divTank1 = document.createElement("div");
    divTank1.className = "tanks intro1";

    // legg tanken ut på stagen (på board)
    divBoard.appendChild(divTank1);  

    let divTank2 = document.createElement("div");
    divTank2.className = "tanks intro2";

    // legg tanken ut på stagen (på board)
    divBoard.appendChild(divTank2); 


    let btnStart = document.createElement("button");
    btnStart.className = "startbutton";
    btnStart.id = "start";
    btnStart.innerHTML = "Start spillet";

    // legg start-knappen ut på stagen (på board)
    divBoard.appendChild(btnStart); 
    btnStart.addEventListener("click",registrer);

    function registrer(e) {

      let inpNavn = document.getElementById("navn")
      let inpAlder = document.getElementById("alder");
      let inpDato = document.getElementById("dato");

      // først skjuler vi spillebrettet
      divBoard.classList.add("go_away");
      // css klassen go_away animerer spillebrettet
      // ut til siden
      frmRegistrer.classList.add("come_here");
      // animerer registrerings-skjema inn på stagen

      let btnLagre = document.getElementById("lagre");
      btnLagre.addEventListener("click", lagreInfo);

      if (playerInfo !== undefined) {
        let playerObject = JSON.parse(playerInfo);
        inpNavn.value = playerObject.navn;
        inpAlder.value = playerObject.alder;
        inpDato.value = playerObject.dato;
      }

      function lagreInfo(e) {
        let navn = inpNavn.value;
        let alder = inpAlder.valueAsNumber;
        let dato = inpDato.value;

        let playerInfo = JSON.stringify({navn,alder,dato});
        localStorage.setItem("player", playerInfo )
      }

    }
}

versjon 0.5


'use strict';

function setup() {
    const MAXSKUDD = 20;
    let poeng = 0;

    let divBoard = document.getElementById("board");
    let divMelding = document.getElementById("melding");
    let frmRegistrer = document.getElementById("registrer");

    // sjekk om denne brukeren er registrert
    let playerInfo = localStorage.getItem('player');

    // vi skal legge en tanks ut på skjermen
    // første versjon er bare en div med class="tank"
    let divTank1 = document.createElement("div");
    divTank1.className = "tanks intro1";

    // legg tanken ut på stagen (på board)
    divBoard.appendChild(divTank1);  

    let divTank2 = document.createElement("div");
    divTank2.className = "tanks intro2";

    // legg tanken ut på stagen (på board)
    divBoard.appendChild(divTank2); 

    let btnStart = document.createElement("button");
    btnStart.className = "startbutton";
    btnStart.id = "start";

    if (playerInfo !== undefined) {
        let playerObject = JSON.parse(playerInfo);
        divMelding.innerHTML = `Hei ${playerObject.navn}`;
        btnStart.innerHTML = "Start spillet";
    } else {
        btnStart.innerHTML = "Registrer deg";  
    }





    // legg start-knappen ut på stagen (på board)
    divBoard.appendChild(btnStart); 
    btnStart.addEventListener("click",registrer);

    function registrer(e) {

      let inpNavn = document.getElementById("navn")
      let inpAlder = document.getElementById("alder");
      let inpDato = document.getElementById("dato");

      // først skjuler vi spillebrettet
      divBoard.classList.add("go_away");
      // css klassen go_away animerer spillebrettet
      // ut til siden
      frmRegistrer.classList.add("come_here");
      // animerer registrerings-skjema inn på stagen

      let btnLagre = document.getElementById("lagre");
      btnLagre.addEventListener("click", lagreInfo);

      if (playerInfo !== undefined) {
        let playerObject = JSON.parse(playerInfo);
        inpNavn.value = playerObject.navn;
        inpAlder.value = playerObject.alder;
        inpDato.value = playerObject.dato;
      }

      function lagreInfo(e) {
        let navn = inpNavn.value;
        let alder = inpAlder.valueAsNumber;
        let dato = inpDato.value;

        let playerInfo = JSON.stringify({navn,alder,dato});
        localStorage.setItem("player", playerInfo )
      }

    }
}

versjon 0.6


'use strict';

// vi trenger socket som global variabel
let socket = io.connect('/');
let world = {};  // tom verden


function setup() {
    const MAXSKUDD = 20;
    let poeng = 0;
    let gameState = 'waiting';


    let divBoard = document.getElementById("board");
    let divMelding = document.getElementById("melding");
    let frmRegistrer = document.getElementById("registrer");

    let antallSpillere = 0;

    // knapp for start av spillet
    let btnStart = document.createElement("button");
    btnStart.className = "startbutton hidden";
    btnStart.innerHTML = "Start Spillet";
    btnStart.id = "start";



    // sjekk om denne brukeren er registrert
    let playerInfo = localStorage.getItem('player');

    // vi skal legge en tanks ut på skjermen
    // første versjon er bare en div med class="tank"
    let tank1 = new Tank("t1","intro1");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank1.div);  

    let tank2 = new Tank("t2", "intro2");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank2.div); 

    // lag en ny spiller
    let player = new Player("noname",12,"red");

    // knapp for registrering av spiller
    let btnReg = document.createElement("button");
    btnReg.className = "startbutton";
    btnReg.id = "reg";

    // har vi data om spiller fra før ?
    if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        divMelding.innerHTML = `Hei ${playerObject.navn}
        Det er ${antallSpillere} spillere på nå.`;
        btnReg.innerHTML = "Rediger info";
        // btnStart.classList.remove("hidden");  
        player.navn = playerObject.navn;
        player.alder = playerObject.alder;  
        player.farge = playerObject.farge || "#0000ff";
        socket.emit('ready',  player);
    } else {
        btnReg.innerHTML = "Registrer deg";  
    }   

    btnStart.addEventListener("click",readyToPlay);
    btnReg.addEventListener("click",registrer);
    // legg knapper ut på stagen (på board)
    divBoard.appendChild(btnReg); 
    divBoard.appendChild(btnStart);      


    // bruker registrerer data
    function registrer(e) { 
      let inpNavn = document.getElementById("navn")
      let inpAlder = document.getElementById("alder");
      let inpFarge = document.getElementById("farge");

      // først skjuler vi spillebrettet
      divBoard.classList.remove("come_here");
      void divBoard.offsetWidth;
      divBoard.classList.add("go_away");
      // css klassen go_away animerer spillebrettet vekk
      frmRegistrer.classList.remove("go_away");
      void frmRegistrer.offsetWidth;
      frmRegistrer.classList.add("come_here");
      // animerer registrerings-skjema inn på stagen

      let btnLagre = document.getElementById("lagre");
      btnLagre.addEventListener("click", lagreInfo);

      // vis lagra data i skjema dersom vi har noe
      if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        inpNavn.value = playerObject.navn;
        inpAlder.value = playerObject.alder || 12;
        inpFarge.value = playerObject.farge || "#0000ff";
      }

      // lagre data fra skjema i localStorage
      function lagreInfo(e) {
        let navn = capAll(inpNavn.value);
        let alder = inpAlder.valueAsNumber;
        let farge = inpFarge.value;

        playerInfo = JSON.stringify({navn,alder,farge});
        player.navn = navn;
        player.alder = alder; 
        player.farge = farge;

        localStorage.setItem("player", playerInfo );
        divBoard.classList.remove("go_away");
        void divBoard.offsetWidth;  // trigger reflow
        divBoard.classList.add("come_here");
        frmRegistrer.classList.remove("come_here");
        void frmRegistrer.offsetWidth;
        frmRegistrer.classList.add("go_away");
        socket.emit('ready',  player);
      }
    }

    // klargjør spillet
    function readyToPlay() {
      // fjern animeringen
      tank1.div.classList.remove("intro1");
      tank2.div.classList.remove("intro2");

      // set farge på spillerens tank
      tank1.div.style.backgroundColor = player.farge;

      tank1.div.classList.add("active");
      tank2.div.classList.add("active");
      btnReg.className = "hidden";
      btnStart.className = "hidden";
      divMelding.className = "hidden";
      gameState = 'ready';
      socket.emit('start', player);
    }


    socket.on('stats', function(data) {
        antallSpillere = data.antallSpillere;
        document.getElementById('antall').innerHTML = "" + antallSpillere;
        if (gameState === 'waiting' && antallSpillere > 1) {
          btnStart.classList.remove("hidden");
        }
    });

    socket.on('startgame', function(data) {
      world = data;      
      if (gameState === 'waiting') {
        readyToPlay();
      } else if (gameState === 'ready') {
        let myself = player.navn;
        let tankcount = 2;
        let tankList = [tank1,tank2];
        gameState = 'playing';
        for (let otherPlayer of Object.keys(world)) {
          if (otherPlayer !== myself) {
            if (tankcount > 2) {
              // make a new tank
               let t34 = new Tank("t"+tankcount, "active");
               // legg tanken ut på stagen (på board)
               t34.div.style.backgroundColor = world[otherPlayer].farge;
               divBoard.appendChild(t34.div); 
               tankList.push(t34);
            } else {
               tank2.div.style.backgroundColor = world[otherPlayer].farge;
            }
            tankcount++;
          }
        }
        playTheGame(divBoard, tankList, player);
      }
    }); 
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized
 */
function cap(s) {
  return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized Names
 */
function capAll(s) {
  return ((s.split(' ')).map(cap)).join(' ');
}

versjon 0.7


'use strict';

// vi trenger socket som global variabel
let socket = io.connect('/');
let world = {};  // tom verden


function setup() {
    const MAXSKUDD = 20;
    let poeng = 0;
    let gameState = 'waiting';


    let divBoard = document.getElementById("board");
    let divMelding = document.getElementById("melding");
    let frmRegistrer = document.getElementById("registrer");

    let antallSpillere = 0;

    // knapp for start av spillet
    let btnStart = document.createElement("button");
    btnStart.className = "startbutton hidden";
    btnStart.innerHTML = "Start Spillet";
    btnStart.id = "start";



    // sjekk om denne brukeren er registrert
    let playerInfo = localStorage.getItem('player');

    // vi skal legge en tanks ut på skjermen
    // første versjon er bare en div med class="tank"
    let tank1 = new Tank("t1","intro1");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank1.div);  

    let tank2 = new Tank("t2", "intro2");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank2.div); 

    // lag en ny spiller
    let player = new Player("noname",12,"red");

    // knapp for registrering av spiller
    let btnReg = document.createElement("button");
    btnReg.className = "startbutton";
    btnReg.id = "reg";

    // har vi data om spiller fra før ?
    if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        divMelding.innerHTML = `Hei ${playerObject.navn}
        Det er ${antallSpillere} spillere på nå.`;
        btnReg.innerHTML = "Rediger info";
        // btnStart.classList.remove("hidden");  
        player.navn = playerObject.navn;
        player.alder = playerObject.alder;  
        player.farge = playerObject.farge || "#0000ff";
        socket.emit('ready',  player);
    } else {
        btnReg.innerHTML = "Registrer deg";  
    }   

    btnStart.addEventListener("click",readyToPlay);
    btnReg.addEventListener("click",registrer);
    // legg knapper ut på stagen (på board)
    divBoard.appendChild(btnReg); 
    divBoard.appendChild(btnStart);      


    // bruker registrerer data
    function registrer(e) { 
      let inpNavn = document.getElementById("navn")
      let inpAlder = document.getElementById("alder");
      let inpFarge = document.getElementById("farge");

      // først skjuler vi spillebrettet
      divBoard.classList.remove("come_here");
      void divBoard.offsetWidth;
      divBoard.classList.add("go_away");
      // css klassen go_away animerer spillebrettet vekk
      frmRegistrer.classList.remove("go_away");
      void frmRegistrer.offsetWidth;
      frmRegistrer.classList.add("come_here");
      // animerer registrerings-skjema inn på stagen

      let btnLagre = document.getElementById("lagre");
      btnLagre.addEventListener("click", lagreInfo);

      // vis lagra data i skjema dersom vi har noe
      if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        inpNavn.value = playerObject.navn;
        inpAlder.value = playerObject.alder || 12;
        inpFarge.value = playerObject.farge || "#0000ff";
      }

      // lagre data fra skjema i localStorage
      function lagreInfo(e) {
        let navn = capAll(inpNavn.value);
        let alder = inpAlder.valueAsNumber;
        let farge = inpFarge.value;

        playerInfo = JSON.stringify({navn,alder,farge});
        player.navn = navn;
        player.alder = alder; 
        player.farge = farge;

        localStorage.setItem("player", playerInfo );
        divBoard.classList.remove("go_away");
        void divBoard.offsetWidth;  // trigger reflow
        divBoard.classList.add("come_here");
        frmRegistrer.classList.remove("come_here");
        void frmRegistrer.offsetWidth;
        frmRegistrer.classList.add("go_away");
        socket.emit('ready',  player);
      }
    }

    // klargjør spillet
    function readyToPlay() {
      // fjern animeringen
      tank1.div.classList.remove("intro1");
      tank2.div.classList.remove("intro2");

      // set farge på spillerens tank
      tank1.div.style.backgroundColor = player.farge;

      tank1.div.classList.add("active");
      tank2.div.classList.add("active");
      btnReg.className = "hidden";
      btnStart.className = "hidden";
      divMelding.className = "hidden";
      gameState = 'ready';
      socket.emit('start', player);
    }


    socket.on('stats', function(data) {
        antallSpillere = data.antallSpillere;
        document.getElementById('antall').innerHTML = "" + antallSpillere;
        if (gameState === 'waiting' && antallSpillere > 1) {
          btnStart.classList.remove("hidden");
        }
    });

    socket.on('startgame', function(data) {
      world = data;      
      if (gameState === 'waiting') {
        readyToPlay();
      } else if (gameState === 'ready') {
        let myself = player.navn;
        let tankcount = 2;
        let tankList = [tank1,tank2];
        tank1.owner = myself;
        gameState = 'playing';
        for (let otherPlayer of Object.keys(world)) {
          if (otherPlayer !== myself) {
            if (tankcount > 2) {
              // make a new tank
               let t34 = new Tank("t"+tankcount, "active");
               // legg tanken ut på stagen (på board)
               t34.div.style.backgroundColor = world[otherPlayer].farge;
               divBoard.appendChild(t34.div); 
               t34.owner = otherPlayer;
               tankList.push(t34);
            } else {
               tank2.owner = otherPlayer;
               tank2.div.style.backgroundColor = world[otherPlayer].farge;
            }
            tankcount++;
          }
        }
        playTheGame(divBoard, tankList, player);
      }
    }); 
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized
 */
function cap(s) {
  return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized Names
 */
function capAll(s) {
  return ((s.split(' ')).map(cap)).join(' ');
}

versjon 0.8


'use strict';

// vi trenger socket som global variabel
let socket = io.connect('/');    // her kan du skrive inn server-adresse
// io.connect('192.168.1.100');
let world = {};  // tom verden

function setup() {
    const MAXSKUDD = 20;
    let poeng = 0;
    let gameState = 'waiting';


    let divBoard = document.getElementById("board");
    let divMelding = document.getElementById("melding");
    let frmRegistrer = document.getElementById("registrer");

    let antallSpillere = 0;

    // knapp for start av spillet
    let btnStart = document.createElement("button");
    btnStart.className = "startbutton hidden";
    btnStart.innerHTML = "Start Spillet";
    btnStart.id = "start";



    // sjekk om denne brukeren er registrert
    let playerInfo = localStorage.getItem('player');

    // vi skal legge en tanks ut på skjermen
    // første versjon er bare en div med class="tank"
    let tank1 = new Tank("t1","intro1");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank1.div);  

    let tank2 = new Tank("t2", "intro2");
    // legg tanken ut på stagen (på board)
    divBoard.appendChild(tank2.div); 

    // lag en ny spiller
    let player = new Player("noname",12,"red");

    // knapp for registrering av spiller
    let btnReg = document.createElement("button");
    btnReg.className = "startbutton";
    btnReg.id = "reg";

    // har vi data om spiller fra før ?
    if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        divMelding.innerHTML = `Hei ${playerObject.navn}
        Det er ${antallSpillere} spillere på nå.`;
        btnReg.innerHTML = "Rediger info";
        // btnStart.classList.remove("hidden");  
        player.navn = playerObject.navn;
        player.alder = playerObject.alder;  
        player.farge = playerObject.farge || "#0000ff";
        socket.emit('ready',  player);
    } else {
        btnReg.innerHTML = "Registrer deg";  
    }   

    btnStart.addEventListener("click",readyToPlay);
    btnReg.addEventListener("click",registrer);
    // legg knapper ut på stagen (på board)
    divBoard.appendChild(btnReg); 
    divBoard.appendChild(btnStart);      


    // bruker registrerer data
    function registrer(e) { 
      let inpNavn = document.getElementById("navn")
      let inpAlder = document.getElementById("alder");
      let inpFarge = document.getElementById("farge");

      // først skjuler vi spillebrettet
      divBoard.classList.remove("come_here");
      void divBoard.offsetWidth;
      divBoard.classList.add("go_away");
      // css klassen go_away animerer spillebrettet vekk
      frmRegistrer.classList.remove("go_away");
      void frmRegistrer.offsetWidth;
      frmRegistrer.classList.add("come_here");
      // animerer registrerings-skjema inn på stagen

      let btnLagre = document.getElementById("lagre");
      btnLagre.addEventListener("click", lagreInfo);

      // vis lagra data i skjema dersom vi har noe
      if (playerInfo !== null) {
        let playerObject = JSON.parse(playerInfo);
        inpNavn.value = playerObject.navn;
        inpAlder.value = playerObject.alder || 12;
        inpFarge.value = playerObject.farge || "#0000ff";
      }

      // lagre data fra skjema i localStorage
      function lagreInfo(e) {
        let navn = capAll(inpNavn.value);
        let alder = inpAlder.valueAsNumber;
        let farge = inpFarge.value;

        playerInfo = JSON.stringify({navn,alder,farge});
        player.navn = navn;
        player.alder = alder; 
        player.farge = farge;

        localStorage.setItem("player", playerInfo );
        divBoard.classList.remove("go_away");
        void divBoard.offsetWidth;  // trigger reflow
        divBoard.classList.add("come_here");
        frmRegistrer.classList.remove("come_here");
        void frmRegistrer.offsetWidth;
        frmRegistrer.classList.add("go_away");
        socket.emit('ready',  player);
      }
    }

    // klargjør spillet
    function readyToPlay() {
      // fjern animeringen
      tank1.div.classList.remove("intro1");
      tank2.div.classList.remove("intro2");

      // set farge på spillerens tank
      tank1.div.style.backgroundColor = player.farge;

      tank1.div.classList.add("active");
      tank2.div.classList.add("active");
      btnReg.className = "hidden";
      btnStart.className = "hidden";
      divMelding.className = "hidden";
      gameState = 'ready';
      socket.emit('start', player);
    }


    socket.on('stats', function(data) {
        antallSpillere = data.antallSpillere;
        document.getElementById('antall').innerHTML = "" + antallSpillere;
        if (gameState === 'waiting' && antallSpillere > 1) {
          btnStart.classList.remove("hidden");
        }
    });

    socket.on('startgame', function(data) {
      world = data;      
      if (gameState === 'waiting') {
        readyToPlay();
      } else if (gameState === 'ready') {
        let myself = player.navn;
        let tankcount = 2;
        let tankList = [tank1,tank2];
        tank1.owner = myself;
        gameState = 'playing';
        for (let otherPlayer of Object.keys(world)) {
          if (otherPlayer !== myself) {
            if (tankcount > 2) {
              // make a new tank
               let t34 = new Tank("t"+tankcount, "active");
               // legg tanken ut på stagen (på board)
               t34.div.style.backgroundColor = world[otherPlayer].farge;
               divBoard.appendChild(t34.div); 
               t34.owner = otherPlayer;
               tankList.push(t34);
            } else {
               tank2.owner = otherPlayer;
               tank2.div.style.backgroundColor = world[otherPlayer].farge;
            }
            tankcount++;
          }
        }
        playTheGame(divBoard, tankList, player);
      }
    }); 
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized
 */
function cap(s) {
  return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();
}

/**
 *  @param {string} s
 *  @returns {string} Capitalized Names
 */
function capAll(s) {
  return ((s.split(' ')).map(cap)).join(' ');
}


results matching ""

    No results matching ""