123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- require_once 'includes/dbase.inc';
- include 'includes/functions.inc';
- include 'includes/ships.inc';
- include "includes/head.inc";
-
- // TODO: Vraagje voor ruben -> Werken op 2 branches tegelijk? Hoe best practice?
-
-
-
- // Array om gwn de difficulty benaming te printen
- $difficultyStr = ["Beginner", "Easy", "Intermediate", "Hard"];
- $_SESSION['diffLabel'] = $difficultyStr;
- // Waarden voor in de database
- $_SESSION['statusLabel'] = ["You lost :(", "You won :)"];
- // Dit gaat op basis van onze difficulty de tabelrijen aanpassen
- $diffTableRows = [2, 3, 4, 5];
-
- // gamestates setten
- if (!isset($_SESSION['gameState'])) {
- $_SESSION['gameState'] = false;
- }
- if (!isset($_SESSION['lost'])) {
- $_SESSION['lost'] = false;
- }
- if (!isset($_SESSION['gameDone'])) {
- $_SESSION['gameDone'] = false;
- }
- if (!isset($_SESSION['tryAgain'])) {
- $_SESSION['tryAgain'] = false;
- }
- if (!isset($_SESSION['won'])) {
- $_SESSION['won'] = false;
- }
-
-
- if (isset($_POST['startGame'])) {
- // Session timeout setten
- checkSession();
-
- // Deze wordt indien iets inserted wordt in de db ge-unset. Dan doe ik de check, if isset... Dit zorgt er dan voor dat bij refresh er geen foutieve zaken geinsert wordt
- $_SESSION['checkRefresh'] = true;
-
- // Voor de zekerheid onze gamewaarden usnetten
- unset($_SESSION['curShips']);
- unset($_SESSION['shots']);
-
- // Dit is belangerijk om onze form weer te geven voor onze shots in te voeren
- $_SESSION['gameState'] = true;
-
- // Als difficulty is geset
- if (isset($_POST['difficulty'])) {
- // Session timeout setten
- checkSession();
-
- $_SESSION['difficulty'] = intval($_POST['difficulty']);
- } else {
- // Difficulty niet geset? Dan gebeurd er niets
- $_SESSION['gameState'] = false;
- }
-
- // Nog een extra check voor de zekerheid, deze keer op de session
- if (!isset($_SESSION['difficulty'])) {
- $_SESSION['gameState'] = false;
- }
-
- // Als current ships niet bestaat wordt de schepen gegenereerd
- if (!isset($_SESSION['curShips'])) {
- generateShips($_SESSION['difficulty'], $diffTableRows[$_SESSION['difficulty'] - 1]);
- }
- }
-
-
- // Wordt de shoot btn ingedrukt?
- if (isset($_POST['shoot']) && !empty($_POST)) {
- // Session timeout setten
- checkSession();
-
- // Ammo verminderen indien groter dan 0, in principe is deze if niet nodig, want als ammo 0 is komen we zelfs niet in deze iteratie
- if ($_SESSION['ammo'] > 0) {
- $_SESSION['ammo']--;
- }
-
- // Onze huidige shoten opslaan in een array, zodat we deze later kunnen printen in onze tabel
- $_SESSION['shots'][] = $_POST['usrShot'];
-
- // Check of we de duikoot raken
- hitOrMis($_POST['usrShot'], $_SESSION['curShips']);
-
- // controle of we alle schepen vernietigd hebben
- checkIfAllDestroyed($_SESSION['curShips']);
- }
-
-
- // Deze session checkRefresh is om te vermijden dat er resubmission gebeurd on page refresh. Deze wordt unset als er score geinsert wordt in de db
- if (isset($_SESSION['checkRefresh'])) {
- if ($_SESSION['ammo'] === 0) {
- $_SESSION['lost'] = true;
- }
- }
-
- // Is lost true en niet alle schepen destroyed? Dan is uw ammo leeg
- if ($_SESSION['lost'] && !checkIfAllDestroyed($_SESSION['curShips'])) {
- unset($_SESSION['gameEndMessage']);
- unset($_SESSION['lost']);
- $_SESSION['won'] = 0;
- $_SESSION['tryAgain'] = true;
- $_SESSION['gameState'] = true;
- $_SESSION['gameDone'] = false;
- writeScore($_SESSION['usr_id'], $_SESSION['difficulty'], $_SESSION['won'], $_SESSION['ammo']);
-
- // Deze unset ik, zodat bij een pagerefresh niet weer opniew de variabele $_SESSION['lost'] op true wordt gezet. Vervolgens is het met isset checken of ammo bestaat en dan $_SESSION['lost'] op true zetten
- unset($_SESSION['checkRefresh']);
- $_SESSION['gameEndMessage'] = "You ran out of ammo";
- }
-
- // Deze session checkRefresh is om te vermijden dat er resubmission gebeurd on page refresh. Deze wordt unset als er score geinsert wordt in de db
- if (isset($_SESSION['checkRefresh'])) {
- if ($_SESSION['gameDone'] && $_SESSION['ammo'] > 0) {
- writeScore($_SESSION['usr_id'], $_SESSION['difficulty'], $_SESSION['won'], $_SESSION['ammo']);
- unset($_SESSION['checkRefresh']);
- }
- }
-
- // Is het spel gedaan en druk je op try again?
- if (isset($_POST['tryAgain'])) {
- checkSession();
- if (isset($_POST['difficulty'])) {
- $_SESSION['difficulty'] = $_POST['difficulty'];
- }
- unset($_SESSION['gameMessage']);
- // opnieuw schepen genereren op basis van uw difficulty
- generateShips($_SESSION['difficulty'], $diffTableRows[$_SESSION['difficulty'] - 1]);
- $_SESSION['tryAgain'] = false;
- $_SESSION['gameDone'] = false;
- $_SESSION['gameState'] = true;
- $_SESSION['lost'] = false;
- $_SESSION['checkRefresh'] = true;
- }
-
-
- ?>
-
- <!-- Is de gameState true dan krijgen we onze difficulty selection te zien -->
- <?php if ($_SESSION['gameState']) { ?>
-
- <div class="main__content info">
- <div class="info-container">
- <span class="info-container__wrap">
- <span class="info-container__title">Difficulty: </span>
- <span class="info-container__item"><?= $difficultyStr[$_SESSION['difficulty'] - 1]; ?></span>
- </span>
- <span class="info-container__wrap">
- <!-- ALs ammo minder dan 3 is, class alert toevoegen -->
- <span class="info-container__title">Ammo: </span>
- <span class="info-container__item <?php if ($_SESSION['ammo'] < 4) {
- echo 'alert';
- } ?>"><?= $_SESSION['ammo']; ?></span>
- </span>
- </div>
- </div>
- <?php } ?>
- <fieldset class="main__content content">
-
- <?php
- // Functie die de input shot form genereert
- printGameForm($difficultyStr);
- ?>
- </fieldset>
-
-
- <?php if ($_SESSION['gameState']) { ?>
- <!-- Dit is de linkse container die onze schepen weergeeft -->
- <section class="main__content ships-container">
- <h2 class="ships-container__title">
-
- <!-- Ships vervoegen -->
- <?php if ($_SESSION['difficulty'] > 1) {
- echo "Ships";
- } else {
- echo "Ship";
- } ?>
-
- </h2>
- <?php
-
- // Deze functie print onze huidige schepen en wordt geupdate of we ze raken of niet
- printCurShotMessage();
-
- ?>
- </section>
- <?php } ?>
- <div class="main__content content">
- <!-- Deze functie print de tabel op basis van difficulty level en update ze -->
- <?php printTable($diffTableRows[$_SESSION['difficulty'] - 1]); ?>
- </div>
-
-
- </div>
-
- <?php
-
- if ($_SESSION['teacherMode']) {
- if ($_SESSION['gameState']) {
- // var_dump($_SESSION['curShips']);
- echo "<span class='alert'>*Teacher Mode*</span><br>Ship locations: ";
- for ($i = 0; $i < count($_SESSION['curShips']); $i++) {
- var_dump($_SESSION['curShips'][$i]->getLocArr());
- }
- }
- // session_destroy();
- }
- include "includes/foot.inc";
- ?>
|