New text-based cricket simulation software help & advice.

Anyone interested in creating a Tournament fixtures program? Any language...output to notepad. I'm sure most league managers will be able to use it :yes The code can also be used (with the creators permission & credit given) in one a new or existing text based cricket simulators.
 
Anyone interested in creating a Tournament fixtures program? Any language...output to notepad. I'm sure most league managers will be able to use it :yes The code can also be used (with the creators permission & credit given) in one a new or existing text based cricket simulators.
Why not :)
 
Anyone interested in creating a Tournament fixtures program? Any language...output to notepad. I'm sure most league managers will be able to use it :yes The code can also be used (with the creators permission & credit given) in one a new or existing text based cricket simulators.
What exactly do you need in a tournament fixtures program?
 
What exactly do you need in a tournament fixtures program?

Something similar. But specifically for cricket.

Tournament Scheduler - Easily create a round robin tournament schedule
Free Round Robin Tournament Schedule Generator
Cricket Schedule Maker - Free cricket Scheduler



A group tournament, league, division or conference involves all competitors playing a number of fixtures (again, a fixture is one name for a tournament-match that determines who, out of two or three or more, will advance; a fixture may consist of one or more game-matches between competitors).
 
Something similar. But specifically for cricket.

Tournament Scheduler - Easily create a round robin tournament schedule
Free Round Robin Tournament Schedule Generator
Cricket Schedule Maker - Free cricket Scheduler



A group tournament, league, division or conference involves all competitors playing a number of fixtures (again, a fixture is one name for a tournament-match that determines who, out of two or three or more, will advance; a fixture may consist of one or more game-matches between competitors).
I can create that in about 30 mins... Too bad I cant access my PC at the moment
 
Even I can try it. 15 mins and there you go with the fixtures generator...
 
Source code?
None available. Will have to design from scratch.

Source code?
See if you can use attached.

Code:
<?php
/*
 * This code owes an enormous debt to
 * http://www.barrychessclub.org.uk/berger2001.htm
 */

function main() {
    ?>
    <style>
    input, textarea { display: block; margin-bottom: 1em; }
    label { font-weight: bold; display: block; }
    </style>
    <h1>Fixtures Generator</h1>
    <p>This page is part of <a
    href="http://bluebones.net/2005/05/league-fixtures-generator/">bluebones.net</a>.</p>
    <?php
    // Find out how many teams we want fixtures for.
    if (! isset($_GET['teams']) && ! isset($_GET['names'])) {
        print get_form();
    } else {
        # XXX check for int
        print show_fixtures(isset($_GET['teams']) ?  nums(intval($_GET['teams'])) : explode("\n", trim($_GET['names'])));
    }
}

function nums($n) {
    $ns = array();
    for ($i = 1; $i <= $n; $i++) {
        $ns[] = $i;
    }
    return $ns;
}

function show_fixtures($names) {
    $teams = sizeof($names);

    print "<p>Fixtures for $teams teams.</p>";

    // If odd number of teams add a "ghost".
    $ghost = false;
    if ($teams % 2 == 1) {
        $teams++;
        $ghost = true;
    }
    
    // Generate the fixtures using the cyclic algorithm.
    $totalRounds = $teams - 1;
    $matchesPerRound = $teams / 2;
    $rounds = array();
    for ($i = 0; $i < $totalRounds; $i++) {
        $rounds[$i] = array();
    }
  
    for ($round = 0; $round < $totalRounds; $round++) {
        for ($match = 0; $match < $matchesPerRound; $match++) {
            $home = ($round + $match) % ($teams - 1);
            $away = ($teams - 1 - $match + $round) % ($teams - 1);
            // Last team stays in the same place while the others
            // rotate around it.
            if ($match == 0) {
                $away = $teams - 1;
            }
            $rounds[$round][$match] = team_name($home + 1, $names)
                . " v " . team_name($away + 1, $names);
        }
    }

    // Interleave so that home and away games are fairly evenly dispersed.
    $interleaved = array();
    for ($i = 0; $i < $totalRounds; $i++) {
        $interleaved[$i] = array();
    }
    
    $evn = 0;
    $odd = ($teams / 2);
    for ($i = 0; $i < sizeof($rounds); $i++) {
        if ($i % 2 == 0) {
            $interleaved[$i] = $rounds[$evn++];
        } else {
            $interleaved[$i] = $rounds[$odd++];
        }
    }

    $rounds = $interleaved;

    // Last team can't be away for every game so flip them
    // to home on odd rounds.
    for ($round = 0; $round < sizeof($rounds); $round++) {
        if ($round % 2 == 1) {
            $rounds[$round][0] = flip($rounds[$round][0]);
        }
    }
    
    // Display the fixtures       
    for ($i = 0; $i < sizeof($rounds); $i++) {
        print "<p>Round " . ($i + 1) . "</p>\n";
        foreach ($rounds[$i] as $r) {
            print $r . "<br />";
        }
        print "<br />";
    }
    print "<p>Second half is mirror of first half</p>";
    $round_counter = sizeof($rounds) + 1;
    for ($i = sizeof($rounds) - 1; $i >= 0; $i--) {
        print "<p>Round " . $round_counter . "</p>\n";
        $round_counter += 1;
        foreach ($rounds[$i] as $r) {
            print flip($r) . "<br />";
        }
        print "<br />";
    }
    print "<br />";

    if ($ghost) {
        print "Matches against team " . $teams . " are byes.";
    }
}

function flip($match) {
    $components = split(' v ', $match);
    return $components[1] . " v " . $components[0];
}

function team_name($num, $names) {
    $i = $num - 1;
    if (sizeof($names) > $i && strlen(trim($names[$i])) > 0) {
        return trim($names[$i]);
    } else {
        return $num;
    }
}

function get_form() {
    $s = '';
    $s = '<p>Enter number of teams OR team names</p>' . "\n";
    $s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n";
    $s .= '<label for="teams">Number of Teams</label><input type="text" name="teams" />' . "\n";
    $s .= '<input type="submit" value="Generate Fixtures" />' . "\n";
    $s .= '</form>' . "\n";

    $s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n";
    $s .= '<div><strong>OR</strong></div>' . "\n";
    $s .= '<label for="names">Names of Teams (one per line)</label>'
        . '<textarea name="names" rows="8" cols="40"></textarea>' . "\n";
    $s .= '<input type="submit" value="Generate Fixtures" />' . "\n";
    $s .= "</form>\n";
    return $s;
}

main();

?>
 

Attachments

  • League_Fix2007777202006.zip
    8.9 KB · Views: 2
Last edited:
Will have to get VS otherwise its easy. Will good polishes it won't take more than an hour. But I back out for now.
 
I can give a go. I can create a website that can be ported to an app for on the go fly with desktop application. If anyone wants it lets talk about it
 
In my first attempt at making the web based simulator, I had run into server limits with the hosting provider blocking my Ajax requests after a certain number of requests. Since I was making one Ajax request for each delivery bowled in a single request, I guess I was hitting the allowed number of requests per second if there were multiple persons accessing the webpage.

Any tips on how to go about simulating a delivery in such a case? My v1 of the simulator was purely client side (i.e. Javascript) but since I needed to implement new features in it, I had to involve service side aspect to it too. However, that meant Ajax coming into picture and I seem to have a hit roadblock now.
 

Users who are viewing this thread

Top