PHP programmering odds spil

Tags:    php programmering hjaelp

Hej. Jeg er i færd med at lave et mindre odds spil, men sidder lidt fast.

Jeg har indtil nu lavet det her. Men jeg ønsker det lidt mere omfattende, som f.eks. at gøre det muligt at spille på flere kampe på engang og få det ind i mysql.

Nogle der kan hjælpe?

<?php

if(isset($_GET["s"])) { highlight_file(__FILE__); exit; }


session_start();

//Hvis spillet skal startes forfra
if(isset($_GET["restart"]))
{
unset($_SESSION["money"]);
unset($_SESSION["hold"]);
unset($_SESSION["historik"]);
header("Location: http://".$_SERVER["HTTP_HOST"].str_replace("?restart", "", $_SERVER["REQUEST_URI"]));
exit;
}

// Vi skal have nogle penge at spille for
if(!isset($_SESSION["money"]))
$_SESSION["money"] = 300;

// Nu skal vi finde nogle byer der kan spille - her har jeg bare valgt en tekstfil med nogle bynavne i
if(!isset($_SESSION["hold"]))
{
$byer = file("byer.txt");
foreach($byer as $key => $value)
$byer[$key] = trim($value);

// Så vælger vi to hold og giver dem nogle tilfældige odds.
shuffle($byer);
$hold["hjemme"]["by"] = $byer[0];
$hold["hjemme"]["odds"] = (rand(10, 90) / 10);
$hold["ude"]["by"] = $byer[1];
$hold["ude"]["odds"] = (rand(10, 90) / 10);
$_SESSION["hold"] = $hold;
}
else
{
$hold = $_SESSION["hold"];

// Hvis der spilles...
if(isset($_POST["indsats"]))
{
// Lige lidt kontroller på inputtet..
$_POST["indsats"] = str_replace( array(".", ","), array("", "."), $_POST["indsats"]);

if( (double)$_POST["indsats"] > $_SESSION["money"] )
$error = "Du har satset flere penge end du har - prøv igen";

if( (double)$_POST["indsats"] == 0 )
$error = "Du skal satse et beløb for at kunne spille - prøv igen";


if( !isset($_POST["hold"]) || strlen($_POST["hold"]) == 0 )
$error = "Du skal vælge et hold og spille på";

if( !isset($error) )
{
// Hvis der ingen fejl er, kan vi godt trække indsatsen fra og spille videre
$_SESSION["money"] -= $_POST["indsats"];

$rand = mt_rand(0, 100);

$win = 50;
if($hold["hjemme"]["odds"] < $hold["ude"]["odds"])
$win = 65; // hjemmehold med lave odds, må være bedre end udeholdet, hvorfor de også lettere må vinde

if($win >= $rand)
$winner = "hjemme";
else
$winner = "ude";

if($_POST["hold"] == $winner)
{
$result = $_POST["indsats"] * $hold[$winner]["odds"];
$_SESSION["money"] += $result;
$result = number_format($result, 2);
$_SESSION["message"] = "Dit hold vandt! Du har vundet $result til at spille videre for.";
$_SESSION["historik"][] = "+".$result;
}
else
{
$_SESSION["message"] = "Dit hold tabte, desværre og du har mistet din indsats.";
$_SESSION["historik"][] = "-".number_format($_POST["indsats"], 2);
}

unset($_SESSION["hold"]);
header("Location: http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]);
exit;
}

}




}

?>
<!DOCTYPE html>
<html>
<head>
<title>Mini Oddset</title>
</head>
<body>

<h1>Mini Oddset</h1>
<p>
<strong><?php echo $hold["hjemme"]["by"]; ?> - <?php echo $hold["ude"]["by"]; ?></strong>
</p>

<h3>Odds på kampen</h3>
<?php if(isset($_SESSION["message"])): ?>
<h4><?php echo $_SESSION["message"]; ?></h4>
<?php unset($_SESSION["message"]);
endif; ?>

<p>
Du har lige nu <strong><?php echo number_format($_SESSION["money"], 2); ?></strong> at spille for.
</p>

<?php if(isset($error)): ?>
<p style="color: red;">
<?php echo $error; ?>
</p>
<?php endif; ?>
<form method="post" action="">
<div>
<p>
<input type="radio" name="hold" value="hjemme" id="hjemme"<?php if(isset($_POST["hold"]) && $_POST["hold"] == "hjemme") { echo ' checked="checked"'; } ?>>
<label for="hjemme"><?php echo $hold["hjemme"]["by"]; ?> - <?php echo $hold["hjemme"]["odds"]; ?></label>
</p>

<p>
<input type="radio" name="hold" value="ude" id="ude"<?php if(isset($_POST["hold"]) && $_POST["hold"] == "ude") { echo ' checked="checked"'; } ?>>
<label for="ude"><?php echo $hold["ude"]["by"]; ?> - <?php echo $hold["ude"]["odds"]; ?></label>
</p>

<p>
<label for="indsats">Din indsats:</label>
<input type="text" name="indsats" value="<?php if(isset($_POST["indsats"])) { echo $_POST["indsats"]; } ?>" id="indsats">
<input type="submit" name="spil" value="Spil indsats">
</p>

</div>
</form>

<?php if(isset($_SESSION["historik"])): ?>
<h3>Historik</h3>
<p>
<?php
foreach($_SESSION["historik"] as $value)
echo $value."<br />";
?>
</p>
<p>
Start forfra? <a href="?restart">Klik her</a>
</p>
<?php endif; ?>
</body>
</html>



10 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt -1 karma
Sorter efter stemmer Sorter efter dato
Tag denne kode
Fold kodeboks ind/udPHP kode 

Og ret til
Fold kodeboks ind/udPHP kode 


Det hjælper nok ikke ret meget, men det er bare en idé :)


Daniele, når der kun er en linje efter et "if" behøver man ikke tuborgparenteser, og efter min mening er det en dårlig vane!

Mht. dit spørgsmål kunne du måske gemme alle kampe som en bruger har spillet på i et array og gemme det i en kolonne kaldet "oddsede_kampe" og så bare tilføje mere info til den hver gang der er en der har spillet! :)

Men hvis du vil have noget ordenligt hjælp skal du komme med noget mere konkret, dit spørgsmål lyder mere som en request til at få os til at lave det for dig, hvis det er det du vil have er der sikkert mange der er villige til det for en hvis pris. :)



Hvor i alverden har jeg fået -9 i karma??? O_O

Lidt urelateret til spørgsmålet men dit "karma rytteri" vil højst sandsynligt bare give dig et dårligt omdømme og mere dårlig karma.


On topic Jens, så synes jeg ærligt talt at det der ser rigtig meget kopieret ud. Det gør så ikkke noget i sig selv selvfølgelig, men der er stort set intet fra den kode som du rent faktisk kan kopiere og bruge i den nye løsning. Eller jo, enkelte linjer, men ofte er man bedre tjent ved bare at skrive det igen i det nye projekt når det er så lidt kode. I sær i sådan et tilfælde her hvor alt der indgår blot er simpel matematik.

Kan man tillade sig at spørge hvad du har af programmerings erfaring så vi kan give dig nogle råd der passer til de "værktøjer" du har til rådighed?



Start lige med at pakke din kode ind i de der til indrettede kodebokse på udvikleren ;-) Som nedenstående uden mellemrummene før/efter []

[ code lang="HTML" ] [ /code ]



#Henrik
Derfor behøver andre jo ikke at "hakke ned" på hvad jeg skriver, når det bare er en oplysning. Man behøver ikke at gøre sådan, men det vidste jeg jo ikke. Jeg skrev bare at han kunne rette det til det andet, og det kan jo ske at han skulle bruge den funktion jeg gav ham senere hen, og derfor ville jeg bare skrive det.

-men jeg holder bare kæft når folk alligevel bare vil "nedgøre" mig her på siden.



Nu kender jeg intet til odds overhovedet.

Men måske kan du bygge videre på dette lille eksempel og indbygge den odds logik jeg ikke kender til.
Fold kodeboks ind/udKode 




Hvor i alverden har jeg fået -9 i karma??? O_O



Hej. Jamen jeg har ikke den store erfaring med php. Den vedlagte kode har jeg fået hjælp til at lave. Men det jeg har i tankerne er lidt mere omfattende end den kode, og der var derfor ikke mere hjælp at hente mere. Så derfor spørg jeg om der nogle der har erfaring, kender tutorials eller lignende omkring det her..



#Henrik
Jeg forstår stadig ikke hvorfor at jeg skal rykkes så lang ned når jeg bare giver et tip til at ændre en kode, og hvis folk ikke syntes godt om at man skriver sådan, så er det jo deres valg? Men derfor skal de jo ikke hakke ned på mig for at jeg prøver at give et forslag til noget kode.



#Henrik
Jeg forstår stadig ikke hvorfor at jeg skal rykkes så lang ned når jeg bare giver et tip til at ændre en kode, og hvis folk ikke syntes godt om at man skriver sådan, så er det jo deres valg? Men derfor skal de jo ikke hakke ned på mig for at jeg prøver at give et forslag til noget kode.


At tilføje { } har INTET med "problemet" at gøre. Han sagde ikke "Jeg har en fejl i min kode" han bad om at få hjælp til implementere et nyt system, med udgangspunkt i den kode han gav os. Og så påpeger du en "fejl" som slet ikke er en fejl i stedet? Beklager, min matematik lærer bliver heller ikke glad hvis jeg afleverer en tysk stil til ham.


Back on topic (igen):


Hej. Jamen jeg har ikke den store erfaring med php. Den vedlagte kode har jeg fået hjælp til at lave. Men det jeg har i tankerne er lidt mere omfattende end den kode, og der var derfor ikke mere hjælp at hente mere. Så derfor spørg jeg om der nogle der har erfaring, kender tutorials eller lignende omkring det her..


Problemet med lige at finde dig en "tutorial" er at det er et meget specifikt system du ønsker.
Lidt ligesom du heller ikke kan finde en færdig (og gratis) tegning over netop DIT drømmehus, så tvivler jeg også på hvor vidt der kan findes en guide til det du prøver at lave.

Når du skal lave et større system som dette skal du bryde det ned i mindre bider. Fx vil din database nok skulle deles op i tables til følgene:

Brugere
Byer
Kampe

Du kan evt også senere udvide med en tabel kaldet "highscores" eller noget i den stil men det lader vi ligge for nu.

Nu gælder det sådan set bare om at du sætter dig ned og koder skidtet. Jamen, virkelig, jeg beklager mit sprogbrug.
Det er svært at hjælpe dig mere end det uden at lave hele dit system. Og hvis jeg skulle det ville jeg være nød til at sende dig en regning bagefter.

Men et par tips kan være at du skal huske at dele projektet op i små bider. Hvad hvis du senere vil have det udvidet med nye funktioner? Vil den kode du skriver så være god nok til at det er teknisk let at tilføje disse? Kig eventuelt ind i objektorienteret programming
( http://php.net/manual/en/language.oop5.php )
eller sørg i hvert fald som minimum for at holde tingene så let overskuelige som overhovedet muligt.
Du vil takke dig selv senere.



Til sidst vil jeg gerne lige have lov at tilføje, at det system du prøver at lave ikke er det obsolut sværeste du kan begive dig ud i. Det er dog heller ikke helt "piece of cake". Du skrev før at du havde fået hjælp til at lave ovenstående kode, så jeg vil spørge dig direkte: Er du sikker på du er klar til det her?

Det gør ikke noget hvis du ikke kan finde ud af det hele, du kan altid komme herind igen og spørge om hjælp til mere specifikke problemer (husk dog at bruge Google først) men bare du kan overskue projektet som helhed, så er jeg sikker på at det nok skal gå.

Grunden til jeg i øvrigt ikke vil give dig noget kode "at starte på" er at jeg foretrækker at se personen der spørger, forsøge at lave noget først. Jeg er altid frisk på at lede efter eventuelle problemer i folks koder, men jeg vil ikke kode det for dem. Der er desværre alt for mange som bare kommer forbi udvikleren.dk og tror at det er stedet for gratis programming af ens projekter.






Indlæg senest redigeret d. 28.05.2011 20:46 af Bruger #14381
Tag denne kode
Fold kodeboks ind/udPHP kode 

Og ret til
Fold kodeboks ind/udPHP kode 


Det hjælper nok ikke ret meget, men det er bare en idé :)



Indlæg senest redigeret d. 27.05.2011 22:53 af Bruger #16025
t