/** * Create a new event instance. * * @return void */ public function __construct($user_id, $game_id) { $user = \App\Models\User::find($user_id); $game_user = \App\Models\Game_User::where('user_id', $user_id)->where('game_id', $game_id)->first(); $game_user['has_left'] = true; $game_user->save(); $game_users = \App\Models\Game_User::where('game_id', $game_id)->get(); $cont = 0; foreach ($game_users as $game_user) { if ($game_user['has_left']) { $cont++; } } $user_list = \App\Models\Game_User::where('game_id', $game_id)->get(); $msg = 'El jugador ' . $user->first_name . ' se ha rendido'; if ($cont == count($user_list) - 1) { $winner = \App\Models\Game_User::where('has_left', '=', false)->where('game_id', $game_id)->first(); $winner['has_won'] = true; $winner->save(); $winner_name = \App\Models\User::find($winner['user_id']); $msg .= ', y El jugador ' . $winner_name->first_name . ' ha ganado'; } $games = \App\Models\Game_User::where('game_id', $game_id)->where('user_id', $user_id)->first(); if (!$games['has_left']) { $letters_user = \App\Models\Letter_User::where('game_id', '=', $game_id)->where('user_id', $user_id)->get(['letter_id']); foreach ($letters_user as $key) { $user_letters_save = \App\Models\Inventory_Letter_Game::where('game_id', $game_id)->where('letter_id', $key->letter_id)->first(); $user_letters_save->quantity++; $user_letters_save->save(); } } $this->data = ['game_id' => $game_id, 'msg' => $msg]; }
public static function random_letter($game_id) { if (self::have_turn($game_id)) { return response()->json(['errors' => true, 'msg' => 'NO es su turno.']); } $user_inventory = \App\Models\Letter_User::where('game_id', $game_id)->where('user_id', Auth::user()->id)->get(); for ($i = 0; $i < 4; $i++) { $letter = $user_inventory->random(); $letter_returned = \App\Models\Inventory_Letter_Game::where('letter_id', $letter->letter_id)->where('game_id', $game_id)->first(); $letter_returned->quantity++; $letter_returned->save(); $letter->delete(); } self::cleanConsTurn($game_id); self::turn_pass($game_id); self::cleanConsTurn($game_id); }
public static function validate_word($game_id) { $letters = \Input::get('letters'); if (self::has_winner($game_id)) { $list = \App\Models\Game_User::where('game_id', $game_id)->where('has_won', 1)->first(); $user_win = \App\Models\User::where('id', '=', $list->user_id)->first(); $msg = 'Ya existe un ganador y es ' . $user_win->first_name . '.'; return response()->json(['errors' => true, 'msg' => $msg]); } if (self::has_ended($game_id)) { return response()->json(['errors' => true, 'msg' => 'El juego termino']); } if (self::have_turn($game_id)) { return response()->json(['errors' => true, 'msg' => 'NO es su turno.']); } if (self::have_give_up($game_id)) { return response()->json(['errors' => true, 'msg' => 'Usted ya se rindió.']); } $game_users = \App\Models\Game_User::where('game_id', '=', $game_id)->get(); $turn = 0; foreach ($game_users as $game_user) { $turn += \App\Models\Game_Board_User::where('game_user_id', '=', $game_user->id)->count(); } $board = self::board_generate($game_id); foreach ($letters as $letter) { $board[$letter['x']][$letter['y']]['letter'] = $letter['letter']; } $word = ''; foreach ($letters as $letter) { $word .= $letter['letter']; } if ($turn == 0) { if ($letters[0]['x'] != 8 || $letters[0]['y'] != 8) { return response()->json(['errors' => true, 'msg' => 'La posición es incorrecta']); } elseif (self::check_word($word)) { $points = 0; $word_mult = 0; foreach ($letters as $letter) { $letter_id = \App\Models\Letter::where('letter', $letter['letter'])->get(); $game_user_id = \App\Models\Game_User::where('game_id', $game_id)->where('user_id', Auth::user()->id)->first(); \App\Models\Game_Board_User::create(['x' => $letter['x'], 'y' => $letter['y'], 'letter_id' => $letter_id[0]['id'], 'game_user_id' => $game_user_id['id']]); if ($board[$letter['x']][$letter['y']]['type'] == 1) { $points += $letter_id[0]['points'] * $board[$letter['x']][$letter['y']]['multiplier']; } elseif ($board[$letter['x']][$letter['y']]['type'] == 2) { $word_mult += $board[$letter['x']][$letter['y']]['multiplier']; $points += $letter_id[0]['points']; } else { $points += $letter_id[0]['points']; } $inventory = \App\Models\Letter_User::where('game_id', $game_id)->where('letter_id', $letter_id[0]['id'])->first(); $inventory->delete(); } $game_user_id = \App\Models\Game_User::where('game_id', $game_id)->where('user_id', Auth::user()->id)->first(); if ($word_mult > 0) { $points = $points * $word_mult; } $game_user_id['points'] += $points; $game_user_id->save(); self::cleanConsTurn($game_id); self::turn_pass($game_id); self::cleanConsTurn($game_id); return response()->json(['errors' => false, 'msg' => 'La palabra es correcta']); } else { return response()->json(['errors' => true, 'msg' => 'La palabra no se encuentra en el diccionario']); } } else { $is_ok = true; for ($i = 1; $i < 16; $i++) { $word = ''; for ($j = 1; $j < 16; $j++) { if (is_string($board[$i][$j]['letter'])) { $word .= $board[$i][$j]['letter']; } elseif (is_string($board[$i][$j]['letter']['letter'])) { $word .= $board[$i][$j]['letter']['letter']; } elseif (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } else { $word = ''; } } if (is_string($board[$i][$j - 1]['letter'])) { if (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } } elseif (is_string($board[$i][$j - 1]['letter']['letter'])) { if (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } } } for ($i = 1; $i < 16; $i++) { $word = ''; for ($j = 1; $j < 16; $j++) { if (is_string($board[$j][$i]['letter'])) { $word .= $board[$j][$i]['letter']; } elseif (is_string($board[$j][$i]['letter']['letter'])) { $word .= $board[$j][$i]['letter']['letter']; } elseif (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } else { $word = ''; } } if (is_string($board[$j - 1][$i]['letter'])) { if (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } } elseif (is_string($board[$j - 1][$i]['letter']['letter'])) { if (strlen($word) > 1) { if (!self::check_word($word)) { $is_ok = false; } } } } if ($is_ok) { $points = 0; $word_mult = 0; foreach ($letters as $letter) { $letter_id = \App\Models\Letter::where('letter', $letter['letter'])->get(); $game_user_id = \App\Models\Game_User::where('game_id', $game_id)->where('user_id', Auth::user()->id)->first(); \App\Models\Game_Board_User::create(['x' => $letter['x'], 'y' => $letter['y'], 'letter_id' => $letter_id[0]['id'], 'game_user_id' => $game_user_id['id']]); if ($board[$letter['x']][$letter['y']]['type'] == 1) { $points += $letter_id[0]['points'] * $board[$letter['x']][$letter['y']]['multiplier']; } elseif ($board[$letter['x']][$letter['y']]['type'] == 2) { $word_mult += $board[$letter['x']][$letter['y']]['multiplier']; $points += $letter_id[0]['points']; } else { $points += $letter_id[0]['points']; } $inventory = \App\Models\Letter_User::where('game_id', $game_id)->where('letter_id', $letter_id[0]['id'])->first(); $inventory->delete(); } $game_user_id = \App\Models\Game_User::where('game_id', $game_id)->where('user_id', Auth::user()->id)->first(); if ($word_mult > 0) { $points = $points * $word_mult; } $game_user_id['points'] += $points; $game_user_id->save(); self::cleanConsTurn($game_id); self::turn_pass($game_id); self::cleanConsTurn($game_id); return response()->json(['errors' => false, 'msg' => 'La palabra es correcta']); } else { return response()->json(['errors' => true, 'msg' => 'La palabra no se encuentra en el diccionario']); } } }