Show sourcecode
The following files exists in this folder. Click to view.
admin.php
bilder/
checkUpdates.php
confirmPassword.php
confirmSignIn.php
createadmin.php
endScreen.php
getBoard.php
getChat.php
getHand.php
getTurnPlayer.php
lobbies.php
logIn.php
play.php
playCard.php
signIn.php
start.php
startsida.php
style.css
tables.php
update.php
updatePassword.php
waitInfo.php
waitingRoom.php
playCard.php
236 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
<?php
/** @var PDO $dbconn */
include ("../dbconnection.php");
if (isset($_GET["value"]) && isset($_GET["color"]) && isset($_GET["playerid"])) {
try {
$value = $_GET["value"];
$color = $_GET["color"];
$playerid = $_GET["playerid"];
// Hämta spelet där spelarens id är den som får spela ett kort
$sql = "SELECT * FROM JassGames WHERE turnplayerid=?";
$stmt = $dbconn->prepare($sql);
$data = array($playerid);
$stmt->execute($data);
// Om det finns ett sådant spel
if ($res = $stmt->fetch(PDO::FETCH_ASSOC)) {
$gameid = $res["gameid"];
// Hämta id:t från GamePlayers för spelaren
$gameplayerid;
$sql = "SELECT * FROM GamePlayers WHERE playerid=?";
$stmt = $dbconn->prepare($sql);
$data = array($playerid);
$stmt->execute($data);
if ($game = $stmt->fetch(PDO::FETCH_ASSOC)) {
$gameplayerid = $game["gameplayerid"];
}
// Bestäm vilken position på brädet kortet ska ha
$boardposition = 1;
$sql = "SELECT * FROM JassPlayedCards
LEFT JOIN GamePlayers ON JassPlayedCards.gameplayerid=GamePlayers.gameplayerid
WHERE GamePlayers.gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
$boardposition++;
}
// Lägg till kortet i JassPlayedCards
$sql = "INSERT INTO JassPlayedCards (gameplayerid, color, value, boardposition)
VALUES (?, ?, ?, ?)";
$stmt = $dbconn->prepare($sql);
$data = array($gameplayerid, $color, $value, $boardposition);
$stmt->execute($data);
// Ta bort kortet från spelarens hand
$sql = "DELETE FROM JassPlayerCards WHERE value=? AND color=?";
$stmt = $dbconn->prepare($sql);
$data = array($value, $color);
$stmt->execute($data);
// Hämtar användarnamnet av nuvarande spelaren
$sql = "SELECT * FROM JassPlayers WHERE playerid=?";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array($playerid));
$name = "Unknown player";
if ($res = $stmt->fetch(PDO::FETCH_ASSOC)) {
$name = $res["username"];
}
// Lägger in meddelandet i chatten
$sql = "INSERT INTO ChatMessages (gameid, img, text)
VALUES (?, ?, ?)";
$stmt = $dbconn->prepare($sql);
$img = "bilder/$value$color.png";
$text = "$name played the $value of $color";
$data = array($gameid, $img, $text);
$stmt->execute($data);
// Byt turspelare
$sql = "SELECT * FROM GamePlayers WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
// Hämtar alla spelares id
$players = array();
$nextplayer = 0;
while ($gameplayer = $stmt->fetch(PDO::FETCH_ASSOC)) {
$players[] = $gameplayer["playerid"];
// Om spelaren är samma som turspelaren, sätt NÄSTA spelare i listan till nya turspelaren
if ($gameplayer["playerid"] == $playerid) {
$nextplayer = count($players);
}
}
// Om nextplayer är större än högsta indexet i listan, sätt den till 0
if ($nextplayer == count($players)) {
$nextplayer = 0;
}
$turnplayerid = $players[$nextplayer];
// Updatera turspelaren
$sql = "UPDATE JassGames SET turnplayerid=?
WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($turnplayerid, $gameid);
$stmt->execute($data);
// Om kortet är det sista som ska spelas på en runda, avsluta rundan
if ($boardposition >= count($players)) {
$sql = "SELECT * FROM JassGames WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
if ($game = $stmt->fetch(PDO::FETCH_ASSOC)) {
// spara trumf-färgen
$trumf = $game["trumf"];
// Hämta alla kort på brädet
$sql = "SELECT * FROM JassPlayedCards
LEFT JOIN GamePlayers ON JassPlayedCards.gameplayerid=GamePlayers.gameplayerid
WHERE GamePlayers.gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
if ($card = $stmt->fetch(PDO::FETCH_ASSOC)) {
$cards = array($card);
// Sparar alla kort på spelplanen
while ($card = $stmt->fetch(PDO::FETCH_ASSOC)) {
$cards[] = $card;
}
// Sparar första kortet och spelaren som vinnare
$winnerColor = $cards[0]["color"];
$winnerValue = $cards[0]["value"];
$winnerid = $cards[0]["playerid"];
$winnergameplayerid = $cards[0]["gameplayerid"];
foreach ($cards as $card) {
$doReplace = false;
if ($card["color"] == $winnerColor) {
// Körs om det nya kortet är samma färg som den som vinner just nu(trumf eller inte)
if ($card["value"] > $winnerValue) {
// Byt ut vinnaren om värdet av det nya kortet är högre
$doReplace = true;
}
} else if ($card["color"] == $trumf) {
// Annars, om det nya kortet är trumf, byt ut det
$doReplace = true;
}
// Kollar om kortet är något av specialkorten för trumf
if ($card["color"] == $trumf) {
if ($card["value"] == "11") {
// Trumf 11 är det högsta kortet, så den ska alltid bli vinnaren
$doReplace = true;
} else if ($card["value"] == "9" && $winnerColor != "11") {
// Trumf 9 är näst högst, så den ska bli vinnaren om trumf 11 inte är det
$doReplace = true;
}
}
// Om det nya kortet är bättre, sätt det och dess spelare som vinnare
if ($doReplace) {
$winnerColor = $card["color"];
$winnerValue = $card["value"];
$winnerid = $card["playerid"];
}
}
// Ge alla kort till spelaren som vann
foreach ($cards as $card) {
$sql = "INSERT INTO JassPlayerCards (playerid, color, value, position)
VALUES (?, ?, ?, ?)";
$stmt = $dbconn->prepare($sql);
$color = $card["color"];
$value = $card["value"];
$data = array($winnerid, $color, $value, "score");
$stmt->execute($data);
// Radera kortet
$sql = "DELETE FROM JassPlayedCards WHERE cardid=?";
$stmt = $dbconn->prepare($sql);
$data = array($card["cardid"]);
$stmt->execute($data);
}
// Spara vinnarens id som första turspelaren för nästa runda
$sql = "UPDATE JassGames SET turnplayerid=?
WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($winnerid, $gameid);
$stmt->execute($data);
// Skriv ut att spelaren vann rundan
$sql = "INSERT INTO ChatMessages (gameid, text)
VALUES (?, ?)";
$stmt = $dbconn->prepare($sql);
$text = "$name won the round!";
$data = array($gameid, $text);
$stmt->execute($data);
}
}
}
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
?>