Hoe ka ik het best deze code aanpassen? Bingo kaart met specifieke functionaliteiten

Status
Niet open voor verdere reacties.

julianmurillo

Gebruiker
Lid geworden
15 jan 2018
Berichten
41
Hallo allemaal

Ik heb issues met de volgende bingo-kaart.
- Wat doet het precies? In een tabelletje van 6x6 worden nummers tussen 1 en 70 willekeurig gegenereerd
- Een trekking trekt willekeurige nummers tussen 1 en 70, en het checkt of de nummers in de tabelletje al staan; zo ja, wordt het nummertje gekleurd (blauw), zo niet gaat de trekking door tot een hele rij/kolom is helemaal gekleurd, en dan stop de trekking omdat het bingo is geworden.
- Er worden de nummers van de trekking geprint die in de tabelletje opstaan en het aantal getrokken nummers.

Echter, heb ik de volgende issues nog:

1. De rij/kolom waarop bingo is gevallen moet groen gekleurd worden.
2. Er moet een 7e rij en een 7e kolom komen voor het opslaan van het aantal "weggestreepte" getallen in respectievelijk de rij en de kolom. Deze rij en kolom mogen niet op het scherm worden getoond.
3. Er moet een functie komen voor het vullen van de bingokaart en het retourneren van de gevulde bingokaart.
4. Er moet een functie komen voor het afdrukken van de bingokaart.
5. Aangezien de grootte van de kaart is bekend, moet ik geen "for each", maar… (???)
6. Ga niet iedere keer alle getallen checken op de kaart. Check alleen het laatst getrokken getal.

Kunnen jullie mij hiermee helpen? :)

Hierbij de code:

PHP:
<!DOCTYPE html>
<html>

<head>
<title>Bingo</title>
</head>

<body>

<h2>Bingokaart waarop BINGO is gevallen</h2>
    
<?php

function ishetBingo($tabelletje, $nummers) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;

    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 || $tabelKolommen[$kol] == 6) $voltooid = true;
            }
        }
    }
    return $voltooid;
}


// initialiseer kaart

$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}

$trekking = array();
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while(!ishetBingo($kaart, $trekking));


// teken kaart en bewaar score
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $tabelrij) {
    echo "<tr>";
    foreach ($tabelrij as $cel) {
        // bewaar nummer v/d cell
        if (in_array($cel, $trekking)) {
            echo "<td style='background:blue;color:white;border:1px solid black;'>" . $cel . "</td>";
        } else {
            echo "<td>" . $cel . "</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";

// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };

// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";

echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);


?>

</body>

</html>
 
volgende helpt je wel op weg vragen over de verandingen shoot

PHP:
<!DOCTYPE html>
<html>
<head>
<title>Bingo</title>
</head>
<body>
<h2>Bingokaart waarop BINGO is gevallen</h2>
<?php
//opslaan van gegevens met sessie of database
//ophalen van de gegevens met uit die opslag

//verwerken van het nieuw binnen gekomen getal
//optie webservice die via js: die dan bij trigger meerdere kaarten kan aansturen (kaarten die afgegeven zijn )


/*punt vier kan een css layout zijn waar je bvb volgende in plaatst alles wat niet op de print mag hidden plaatsen!
@media print {
  * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } 
  @page { margin: 0.5cm; }
  h2, h3 { page-break-after: avoid; }
  nav {visibility:hidden;}
  section #category{visibility:hidden;}
*/
/*punt 5 het kan een forloop zijn niet ideaal/*
$from= 1;
$to = 7;
for ($y = $from; $y <= $to; $y++){//hours

}
*/

function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){//need exit??
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){//need exit??
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
    return $voltooid;
}
// initialiseer kaart
$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}
$trekking = array();
$rij = false;
$col = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while(!ishetBingo($kaart, $trekking,$rij,$col));
// teken kaart en bewaar score
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $tabelrij) {
    echo "<tr>";
    foreach ($tabelrij as $cel) {
        // bewaar nummer v/d cell
        if (in_array($cel, $trekking)) {
            echo "<td style='background:blue;color:white;border:1px solid black;'>" . $cel . "</td>";
        } else {
            echo "<td>" . $cel . "</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";
// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };
// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";
if($rij!=false){
    print 'RIJ'.(++$rij);//plus plus is omdat positie start met 0 en lijkt niet logish
}
if($col!=false){
    print 'KOLLOM'.(++$col);
}
echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);
?>
</body>
</html>
 
Hi :)

Op dit moment heb ik punt 2 kunnen voltooien.

Punt 1 lukt nog niet: Er worden nog groene cellen gekleurd die geen bingo opleveren, het lijkt impact te hebben op de trekking (de trekking stopt niet automatisch als een hele rij/kolom is blauw), en een complete blauwe rij wordt nog niet groen.

Hebben jullie suggesties daarvoor?:

Ik kan geen javascript gebruiken.

PHP:
<!DOCTYPE html>
<html>

<head>
<title>Bingo</title>
</head>

<body>

<h2>Bingokaart waarop BINGO is gevallen</h2>
    
<?php

$rowGreen = -1;
$colGreen = -1;

function ishetBingo($tabelletje, $nummers) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;
    global $colGreen, $rowGreen;

    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6){
                    $rowGreen = $rij;
                    $voltooid = true;
                    break;
                } elseif ($tabelKolommen[$kol] == 6){
                    $colGreen = $kol;
                    $voltooid = true;
                    break;
                } 
                else {
                $voltooid = false;
                }
            }
        }
    }
    return $voltooid;
}
// initialiseer kaart

$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}

$trekking = array();
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while(!ishetBingo($kaart, $trekking));


// teken kaart en bewaar score
$columns = array();
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $tabelrij) {
    echo "<tr>";
    $iter = 0;
    $weggestreept = 0;
    foreach ($tabelrij as $index => $cel) {
        // bewaar nummer v/d cell
        if (in_array($cel, $trekking)) {
            if($index == $rowGreen || $index == $colGreen) {
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }else{
                echo "<td style='background:blue;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            $weggestreept++;
            $columns[$iter] += 1;
        } else {
            $columns[$iter] += 0;
            echo "<td>" . $cel . "</td>";
        }
        $iter++;
    }
    echo "<td>" . $weggestreept . "</td>";
    echo "</tr>";
}
echo "<tr>";
foreach($columns as $field){
    echo '<td>'.$field.'</td>';
}
echo "</tr>";
echo "</table>";

// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };

// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";

echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);


?>

</body>

</html>
 
Laatst bewerkt:
als u even naar mijn bewerking kijkt dan zie je enkele aanpassingen

function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol) {
} while(!ishetBingo($kaart, $trekking,$rij,$col));

de ++ gebruik je niet voor mee te werken maar wel om het visueel te brengen (in theorie is het fout deze variable aan te passen )en is enkel als voorbeeld.
Het toont aan hoe je de rij al hebt ...

if($rij!=false){
print 'RIJ'.(++$rij);//plus plus is omdat positie start met 0 en lijkt niet logish
}
if($col!=false){
print 'KOLLOM'.(++$col);
}
 
Hallo

Ik heb uw aanpassingen geïmplementeerd, en hier en daar wat toegevoegd, maar toch krijg ik nog geen rij/kolom in groen.

Dit lijkt ook impact te hebben op de trekking (see screenshot: een kolom en een rij zijn helemaal blauw geworden, en de bedoeling is dat de trekking zou stoppen als alleen een rij -of alleen een kolom- helemaal gekleurd is).

Schermafbeelding 2018-03-25 om 14.13.25.png

Zo staat de aangepaste code op dit moment:

PHP:
<!DOCTYPE html>
<html>

<head>
<title>Bingo</title>
</head>

<body>

<h2>Bingokaart waarop BINGO is gevallen</h2>
    
<?php

function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;

    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
    return $voltooid;
}


// initialiseer kaart

$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}

$trekking = array();
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while(!ishetBingo($kaart, $trekking, $rij, $col));

    

// teken kaart en bewaar score
$columns = array();
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $tabelrij) {
    echo "<tr>";
    $iter = 0;
    $weggestreept = 0;
    foreach ($tabelrij as $cel) {
        // bewaar nummer v/d cell
        if (in_array($cel, $trekking)) {
            if($Rrij){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            elseif($Rcol){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            else{
                echo "<td style='background:blue;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            $weggestreept++;
            $columns[$iter] += 1;
        } 
        else {
            $columns[$iter] += 0;
            echo "<td>" . $cel . "</td>";
        }
        $iter++;
    }
    echo "<td>" . $weggestreept . "</td>";
    echo "</tr>";
}
echo "<tr>";
foreach($columns as $field){
    echo '<td>'.$field.'</td>';
}
echo "</tr>";
echo "</table>";

    
// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };

// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";

echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);


?>

</body>

</html>
 
Laatst bewerkt:
bekijke de lijnen
$DeControlerij = false;
$DeControlecol = false;

foreach ($kaart as $rijkey => $tabelrij) {

foreach ($tabelrij as $colkey => $cel) {

if(!key_exists($iter,$columns)){
$columns[$iter]=0;
}

ook dit eens bekijken ...
if($DeControlerij!==false && $DeControlerij ==$rijkey){

dus ik plaats eerste gelijk aan false en als er een nr in komt ook als is deze 0 wordt deze juist gezet

zie het verschil met != t.o.v. !==


ps mijn php staat op errorreport ... severe waardoor ik noti... kreeg van ontbrekende variabele
bovenaan je script kan je dan ook errorreporting all zetten
PHP:
<!DOCTYPE html>
<html>
<head>
<title>Bingo</title>
</head>
<body>
<h2>Bingokaart waarop BINGO is gevallen</h2>
<?php
function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
    return $voltooid;
}
// initialiseer kaart
$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}
$trekking = array();
$DeControlerij = false;
$DeControlecol = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while(!ishetBingo($kaart, $trekking, $DeControlerij, $DeControlecol));
// teken kaart en bewaar score
$columns=[];
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $rijkey => $tabelrij) {
    echo "<tr>";
    $iter = 0;
    $weggestreept = 0;
    foreach ($tabelrij as $colkey => $cel) {
        // bewaar nummer v/d cell
        if(!key_exists($iter,$columns)){
            $columns[$iter]=0;
        }
        if (in_array($cel, $trekking)) {
            if($DeControlerij!==false && $DeControlerij ==$rijkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            elseif($DeControlecol!==false && $DeControlecol==$colkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            else{
                echo "<td style='background:blue;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            $weggestreept++;
            $columns[$iter]++;
        } 
        else {
            //$columns[$iter] += 0;
            echo "<td>" . $cel . "</td>";
        }
        $iter++;
        
    }
    echo "<td>" . $weggestreept . "</td>";
    echo "</tr>";
}
echo "<tr>";
foreach($columns as $field){
    echo '<td>'.$field.'</td>';
}
echo "</tr>";
echo "</table>";
// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };
// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";
echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);
?>
</body>
</html>
 
Laatst bewerkt:
Hallo

De code lijkt naar behoren te werken. Echter, zie ik af en toe een rij en een kolom tegelijk gestreept (zie screenshot); weet u waarom dat het geval zou zijn (zolang eentje helemaal is gekleurd, zou de trekking moeten stoppen)?

Schermafbeelding 2018-03-25 om 22.12.34.png
 
Het is juist je moet eens kijken naar het laaste getal en weet dat je dan geluk had....


dus je had twee bingo's door het laatste getal
 
Laatst bewerkt:
Dank voor je reactie :)

Hoe kan ik de code het best aanpassen, zodat er een functie komt voor het vullen van de bingokaart (en het retourneren van de gevulde bingokaart) en een tweede functie komt voor het afdrukken van de bingokaart? Ik heb in de laatste uren geprobeerd zonder success.
 
Wat heb je al geprobeerd? Misschien was je al op de goede richting.
 
Bijvoorbeeld voor deze stukje code; het is niet toegestaan om functies te gebruiken in dit moment van het spel (dus de function ishetBingo is hier niet toegestaan; de code moer aangepast worden zodat het geen functie is). Ik had geprobeerd de code aan te passen, maar ik zie veel parameters die binnen de functie staan; ik had o.a. het volgende geprobeerd, maar het lukte niet:

PHP:
//wat moet gebeuren met de parameters die oorspronkelijk in de fucntie waren?
    $Rrij=
    $Rkol=
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
    return $voltooid;

// initialiseer kaart
$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}
$trekking = array();
$DeControlerij = false;
$DeControlecol = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
} while($voltooid=false); //hier waren ook parameters; ik weet niet precies wat het hiermee moet gebeuren

Bijvoorbeeld, voor de functie die moeten komen voor 1) het vullen van de bingokaart (en het retourneren van de gevulde bingokaart) en 2) voor het afdrukken van de bingokaart; heb ik ook geprobeerd de respectieve stukjes code te verplaatsen binnen een functie ( dus functie () {....} ), zodat ik het later kon aanroepen, maar dat lukte ook niet.

Dit is echt een hele frustrerende zaak geworden; ik zou het op prijs stellen als iemand mij zou kunnen helpen.
 
Laatst bewerkt:
Aangepaste bericht: Ik heb ook geprobeerd de code uit de functie te halen en plaatsen voor de 'while', en $voltooid te gebruiken als 'while(!$voltooid);' maar dan lukte het ook niet
 
Laatst bewerkt:
Laten we het wel Nederlands houden ;)
 
In mijn laatste poging heb ik de volgende code:

PHP:
function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol) {
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
    $voltooid = false;
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
    return $voltooid;
}

veranderd naar:

PHP:
$voltooid = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
    
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
   
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $Rrij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $Rkol = $kol;   
                } 
            }
        }
    }
} while(!$voltooid);

EN toch werkt het niet, why?
 
Mijn excuse dat ik nog even op je code heb laten kijken in het idee dat je het zelf zou dien .
PHP:
$DeControlerij = false;//dus ik plaats deze variabelen boven de loop zodat deze ook te zien zijn buiten de loop
$DeControlecol = false;

$voltooid = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
    
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
   
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $DeControlerij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $DeControlecol = $kol;   
                } 
            }
        }
    }
} while(!$voltooid);
nu even commentaar geven op volgende code
PHP:
//deze code is niet echt voor beginners maar ik wouw niet volledig je code overhoop hooien 
//in het idee dat je je eigen code nog herkende.
// nu zie je '&' voor de variabele staan dat wil zeggen by reference 
//en dat wil zeggen dat de variabele die mee gegeven wordt niet in het geheugen word gecopyeert
//maar dat de variabele plaats wordt //meegegeven en zo de variabele die meegegeven word kan worden aangepast 
//Hier door kan je de variabele buiten de functie gaan benaderen 
//het is net als GOTO meer voor ervaren rotten (let wel op als de variabele grote inhoud heeft kan het geheugen gaan besparen indien je niet bij value werkt maar by reference)
function ishetBingo($tabelletje, $nummers,&$Rrij,&$Rkol)
 
Laatst bewerkt:
Hallo,

De code dat je had doorgegeven had ik al geprobeerd, en ik krijg nog een wit scherm te zien (zie screenshot en gehele code). Wat gaat er mis?

- Hoe kan ik, in twee momenten van het spel, de code veranderen naar functies? De twee momenten van het spel waarin twee functies moeten komen zijn:
1. Het vullen van de bingokaart en het retourneren van de gevulde bingokaart.
2. Het afdrukken van de bingokaart.

Code:
PHP:
<!DOCTYPE html>
<html>
<head>
<title>Bingo</title>
</head>
<body>
<h2>Bingokaart waarop BINGO is gevallen</h2>
<?php

$trekking = array();
$DeControlerij = false;
$DeControlecol = false;
 
$voltooid = false;
do {
    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    $trekking[] = $rijen;
    
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
   
    foreach($tabelletje as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {
            if(in_array($nummer, $nummers)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $DeControlerij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $DeControlecol = $kol;   
                } 
            }
        }
    }
} while(!$voltooid);
    
// initialiseer kaart
$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}

// teken kaart en bewaar score
$columns=[];
echo "<table style='border:1px solid blue;'>";
foreach ($kaart as $rijkey => $tabelrij) {
    echo "<tr>";
    $iter = 0;
    $weggestreept = 0;
    foreach ($tabelrij as $colkey => $cel) {
        // bewaar nummer v/d cell
        if(!key_exists($iter,$columns)){
            $columns[$iter]=0;
        }
        if (in_array($cel, $trekking)) {
            if($DeControlerij!==false && $DeControlerij ==$rijkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            elseif($DeControlecol!==false && $DeControlecol==$colkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            else{
                echo "<td>" . $cel . "</td>";
            }
            $weggestreept++;
            $columns[$iter]++;
        } 
        else {
            //$columns[$iter] += 0;
            echo "<td>" . $cel . "</td>";
        }
        $iter++;
        
    }
    echo "<td style='display:none;'>" . $weggestreept . "</td>";
    echo "</tr>";
}
echo "<tr>";
foreach($columns as $field){
    echo '<td style="display:none;">'.$field.'</td>';
}
echo "</tr>";
echo "</table>";
// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };
// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";
echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);
?>
</body>
</html>

Schermafbeelding 2018-04-03 om 06.32.35.png
 
Laatst bewerkt:
Is dit de oorzaak?:

Notice: Undefined variable: tabelletje in 051R3.php on line 36
Warning: Invalid argument supplied for foreach() in 051R3.php on line 36

Hoe kan ik de variable het best declareren en de 'foreach' het best aanpassen?
 
Je wilt $tabelletje doorlopen, dan moet die ook ergens bestaan als array.
 
De error van 6 april is opgelost (zie code). Nu probeer ik twee functies te plaatsen voor de volgende twee momenten van het spel (zie ook code):

1. Het vullen van de bingokaart en het retourneren van de gevulde bingokaart (deze werkt nog niet goed).
2. Het afdrukken van de bingokaart (deze wekt goed voor zover ik kan zien)

Momenteel lukt het mij niet op het spel goed te laten functioneren Waar gaat het mis?

PHP:
<!DOCTYPE html>
<html>
<head>
<title>Bingo</title>
</head>
<body>
<h2>Bingokaart waarop BINGO is gevallen</h2>
<?php

$trekking = array();
$DeControlerij = false;
$DeControlecol = false;
 
// initialiseer kaart
$kaart = array();
for ($rijen = 0; $rijen < 6; $rijen++) {
    $kaart[$rijen] = array();
    for($k = 0; $k < 6; $k++) {
        do {
            $regel = rand(($rijen + 1)*10, (($rijen + 1)*10)+9);
        } while(in_array($regel, $kaart[$rijen]));
        $kaart[$rijen][$k] = $regel;
}
}
    
$voltooid = false;
do {
    
    function vullenKaart ($rijen, $trekking, $tabelRijen, $tabelKolommen, $kaart, $rij, $kolommen, $kol, $nummer, $DeControlerij, $DeControlecol) {

    do {
        $rijen = rand(10, 69);
    } while(in_array($rijen, $trekking));
    
    $trekking[] = $rijen;
    $tabelRijen = array(0,0,0,0,0,0);
    $tabelKolommen = array(0,0,0,0,0,0);
   
    foreach($kaart as $rij => $kolommen) {
        foreach($kolommen as $kol => $nummer) {

            if(in_array($nummer, $trekking)) {
                $tabelRijen[$rij]++;
                $tabelKolommen[$kol]++;
                if($tabelRijen[$rij] == 6 ){
                  $voltooid = true;
                  $DeControlerij = $rij;  
                }
                if($tabelKolommen[$kol] == 6){
                  $voltooid = true;
                  $DeControlecol = $kol;   
                } 
            }
        }
    }
    }
    
    $vullenKaart = vullenKaart($rijen, $trekking, $tabelRijen, $tabelKolommen, $kaart, $rij, $kolommen, $kol, $nummer, $DeControlerij, $DeControlecol);
    return $vullenKaart;
    
} while(!$voltooid);

// teken kaart en bewaar score
    
function printKaart($kaart, $columns, $DeControlerij, $DeControlecol, $iter, $weggestreept, $rijkey, $colkey, $cel, $trekking) {
$columns=[];
echo "<table style='border:1px solid blue;'>";

foreach ($kaart as $rijkey => $tabelrij) {
    echo "<tr>";
    $iter = 0;
    $weggestreept = 0;
    foreach ($tabelrij as $colkey => $cel) {
        // bewaar nummer v/d cell
        if(!key_exists($iter,$columns)){
            $columns[$iter]=0;
        }
        if (in_array($cel, $trekking)) {
            if($DeControlerij!==false && $DeControlerij ==$rijkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            elseif($DeControlecol!==false && $DeControlecol==$colkey){
                echo "<td style='background:green;color:white;border:1px solid black;'>" . $cel . "</td>";
            }
            else{
                echo "<td style='border:1px solid blue;'>" . $cel . "</td>";
            }
            $weggestreept++;
            $columns[$iter]++;
        } 
        else {
            //$columns[$iter] += 0;
            echo "<td>" . $cel . "</td>";
        }
        $iter++;
        
    }
    echo "<td style='display:none;'>" . $weggestreept . "</td>";
    echo "</tr>";
}
echo "<tr>";
foreach($columns as $field){
    echo '<td style="display:none;">'.$field.'</td>';
}
echo "</tr>";
echo "</table>";
}
    
$printKaart = printKaart($kaart, $columns, $DeControlerij, $DeControlecol, $iter, $weggestreept, $rijkey, $colkey, $cel, $trekking);
print $printKaart;
    
// Bingo melding
// if (ishetBingo($kaart, $trekking)) {
//     echo '<h2>BINGO!!!</h2>';
// };
// print trekking
echo "<br />Getrokken getallen:<table><tr>";
foreach ($trekking as $nummer) {
    if (in_array($nummer, $trekking)) {
    echo "<td>" . $nummer . "</td>";
    }
}
echo "</tr></table>";
echo "<br/>Aantal getallen dat getrokken is: " . count($trekking);
?>
</body>
</html>
 
Beste

Ik stel voor dat je nog eens de theorie doorneemt

op lijn 29 doe je iets wat niet kan
Dus je kan nooit meerdere keren een functie gaan aanmaken zie loop do ...
dus

op lijn 58 vul je dan niet alle variabelen in (variabelen bestaan niet)...

op lijn 35 doe je iets raar je gaat dus een parameter onmiddelijk gaan overschrijven (nutteloos dat je dan een parameter mee geeft)

notificaties zie
Notice: Undefined variable: tabelRijen
Notice: Undefined variable: tabelKolommen
Notice: Undefined variable: rij
Notice: Undefined variable: kolommen
Notice: Undefined variable: kol
Notice: Undefined variable: nummer

dit zijn voorlopig de belangerijkste
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan