Voetbalspel - Wedstrijdschema

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Pagina: 1 2 volgende »

Jorian

jorian

24/03/2008 19:57:00
Quote Anchor link
Ik ben nog steeds bezig met een voetbal management spel.
Ik ben nu bezig met een pagina die het wedstrijdschema voor een server maakt. Maar het lukt me echt niet.
Heeft iemand misschien een idee hoe je dit kan maken?
Elke wedstrijd moet in een andere week worden gespeeld en het moet afwisselend zijn, 1 wedstrijd thuis, 1 uit, etc..
Het moet volledig willekeurig gegenereerd worden.
Gewijzigd op 01/01/1970 01:00:00 door Jorian
 
PHP hulp

PHP hulp

23/12/2024 17:24:51
 
Jesper Diovo

Jesper Diovo

24/03/2008 20:05:00
Quote Anchor link
Waar is je foutafhandeling? Or die() is een lelijke, lomp functie die ruw tekst op je scherm zet. Je doodt geen pagina's/tekst/errors!

Op regel 24 zou ik een while loop zetten die checkt of $rand-team niet al geweest is. Misschien dat je gebruikte teams daarom beter in een array kunt zetten. Overigens zou ik ook nog ergens een check zetten of die wedstrijd niet al gespeeld is.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
Jorian

jorian

24/03/2008 20:09:00
Quote Anchor link
Die errors, ik heb in mn config.php een foutafhandeling staan.

Oja dit was ik nog vergeten er bij te zetten, de functie deleteItem($array, $item) haalt het gebruikte id van een team uit de array, dus dat word allemaal al gedaan.

Maar ehm, het genereren van het schema werkt allemaal, dus daar hoef ik geen antwoord op. Ik wil alleen weten hoe ik kan doen dat elke wedstrijd in een andere week word gespeeld, en elke week 9 wedstrijden worden gespeeld.
 
Jesper Diovo

Jesper Diovo

24/03/2008 20:16:00
Quote Anchor link
Quote:
Dat zeg team1 niet 2x moet spelen in 1 week (1 dag).

Daar versta ik toch iets heel anders onder dan wat je nu vertelt?

Uitrekenen hoeveel weken er nodig zijn. Daarna een for-loop maken waarin het maximum het aantal weken dat nodig is is. In die for-loop voer je de query uit, met als week de variabele die je in de for-loop gebruikt.
 
Jorian

jorian

24/03/2008 20:18:00
Quote Anchor link
Ja maar hoe kan je ooit allemaal checken of dat team al een x die week gespeeld heeft?
 
Jesper Diovo

Jesper Diovo

24/03/2008 20:29:00
Quote Anchor link
Dat zei ik net. Gebruikte teams in een array zetten, op regel 24 een while-loop die kijkt of het team al gebruikt is die week. Zolang dat zo is, een nieuw team randomeren.
 
Jorian

jorian

25/03/2008 14:49:00
Quote Anchor link
Ja oke dat snap ik wel, maar met welke query kan je checken of team1 niet in die week speelt EN/OF team2 niet in die week uit/thuis heeft gespeeld?
 
Jesper Diovo

Jesper Diovo

25/03/2008 15:28:00
Quote Anchor link
Je hebt daar geen query voor nodig. Je voegt ieder team dat je gebruikt na de random toe aan een vooraf aangemaakte array. Tijdens het randomeren kijk je of het random getal niet al in de array zit. Zo ja, maak je een nieuw random getal. Zo nee, dan slaat hij de while-loop over, en gebruikt dat random getal.

Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$aArray
= array(1,2,3,4);
$aRand = rand(0, 10);
while(in_array($aRand, $aArray) === true) {
  $aRand = rand(0, 10);
}

$aArray[] = $aRand;
?>
 
Aaa Trump

aaa Trump

25/03/2008 15:41:00
Quote Anchor link
Tip voor alle textbased game makers:

OOP
 
Jorian

jorian

25/03/2008 16:33:00
Quote Anchor link
Djemo schreef op 25.03.2008 15:28:
Je hebt daar geen query voor nodig. Je voegt ieder team dat je gebruikt na de random toe aan een vooraf aangemaakte array. Tijdens het randomeren kijk je of het random getal niet al in de array zit. Zo ja, maak je een nieuw random getal. Zo nee, dan slaat hij de while-loop over, en gebruikt dat random getal.

Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$aArray
= array(1,2,3,4);
$aRand = rand(0, 10);
while(in_array($aRand, $aArray) === true) {
  $aRand = rand(0, 10);
}

$aArray[] = $aRand;
?>

Dit is me nou ongeveer gelukt, maar hoe kan ik alle weken waarin een team al heeft gespeeld, opslaan voor elk team in een array?
Want als ik het zo doe: $aWeek[$i] = array();
Dan kan ik hem niet gebruiken in de functie in_array()..
 
Jorian

jorian

25/03/2008 19:01:00
Quote Anchor link
Ik ben nou ongeveer 2 a 3 dagen bezig geweest met dit script, maar ik kom er maar niet uit. Kan iemand misschien zo'n script voor me maken? Ik krijg die teams wel voor elkaar, maar om elke wedstrijd in een andere week te zetten lukt echt niet..
 
Robert Deiman

Robert Deiman

25/03/2008 20:01:00
Quote Anchor link
@Robin

Dat komt de onderhoudbaarheid wel ten goede. Maar OOP voor een beginnend PHP-er lijkt me nogal wat ver gaan. Het zijn wel leuke oefenprojecten, maar bij een serieus project zou ik inderdaad wel OOP gebruiken.

Daarnaast kan je met MySQL ook kijken of er meer dan 6 dagen (op dag 7 mag je wel weer) zijn verstreken sinds de laatste wedstrijd. Dat is het meest gemakkelijke.
 
Aaa Trump

aaa Trump

25/03/2008 20:05:00
Quote Anchor link
@Robert

Voor beginners is het inderdaad wat lastig, maar als je eenmaal de basis onder de knie hebt kan je er goed aan beginnen. :D
 
Jorian

jorian

26/03/2008 15:51:00
Quote Anchor link
Ik denk dat het met mijn script niet gaat lukken, dus ik verander de vraag even:
Hoe kan je een wedstrijdschema met weken willekeurig laten genereren?
 
Jesper Diovo

Jesper Diovo

26/03/2008 16:00:00
Quote Anchor link
De simpelste oplossing (volgens mij) is een for-loop laten wandelen die de 'week' voorstelt (reken dus eerst uit wat de laatste week is). In deze loop haal je alle teams uit de database, en ga je daarmee wedstrijden maken.
Je hebt dus een team en je randomeert een team. Beide teams zet je in een array, zoals ik eerder uit heb gelegd (ook weer dat stukje met die while, enz). Alleen nu voeg je nog een stukje toe aan de while-loop. Het zou nu zo moeten worden: Zolang $aRand in $gebruikteteams (array) zit of de wedstrijd "$aTeam - $aRand" in de database zit, een nieuwe $aRand genereren.

Hierna zet je de wedstrijd met de variabelen uit de eerste for-loop (als week) in de database :). Eerst uitschrijven hoe je je script wilt gaan opbouwen helpt altijd erg goed bij het schrijven ervan.
 
Mark PHP

Mark PHP

26/03/2008 16:18:00
Quote Anchor link
Toevallig heb ik laatst zo'n script (class) gemaakt. Deze staat hier.

Zoals in de comment van de class staat, is het algoritme niet van mezelf, deze kan hier gevonden worden.
Er wordt dus geen random greep uit een array gedaan, maar met modulo gewerkt en vervolgens naar om en om uit en thuis wedstrijden veranderd (voor zover mogelijk).
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Jorian

jorian

26/03/2008 18:42:00
Quote Anchor link
@Aqirre: Ik wil het liefst zelf alle scripts maken, maar die van jou snap ik niet echt veel van..

@Djemo: Ik heb ongeveer gedaan wat je zei, alleen nu krijg ik dus een oneindige-loop omdat hij geen open weken meer kan vinden, dit is mn script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
$title
= 'Wedstrijdschema';
include 'header.php';
include 'safe.php';

$sQuery = 'DELETE FROM `matches`';
$iResult = mysql_query($sQuery);
$sQuery1 = 'SELECT * FROM teams WHERE serverID=1';
$iResult1 = mysql_query($sQuery1);
while($aObject1 = mysql_fetch_object($iResult1)) {
    $aTeams[] = $aObject1->name;
}

$aTeamsUsed = array();
$aWeeksUsed1 = array();
$aWeeksUsed2 = array();
$iTeams = (sizeof($aTeams)-1);
$iWeeks = $iTeams;

for($i = 0; $i < $iTeams+1; $i ++) {
    $iTeam1 = $i;
    $aTeamsUsed[] = $i;

    $sQuery2 = 'SELECT week FROM `matches` WHERE team1="' . $aTeams[$iTeam1] . '" OR team2="' . $aTeams[$iTeam1] . '"';
    $iResult2 = mysql_query($sQuery2);
    while($aObject2 = mysql_fetch_object($iResult2)) {
        $aWeeksUsed1[] = $aObject2->week;
    }


    for($ii = 0; $ii < $iWeeks; $ii ++) {
        $iRandom = rand(0, $iTeams);
        while(in_array($iRandom, $aTeamsUsed)) {
            $iRandom = rand(0, $iTeams);
        }

        $iTeam2 = $iRandom;

        $sQuery3 = 'SELECT week FROM `matches` WHERE team1="' . $aTeams[$iTeam2] . '" OR team2="' . $aTeams[$iTeam2] . '"';
        $iResult3 = mysql_query($sQuery3);
        while($aObject3 = mysql_fetch_object($iResult3)) {
            $aWeeksUsed2[] = $aObject3->week;
        }


        $iRandom2 = rand(0, ($iWeeks * 2));
        while(in_array($iRandom2, $aWeeksUsed1) || in_array($iRandom2, $aWeeksUsed2)) {
            $iRandom2 = rand(0, ($iWeeks * 2));
        }

        $iWeek = $iRandom2;

        $aTeamsUsed[] = $iRandom;
        $sQuery4 = 'INSERT INTO `matches` (team1, team2, week) VALUES ("' . $aTeams[$iTeam1] . '", "' . $aTeams[$iTeam2] . '", "' . $iWeek . '")';
        $iResult4 = mysql_query($sQuery4);
    }


    unset($aTeamsUsed);
    unset($aWeeksUsed1);
    unset($aWeeksUsed2);
}

echo 'Wedstrijden gegenereerd.';

include 'bottom.php';
?>
 
Jesper Diovo

Jesper Diovo

26/03/2008 19:09:00
Quote Anchor link
Ik zou eerder als eerste een for laten lopen met de weken. Maar dat is jouw keuze ;).

Note: kun je ook het team '0' en de week '0' hebben?
 
Jorian

jorian

26/03/2008 19:25:00
Quote Anchor link
Ja dat kan.
 
Jorian

jorian

27/03/2008 13:22:00
Quote Anchor link
Iemand?
 
Berry Kloes

Berry Kloes

27/03/2008 14:59:00
Quote Anchor link
als je standaardwaarde '0' is niet dan moet je die laten beginnen op -1 dan kan het namelijk wel! anders begint hij bij 1 omdat je ++ doet en dan de waarde meegeeft. zou je bijvoorbeel eerst de waarde geven zoals :

$nr = '0'
if blaat --> then name = '$nr' and $nr ++

dan zou het wel werken omdat je eerst de waarde geeft. (dus de eerste keer de standaard waarden) en dan pas de waarde vergroot.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.