public static function movePlayer($tigerId, $goatId, $player, $move) { $game = GamePlay::where('tiger_user_id', $tigerId)->where('goat_user_id', $goatId)->first(); $tigerPosition = json_decode($game['tiger_position'], true); $goatPosition = json_decode($game['game_position'], true); switch ($player) { case 'Goat': $goatPosition[] = $move->x . ',' . $move->y; $goat = false; $tiger = true; $nextMove = "tiger"; break; case 'Tiger': $tigerPosition[] = $move->x . ',' . $move->y; $goat = true; $tiger = false; $nextMove = "goat"; break; } $allActivePosition = (new Initiate())->insertAnimal($tigerPosition, new Tiger())->insertAnimal($goatPosition, new Goat())->setNextMove($tiger, $goat); $moves = (new Moves($allActivePosition))->generateAllowedMoves(); $data = GamePlay::firstOrNew(['tiger_user_id' => $tigerId, 'goat_user_id' => $goatId]); $data->tiger_user_id = $tigerId; $data->goat_user_id = $goatId; $data->tiger_position = json_encode($tigerPosition); $data->goat_position = json_encode($goatPosition); $data->next_move = $nextMove; $data->save(); return array_merge($allActivePosition->getLayout(), $moves); }
public function start(Request $request) { $tigerUserId = $request->input('tiger'); $goatUserId = $request->input('goat'); $initialTigerPosition = ['0,4', '0,0', '4,0', '4,4']; $initialGoatPosition = []; $allActivePosition = (new Initiate())->insertAnimal($initialTigerPosition, new Tiger())->insertAnimal($initialGoatPosition, new Goat())->setNextMove(false, true); $moves = (new Moves($allActivePosition))->generateAllowedMoves(); $data = GamePlay::firstOrNew(['tiger_user_id' => $tigerUserId, 'goat_user_id' => $goatUserId]); $data->tiger_user_id = $tigerUserId; $data->goat_user_id = $goatUserId; $data->tiger_position = json_encode($initialTigerPosition); $data->goat_position = json_encode($initialGoatPosition); $data->next_move = 'goat'; $data->save(); Event::fire(new GameStarted($tigerUserId, $goatUserId, array_merge($allActivePosition->getLayout(), $moves))); // return Response::json(array_merge($allActivePosition->getLayout(), $moves)); }