コード例 #1
1
ファイル: functions.php プロジェクト: kperson/Connect4
function requestTimeWin($member_id, $game_id)
{
    $game = gameData($member_id, $game_id);
    if (time() - strtotime($game['last_move']) > 30) {
        if ($game['whose_turn'] != $member_id) {
            setWinner($member_id, $game_id);
        }
    }
}
コード例 #2
0
ファイル: end.php プロジェクト: kperson/Connect4
<?php

require_once 'init.php';
header('Cache-Control: no-cache');
header('Content-Type: text/javascript');
$data = generateGrid($_SESSION['member_id'], $_GET['game']);
if (!empty($data)) {
    $winner = winner($data);
    if ($winner != -1) {
        setWinner($winner, $_GET['game']);
    } else {
        if ($winner == 0) {
            setTie($_GET['game']);
        }
    }
    echo json_encode(array('stat' => $winner));
}
コード例 #3
0
 public function storeAnswer($id, CreateAnswerRequest $request)
 {
     $input = $request->all();
     // Get time between exercise load and store answer.
     $endTime = microtime(true);
     $diffTime = $endTime - $input['start_time'];
     $exercise = loadExercise($id)[0];
     //must check for empty answers & stuff like that...
     //must also find a way to avoid duplicate answers since 'text' types can't be used as key
     $ans = new Answer();
     $ans->given_code = $input['given_code'];
     $ans->time = $diffTime;
     $result = preg_replace('/[^A-Za-z0-9\\-\\ ,\\.;:\\[\\]\\?\\!@#$%&\\*\\(\\)\\-=\\+\\.^\\P{C}\\n]/', '', $input['result']);
     // dd($result);
     // dd(preg_match("/^[hH]ello, [wW]orld$/", substr_replace($result, "", -1)));
     // dd(preg_match("/^Hello, world$/", $result));
     if ($exercise->expected_result == '*') {
         $ans->success = true;
     } else {
         $rule = "/" . $exercise->expected_result . "/";
         // dd($rule);
         if (preg_match($rule, $result)) {
             $ans->success = true;
         } elseif (compare(bin2hex($result), bin2hex($exercise->expected_result . chr(0xd) . chr(0xa)))) {
             $ans->success = true;
         } else {
             $ans->success = false;
         }
     }
     $ans->uId = Auth::id();
     $ans->eId = $id;
     storeAnswer($ans);
     if ($exercise->expected_result != '*') {
         if ($ans->success) {
             flash()->success("You solved the exercise in " . $diffTime . " seconds.");
             \Session::flash('correctAnswer', 'blabla');
         } else {
             flash()->error("Too bad, the answer was wrong.");
         }
     }
     // $result = $input['result'];
     $answer = $input['given_code'];
     $sId = \Session::get('currentSerie');
     $challenges = loadChallengesByUserExercise(\Auth::id(), $id);
     // Only update challenge if the given answer is correct.
     if ($ans->success) {
         foreach ($challenges as $c) {
             if ($c->winner != \Auth::id()) {
                 if ($c->userA == \Auth::id()) {
                     if (!empty(loadCorrectAnswers($c->userB, $id)) && $diffTime < loadCorrectAnswers($c->userB, $id)[0]->time) {
                         $newScore = loadUser(\Auth::id())[0]->score;
                         $newScore += 1;
                         setUserScore(\Auth::id(), $newScore);
                         setWinner($c->id, \Auth::id());
                         storeNotification($c->userB, "challenge beaten", \Auth::id(), $c->id);
                     }
                 } else {
                     if (!empty(loadCorrectAnswers($c->userA, $id)) && $diffTime < loadCorrectAnswers($c->userA, $id)[0]->time) {
                         $newScore = loadUser(\Auth::id())[0]->score;
                         $newScore += 1;
                         setUserScore(\Auth::id(), $newScore);
                         setWinner($c->id, \Auth::id());
                         storeNotification($c->userA, "challenge beaten", \Auth::id(), $c->id);
                     }
                 }
             }
         }
     }
     return redirect('exercises/' . $id)->with(['result' => $result, 'answer' => $answer]);
 }
コード例 #4
0
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($id)
 {
     $challenge = loadChallenge($id)[0];
     if (!empty(loadCorrectAnswers($challenge->userA, $challenge->exId))) {
         $answersA = loadCorrectAnswers($challenge->userA, $challenge->exId)[0];
         if (!empty(loadCorrectAnswers($challenge->userB, $challenge->exId))) {
             $answersB = loadCorrectAnswers($challenge->userB, $challenge->exId)[0];
             //A beats B
             if ($answersA->time < $answersB->time) {
                 setWinner($id, $challenge->userA);
             } else {
                 if ($answersA->time > $answersB->time) {
                     setWinner($id, $challenge->userB);
                 } else {
                     setWinner($id, NULL);
                 }
             }
         } else {
             setWinner($id, $challenge->userA);
         }
     } else {
         // A not answered => B wins
         if (!empty(loadCorrectAnswers($challenge->userB, $challenge->exId))) {
             setWinner($id, $challenge->userB);
         } else {
             setWinner($id, NULL);
         }
     }
     return view('challenges.show', compact('challenge'));
 }