Hey ,

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

<?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();
?>


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.
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\Poker\index.php on line 24
ow :s? Roep ik mijn class verkeerd aan?

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?

<?php
class kaarten{
  public $var;
  function set_var() {
      $this->var = array();
  }
}
?> 


[edit]
en je mist nog een accolade d8 ik.

yup, de accolade om je class te sluiten
[/edit]



<?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();
?> 
Ok bedankt , nu heb ik de volgende error ->

Catchable fatal error: Object of class kaarten could not be converted to string in C:\xampp\htdocs\Poker\index.php on line 25



<?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;
?> 


[edit] zonder code ben je natuurlijk niets :)[/edit]
@Dizzy momentje...even wachten voor je er me de fouten van tommy vandoor gaat.
dit gaat natuurlijk niet werken:
<?
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];
}
}
?>
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:
<?
function genereer_gemeenschappelijke_kaarten() {

$this->rand_s = array();
$this->rand_c = array();

for($x=1;$x=5;$x++){

$this->rand_s[$x] = rand(1 ,4);
$this->rand_c[$x] = rand(0, 12);

}
}
?>

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
<?php

for($x=1;$x=5;$x++){

?>

Dat moet natuurlijk

<?php

for($x=1;$x<5;$x++){

?>

zijn ;)
:) zal dan wel $x<=5 moeten zijn ... want in totaal zijn er 5 gemeenschappelijke kaarten.

Maar hij geeft namelijk geen ouput ... :s (dus geen 10 random getallen)
echo $instancename->var_function;
[edit]
als je werkt met return waarden*
[/edit]

Met getter bedoelt iets als :

<?php
class Class_A {
   function return_value($varname) {
        return $this->$varname;
   }
}
?>
als je naar het laatste deel van mijn code kijkt zul je ook een echo tegenkomen ^^

<?php
$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 :)

<?php
$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 :-/

Reageren