Shane_N
-
Posts
4 -
Joined
-
Last visited
Posts posted by Shane_N
-
-
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); } ?>
-
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!
-
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
PHP Community Bingo
in PHP Coding Help
Posted
Kicken - thank you for taking the time to help - ill have a play with you you have provided and see where it takes me - thankyou!