Jump to content

Shane_N

New Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by Shane_N

  1. PS the output from my changes i tried above can be viewed here: http://culmstocklights.com/bingo-dev.php as you can see it simply creates extra rows with sequesnced numbers 

     

    this is generated byu the following code: 

    <?php
    	/*
    		Random bingo Generator - by Shane Nelson
    	*/
    
    	DEFINE('BR', "<br />\n");
    	
    	$number_of_cards = 6; // the amount of unique cards to generate. don't make too many!
    
    	$columns = array(
    		range(1,9),
    		range(10,19),
    		range(20,29),
    		range(30,39),
    		range(40,49),
    		range(50,59),
    		range(60,69),
    		range(70,79),
    		range(80,89),
    		range(90,99)
    	);
    
    	$bingo_cards = array();
    	$card_hashes = array();
    	$i = 0;
    	
    	/* GENERATE THE CARDS */
    	while($i < $number_of_cards) {
    		$bingo_card = array();
    
    		for($j=0; $j<5; $j++) {
    			$random_keys = array_rand($columns[$j], 9);
    			$random_values = array_intersect_key($columns[$j], array_flip($random_keys)); // http://stackoverflow.com/a/18047331/3625228
    			$bingo_card = array_merge($bingo_card, $random_values);
    		}
    
    		// generate a unique hash for this card and compare it to the ones we already have
    		$card_hash = md5(json_encode($bingo_card)); // or whatever hashing algorithm is preferred
    
    		if(!in_array($card_hash, $card_hashes)) {
    			$bingo_cards[] = $bingo_card;
    			$card_hashes[] = $card_hash;
    			$i += 1;
    		}
    
    		if($i > 10000) break; // safety exit
    	}
    
    	/* OUTPUT, if needed (output with monospace font). could be made into an html table. */
    	foreach($bingo_cards as $card) {
    		for($k=0; $k<(sizeof($card)/5); $k++) {
    			echo(str_pad($card[$k], 2, ' ', STR_PAD_LEFT).' | ');
    			echo($card[$k+5].' | ');
    			echo($card[$k+10].' | ');
    			echo($card[$k+15].' | ');
    			echo($card[$k+20].BR);
    			if($k < 4) echo(str_repeat('-', 22).BR);
    		}
    		echo(BR.BR);
    	}
    
    ?>

     

  2. gw1500se, thank you for your repsonse - i was hoping that given the non commecial - comunity nature of this request that your answer may have been a little more charitable, im a complete beginner to PHP so really dont understand the code. That said i have tried what you suggested already I spotted the: 

    $columns = array(
    		range(1,15),
    		range(16,30),
    		range(31,45),
    		range(46,60),
    		range(61,90)
    	);

    part and expanded this to 9 'ranges' with the number outputs i was looking for i then changed 

    $random_keys = array_rand($columns[$j], 5);

    to 

    $random_keys = array_rand($columns[$j], 9);

    hoping that would solve my problem however the output didnt match my expecations i suspect thats becuase the output is driven from here: 

    foreach($bingo_cards as $card) {
    		for($k=0; $k<(sizeof($card)/5); $k++) {
    			echo(str_pad($card[$k], 2, ' ', STR_PAD_LEFT).' | ');
    			echo($card[$k+5].' | ');
    			echo($card[$k+10].' | ');
    			echo($card[$k+15].' | ');
    			echo($card[$k+20].BR);
    			if($k < 4) echo(str_repeat('-', 22).BR);
    		}
    		echo(BR.BR);

    however thats so far away from my basic HTML knowledge that i cant even begin to see what i might change here to fix it! 

  3. Hi All, im a beginner so please bear with me - as part of teh COVID-19 response we have been running a little free bingo night for our local village the numbers are called on facebook live on a saturday night and the village join in for a bit of fun, its taken off well and were finding that issuing the tickets is taking all day so were trying to simplify it - Ive got half way there with a peice of code i found online - but i cant quite get 'the whole way'! Wouldbe greatful if someone could helpo with a few issues! 

    <?php
    
    
    	DEFINE('BR', "<br />\n");
    	
    	$number_of_cards = 6; // the amount of unique cards to generate. don't make too many!
    
    	$columns = array(
    		range(1,15),
    		range(16,30),
    		range(31,45),
    		range(46,60),
    		range(61,90)
    	);
    
    	$bingo_cards = array();
    	$card_hashes = array();
    	$i = 0;
    	
    	/* GENERATE THE CARDS */
    	while($i < $number_of_cards) {
    		$bingo_card = array();
    
    		for($j=0; $j<5; $j++) {
    			$random_keys = array_rand($columns[$j], 5);
    			$random_values = array_intersect_key($columns[$j], array_flip($random_keys)); // http://stackoverflow.com/a/18047331/3625228
    			$bingo_card = array_merge($bingo_card, $random_values);
    		}
    
    		// generate a unique hash for this card and compare it to the ones we already have
    		$card_hash = md5(json_encode($bingo_card)); // or whatever hashing algorithm is preferred
    
    		if(!in_array($card_hash, $card_hashes)) {
    			$bingo_cards[] = $bingo_card;
    			$card_hashes[] = $card_hash;
    			$i += 1;
    		}
    
    		if($i > 10000) break; // safety exit
    	}
    
    	/* OUTPUT, if needed (output with monospace font). could be made into an html table. */
    	foreach($bingo_cards as $card) {
    		for($k=0; $k<(sizeof($card)/5); $k++) {
    			echo(str_pad($card[$k], 2, ' ', STR_PAD_LEFT).' | ');
    			echo($card[$k+5].' | ');
    			echo($card[$k+10].' | ');
    			echo($card[$k+15].' | ');
    			echo($card[$k+20].BR);
    			if($k < 4) echo(str_repeat('-', 22).BR);
    		}
    		echo(BR.BR);
    	}
    
    ?>

    This code does what i need - sort of but creates a grid / table /array (?) thats 5 rows / 5 columns - what i would like to do is replciate (as close as possible) the tickets we have been sending out for the last few weeks 

    these are 3 rows per ticket and 9 columns with the numbers 1-9 in C1, 10-19 in C2, 20-29 in c3 etc tec this makes it easy for older users to find the numbers while they are been called - see example below 

    So far ive achieved this: http://culmstocklights.com/bingo.php each user visiting the page is presented with 3 Games (Green Pink and Brown) and 6 sets of numbers in each game (thats how we do it at the moment) 

    Im 75% of the way there just need to get this to 3 rows and 9 columns per game and if possible randomly add the blanks. 

    Any help would be massivly appreciated! Thanks in advance 

    bingoticket.JPG

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.