public static function nextStep($arrPrevStep) { // GEGEVENS OPHALEN VAN DE GAME $game = GameDAO::getGameFromId($arrPrevStep[0]->gameid); $grootte = $game->grootte; $arrNextStep = array(); $arrVerwijderd = array(); $arrNewBorn = array(); $arrPrevStep = gameService::sortArray($arrPrevStep); // IEDERE ORGANISME UIT DE ARRAY OVERLOPEN foreach ($arrPrevStep as $prevOrganisme) { if (!in_array($prevOrganisme, $arrVerwijderd)) { $prevOrganismeRechts = organismeservice::checkPositionInArray($prevOrganisme->kolom + 1, $prevOrganisme->rij, $arrPrevStep); /* * *********** ALS ER RECHTS NIETS STAAT ********** */ if ($prevOrganismeRechts == false && $prevOrganisme->soort > 1) { // ALS HET ORGANISME TEGEN DE RAND STAAT if ($prevOrganisme->kolom == $grootte) { $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $prevOrganisme->kolom, $prevOrganisme->rij, $prevOrganisme->gameid); } // ALS HET ORGANISME NIET TEGEN DE RAND STAAT if ($prevOrganisme->kolom < $grootte) { // BEWEEG NAAR EEN ANDERE POSITIE $movedOrganisme = gameService::moveRandom($prevOrganisme, $arrPrevStep, $arrNextStep, $grootte); $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $movedOrganisme->kolom, $movedOrganisme->rij, $prevOrganisme->gameid); } } /* * *********** ALS ER RECHTS WEL IETS STAAT ********** */ if ($prevOrganismeRechts != false && $prevOrganisme->soort > 1) { // ALS HET ORGANISME 1 LVL STERKER IS DAN RECHTS if ($prevOrganisme->soort == $prevOrganismeRechts->soort + 1) { // OPETEN array_push($arrVerwijderd, $prevOrganismeRechts); $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht + 1, $prevOrganisme->kolom + 1, $prevOrganisme->rij, $prevOrganisme->gameid); } // ALS HET ORGANISME DEZELFDE STERKTE HEEFT ALS RECHTS if ($prevOrganisme->soort == $prevOrganismeRechts->soort) { // IS SOORT = 2 if ($prevOrganisme->soort == 2) { // KIND MAKEN array_push($arrNewBorn, new Organisme(0, 2, 1, 0, 0, $prevOrganisme->gameid)); $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $prevOrganisme->kolom, $prevOrganisme->rij, $prevOrganisme->gameid); } // IS SOORT = 3 if ($prevOrganisme->soort == 3) { // VECHTEN if ($prevOrganisme->kracht > $prevOrganismeRechts->kracht) { // OPETEN array_push($arrVerwijderd, $prevOrganismeRechts); $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht + 1, $prevOrganisme->kolom + 1, $prevOrganisme->rij, $prevOrganisme->gameid); } if ($prevOrganisme->kracht = $prevOrganismeRechts->kracht) { // BLIJVEN STAAN $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $prevOrganisme->kolom, $prevOrganisme->rij, $prevOrganisme->gameid); } } } // ALS HET ORGANISME ZWAKKER IS DAN RECHTS OF MEER DAN 1 LVL STERKER IS DAN RECHTS if ($prevOrganisme->soort < $prevOrganismeRechts->soort || $prevOrganisme->soort > $prevOrganismeRechts->soort + 1) { // blijven staan $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $prevOrganisme->kolom, $prevOrganisme->rij, $prevOrganisme->gameid); } } /* * *********** ALS HET ORGANISME EEN PLANT IS *********** */ if ($prevOrganisme->soort == 1) { $nextOrganisme = new Organisme($prevOrganisme->id, $prevOrganisme->soort, $prevOrganisme->kracht, $prevOrganisme->kolom, $prevOrganisme->rij, $prevOrganisme->gameid); } if (count($arrNextStep) < $grootte * $grootte) { array_push($arrNextStep, $nextOrganisme); } } } // ALLE NIEUWE ORGANISMEN TOEVOEGEN AAN ARRAY foreach ($arrNewBorn as $new) { if (count($arrNextStep) < $grootte * $grootte) { $arrNextStep = gameService::addToArray($new->soort, $arrNextStep, 1, $grootte, $new->gameid); } } // NIEUWE PLANTEN TOEVOEGEN AAN ARRAY if (count($arrNextStep) < $grootte * $grootte) { $arrNextStep = gameService::addToArray(1, $arrNextStep, rand(2, 3), $grootte, $game->id); } $_SESSION['verwijderd'] = $arrVerwijderd; return $arrNextStep; }