Texas Hold'em singleplayer
Ik ben bezig om een beetje OOP in PHP te verkennen ... en heb daarom gekozen om Texas Hold'em te maken ... (eerst klein beginnen met singleplayer) :p
Omdat ik niet echt thuis ben in de wereld van OOP heb ik enkele vragen en een error klaarliggen.
Index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class kaarten{
function create_deck() {
$deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
global $deck;
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$rand_s = array();
$rand_c = array();
$rand_s[$x] = rand(1 ,4);
$rand_c[$x] = rand(0, 12);
echo $rand_s[$x];
echo $rand_c[$x];
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
class kaarten{
function create_deck() {
$deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
global $deck;
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$rand_s = array();
$rand_c = array();
$rand_s[$x] = rand(1 ,4);
$rand_c[$x] = rand(0, 12);
echo $rand_s[$x];
echo $rand_c[$x];
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
Als je het antwoord weet van 1 van mijn volgende vragen mag je het altijd posten (bij voorbaat dank!).
1. Ik moet een deck hebben en zoals je ziet heb ik al een deckje inneengestoken, maar is het nodig om die global te maken?
2. Om 5 gemeenschappelijke kaarten te genereren is mijn optie de beste optie ? (for lus 10 willekeurige getallen generen om daarna uit de multidimensionale array ($deck) te halen)
3.
Code (php)
1
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\Poker\index.php on line 24
4. hoe kan ik bv in $deck[1][0] (harten 2) verwijderen ... zodat de computer of de speler geen 2 keer dezelfde kaarten kan hebben of krijgen na de wissel?
Gewijzigd op 01/01/1970 01:00:00 door Dizzy
Code (php)
Edit:
en je mist nog een accolade d8 ik.
yup, de accolade om je class te sluiten
en je mist nog een accolade d8 ik.
yup, de accolade om je class te sluiten
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
class kaarten{
public $deck;
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$rand_s = array();
$rand_c = array();
$rand_s[$x] = rand(1 ,4);
$rand_c[$x] = rand(0, 12);
return $rand_s[$x];
return $rand_c[$x];
}
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
class kaarten{
public $deck;
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$rand_s = array();
$rand_c = array();
$rand_s[$x] = rand(1 ,4);
$rand_c[$x] = rand(0, 12);
return $rand_s[$x];
return $rand_c[$x];
}
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
Gewijzigd op 01/01/1970 01:00:00 door Tommy Masschelein
Code (php)
1
Catchable fatal error: Object of class kaarten could not be converted to string in C:\xampp\htdocs\Poker\index.php on line 25
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
class kaarten{
public $deck, $rand_s, $rand_c;
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$this->rand_s = array();
$this->rand_c = array();
$this->rand_s[$x] = rand(1 ,4);
$this->rand_c[$x] = rand(0, 12);
return $rand_s[$x];
return $rand_c[$x];
}
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
echo $nieuw_object;
?>
class kaarten{
public $deck, $rand_s, $rand_c;
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x=5;$x++){
$this->rand_s = array();
$this->rand_c = array();
$this->rand_s[$x] = rand(1 ,4);
$this->rand_c[$x] = rand(0, 12);
return $rand_s[$x];
return $rand_c[$x];
}
}
}
$nieuw_object = new kaarten;
$nieuw_object->genereer_gemeenschappelijke_kaarten();
echo $nieuw_object;
?>
Edit:
zonder code ben je natuurlijk niets :)
Gewijzigd op 01/01/1970 01:00:00 door Dizzy
dit gaat natuurlijk niet werken:
Code (php)
2 niet besdtaande returns en een array die je steeds leeg gooit en de 2e return zal zowieso nooit uitgevoerd worden. pas het eventjes alsvolgt aan:
Code (php)
nu moet je alleen nog 2 getter methods maken voor je public rand_s en rand_c. dan kun je ze private maken
:-) wilde gewoon aantonen dat een ECHO niet thuis hoort in een class
michel schreef op 12.08.2007 14:26:
nu moet je alleen nog 2 getter methods maken voor je public rand_s en rand_c. dan kun je ze private maken
:) wat bedoel je daarmee?
iets met $_GET ofzo? XD
Dat moet natuurlijk
zijn ;)
Maar hij geeft namelijk geen ouput ... :s (dus geen 10 random getallen)
Edit:
als je werkt met return waarden*
als je werkt met return waarden*
Met getter bedoelt iets als :
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Tommy Masschelein
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$nieuw_object = new kaarten;
$nieuw_object = $nieuw_object->genereer_gemeenschappelijke_kaarten();
echo $nieuw_object;
?>
$nieuw_object = new kaarten;
$nieuw_object = $nieuw_object->genereer_gemeenschappelijke_kaarten();
echo $nieuw_object;
?>
krijg nu wel een witte pagina :) dus geen errors meer etc maar jammer genoeg niet de output die ik wens :)
Code (php)
1
2
3
4
2
3
4
<?php
$nieuw_object = new kaarten;
echo $nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
$nieuw_object = new kaarten;
echo $nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
je moet je toch van je object geen var maken anders heb je geen object meer :-/
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<pre>
<?php
class kaarten{
public $deck, $rand_s = array(), $rand_c = array();
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x<6;$x++){
$this->rand_s[$x] = rand(1 ,4);
$this->rand_c[$x] = rand(0, 12);
}
print_r($rand_s);
print_r($rand_c);
}
}
$nieuw_object = new kaarten;
echo $nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
</pre>
<?php
class kaarten{
public $deck, $rand_s = array(), $rand_c = array();
function create_deck() {
$this->deck = array(
1 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //harten
2 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //schoppen
3 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1"), //koeken
4 => array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "1") //klaveren
);
}
function genereer_gemeenschappelijke_kaarten() {
for($x=1;$x<6;$x++){
$this->rand_s[$x] = rand(1 ,4);
$this->rand_c[$x] = rand(0, 12);
}
print_r($rand_s);
print_r($rand_c);
}
}
$nieuw_object = new kaarten;
echo $nieuw_object->genereer_gemeenschappelijke_kaarten();
?>
</pre>
^^ deze keer ook GEEN errors :s maar ook geen output ^^
Edit:
Gewijzigd op 01/01/1970 01:00:00 door Dizzy
misschien zou je kunnen overwegen om het iets anders op te bouwen, bijv met een klasse Kaart die voor 1 enkele kaart staat en een klasse Hand die dan 2 (of in andere varianten meerdere) kaarten heeft. Verder kan je nog een klasse maken die kijkt naar of je iets hebt (pair, flush enz). Een getter is een functie die een instantie variabele teruggeeft.
Code (php)
de manier van tommy kan ook maar die is mij iets te dynamisch. Ik scrijf ze graag gewoon uit ivm code hinting. ook kan ik nu geen niet bestaande klasse variablene opvragen.
ik raad je in het algemeen aan eens wat tutorials te lezen omdat veel logica in je klassen nog niet kloppen.
een goede tutorial staat op phpfreakz:
http://phpfreakz.nl/artikelen.php?aid=116