Jump to content
Sign in to follow this  
playjacob

Help with bingo card makeing program

Recommended Posts

For the past days i've been working on a program to make bingo cards, but now i've have a problem.

The problem is that i only want 5 numbers on each row and they sould be spred randomly.

To see the final result just open up Index.html after you've run the code.

Look at the comments in the code for more info.

Global $DBFile = @ScriptDir&"\Cards.txt"
Global $NumToGenerate = 250
Global $Rnd[3]
Global $NumPrVRow = ""
Global $FillSpace[27]
Global $Row[3]
Global $Output
Global $Mats[$NumToGenerate]
Global $NumbersOnRow[3]
;Create Database File With Mats
For $i = 1 To $NumToGenerate
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$a = ""
For $i2 = 0 To 26
  $FillSpace[$i2] = 0
Next
$i2 = ""
$i3 = ""
$i4 = ""
$NumPrVRow = ""
For $i2 = 0 To 2
  While 1
   $Rnd[$i2] = Random(1,9,1)
   $Continue = True
   For $i3 = 0 To $i2
    If ($Rnd[$i2] = $Rnd[$i3]) And ($i2 <> $i3) Then $Continue = False
   Next
   If $Continue = True Then ExitLoop
  WEnd
Next
For $i2=1 To 9
  $a = 2
  For $i3 = 0 To 2
   If $Rnd[$i3] = $i2 Then $a = 1
  Next
  $NumPrVRow &= $a
Next
For $i2 = 0 To 2
  $NumbersOnRow[$i2] = 0
Next
For $i2 = 1 To 9
  $OldRnd2 = ""
  For $i3 = 1 To StringMid($NumPrVRow, $i2,1)
   While 1
    $Rnd2 = Random(1,3,1)
    ;I tryed to add this line.
    $NumbersOnRow[$Rnd2-1] += 1
    $Continue = True
    For $i4 = 0 To $i2
     ;And change This
     ;If $Rnd2 = $OldRnd2  Then $Continue = False
     ;To
     If ($Rnd2 = $OldRnd2) Or ($NumbersOnRow[$Rnd2-1] > 5) Then $Continue = False
    Next
    $OldRnd2 = $Rnd2
    If $Continue = True Then ExitLoop
    ;And Then Also Add This Line:
    $NumbersOnRow[$Rnd2-1] -= 1
    ;But i still could'nt get it to work.
   WEnd
   $FillSpace[$Rnd2*9-9+$i2-1] = 1
  Next
Next
$Full = ""
For $i2 = 0 To 2
  $Row[$i2] = ""
  For $i3 = 1 To 9
   If $FillSpace[($i2+1)*9-9+$i3-1] = 1 Then
    If $i3 = 1 Then
     $Row[$i2] &= Random(1,9,1)&";"
    Else
     $Rnd3 = Random($i3&0,$i3&9,1)
     $Row[$i2] &= $Rnd3-10&";"
    EndIf
   Else
    $Row[$i2] &= ";"
   EndIf
  Next
  IniWrite($DBFile, $i, $i2+1, StringTrimRight($Row[$i2],1))
  $Full &= $Row[$i2]
Next
IniWrite($DBFile, $i, "f", $Full)
Next
$Start = '<html>'&@CRLF&'<head>'&@CRLF&'<style type=text/css>'&@CRLF&'    body { font-family: Verdana, Arial, Helvetica;}'&@CRLF&'    tr { text-align: center; }'&@CRLF&'    .c { padding-top: 35px; padding-bottom: 5px;'&@CRLF&'      border-bottom: 2px dashed black; }'&@CRLF&'    .s { padding-top: 5px; padding-bottom: 35px; }'&@CRLF&'    .c, .s { font-size: 8px;}'&@CRLF&'    .pb { page-break-before: always; }'&@CRLF&'    .rn { font-family: Verdana, Arial, Helvetica; font-size: 13px; border: 2px solid black;}'&@CRLF&'    .pn { font-family: Verdana, Arial, Helvetica; font-size: 18px; text-align: center;}'&@CRLF&'</style>'&@CRLF&'</head>'&@CRLF&'<body onLoad="print();">'&@CRLF&@CRLF&@CRLF
$End = @CRLF&'</body></html>'&@CRLF
$PageBreak = 1
For $i = 0 To $NumToGenerate-1
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$Mats[$i] = '<div class=pn>Pladenummer: '&$i+1&'F</div>'&@CRLF&'<table width=90% border=1 cols=10 align=center cellspacing=0'&@CRLF&'style="border-collapse: collapse" cellpadding=10> <tr>'
For $i2 = 1 To 3 ;Change To ABC
  $Mats[$i] &= '<tr>'&@CRLF
  $Split = StringSplit(IniRead($DBFile, $i+1, $i2, ""),";")
  For $i3 = 1 To 9
   $Mats[$i] &= '<td>'&$Split[$i3]&'</td>'&@CRLF
  Next
  $Mats[$i] &= '<td class=rn>'&ConvertToABCAndAddDots($i+1&$i2)&'</td>'&@CRLF
  $Mats[$i] &= '</tr>'&@CRLF
Next
$Mats[$i] &= '</table><div class=c>Made using The Bingo Program by Jacob Bom Andersen</div></br>'&@CRLF
If $PageBreak = 4 Then $Mats[$i] &= '<div class=pb></div>'
$PageBreak += 1
Next
$Output = $Start
For $i = 0 To $NumToGenerate-1
$Output &= $Mats[$i]
Next
$Output &= $End
FileDelete("Index.html")
FileWrite("Index.html", $Output)
Func ConvertToABCAndAddDots($ToConvert)
$Split2 = StringSplit($ToConvert, "")
$Out = ""
For $b = 1 To $Split2[0]
  If $b = $Split2[0] Then
   $Out &= Chr($Split2[$b]+64)
  Else
   $Out &= $Split2[$b]&Chr(183)
  EndIf
Next
Return $Out
EndFunc

Ps. The Database File that it is also makeing is for an other program that i've made to play bingo, witch is then also able to check is someone has bingo.

Sorry for my bad english.

Share this post


Link to post
Share on other sites

To be honest, I would have to study that code for an hour to begin to see what is going on.

Only advice I can offer at this time is to make use of functions to make your code more modular, readable

and easier to debug.

Share this post


Link to post
Share on other sites

Just glancing over your code, I don't see you following the "rules" for bingo.

Here's what you need to make sure you implement.

There are 5 columns and 5 rows on each card. The columns are labeled B, I, N, G, and O. Each column can only contain a specific set of numbers.

B (1-15), I (16-30), N (31-45), G (46-60), O (61-75)

Also, the numbers in each column must be unique (you cannot have two or more of the same number on any card), but can appear in any order in their respective column.


Whenever someone says "pls" because it's shorter than "please", I say "no" because it's shorter than "yes".

Share this post


Link to post
Share on other sites

@JohnQSmith

That only applies to BINGO in the US and parts of Canada, he's making cards for European BINGO games which are different. I had to look that one up myself yesterday. ;)


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

he's making cards for European BINGO games which are different

Holy crap, will ya look at that! I didn't know there were different kinds. Thanks for the info. Learned something new ;) which means it's a good day.

Whenever someone says "pls" because it's shorter than "please", I say "no" because it's shorter than "yes".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By adjist
      Hello all! 
       
      Getting this error :
      (22) : ==> Variable used without being declared.: if $vNumber = 0 Then if ^ ERROR  
      But I'm sure I have defined the variable, as in the top of my script has 
      Global $vNumber = 0  
      How would I go about fixing this?
       
    • By PeterVerbeek
      This topic give you access to an AutoIt functions library I maintain which is called PAL, Peter's AutoIt Library. The latest version 1.19 contains 194 functions divided into these topics:
      window and screen mouse and GUI GUI controls logics and mathematics string, xml string and file string dialogues and progress bars data lists: lists, stacks, shift registers and key maps (a.ka. dictionaries) miscellaneous: logging/debugging, process and system info A lot of these functions were created in the development of Peace, Peter's Equalizer APO Configuration Extension, which is a user interface for the system-wide audio driver called Equalizer APO.
    • By topgundcp
      Hi, 
      This is my very first post in this forum and am also new with Autoit programming so be easy on me.
      Below is the code that I am trying to get the index of the item selected. No problem getting the text.
      Case $listEdition   ; handle of the list             local $index=0             $item=GUICTRLRead($listEdition)    ; This will return the text in the list             ; ==============   The loop below always fails  ==================             ; Meaning _GUICtrlListView_GetItemSelected($listEdition, $i) always return FALSE. WHY ???????              For $i = 0 To $editionArray[0] - 1   ; The content of the list in an array where editionArray[0] contains total count of items                 If _GUICtrlListView_GetItemSelected($listEdition, $i) Then                     $index = $i                     exitloop                 EndIf              Next              ;===================================================             ConsoleWrite( "Select Edition:     " & $item & "  index: " & $index & @CR) ....... Please look at the comments in the code & the pix attached.
      _GUICtrlListView_GetItemSelected($listEdition, $i) always returns FALSE.
      Another problem is on the list. It also populate  the total count of items from the Array. How can I skip this item from populating to the list ?.
      Please advise and thanks

    • By MarkIT
      Hi AutoIT masters,
      Good day! Sorry to have bothered this forum but we really need help. We are working on an automation project that is running on VDI server. The BOTS are in .exe are running fine until AV detected them and deleted the files. The files were re-compiled and AV kept on deleting them. The copy of the .exe BOT deleted were sent to Symantec for whitelisting. After whitelisting, it is no longer deleted but no longer working as designed (showing Line script error). We checked the scripts and there were no issues since we run it using SciTE editor and it performed the desired task. Good thing we found on this thread the solution using .a3x and the BOTS worked fine and no longer deleted. Now, the problem is they are asking why the BOTS won't run in .EXE and what is the reason behind Symantec AV deleting them. We raised a case with Symantec but they cannot provide further information as they are always seeing the file as "False Positive". We even tested with Symantec turned off and those .EXE files are working fine, however, after re-enabling, it got deleted.
      Just seeking help on how to better convince them that it is really Symantec causing the issue and the .a3x file.
    • By n0ktar
      is it possible to make a wall chams in rainbow six siege using autoit scripts? tell me please and how . 
×
×
  • Create New...