Site hosted by Angelfire.com: Build your free website today!
Programa gerador de cartelas de bingo
Para fazer o pragrama gerador de cartelas funcionar, você deve seguir alguns passos.

1) Crie um banco de dados com o nome de cartelas.dbf e com a seguinte estrutura.
numero  caracter  50

2) Abra um editor de texto qualquer, copie os códigos a seguir e salve o arquivo como bingo.prg, depois é só compilar.

local h,x,z,b,c,cartelas,wnumero,fez,ant,y
clear
if ! file('cart.ntx')
use cartelas
index on numero to cart
endif


close all


use cartelas index cart new


mat:={}


// gerando matriz de dezenas


for x:=1 to 75
aadd(mat,poezero(ltrim(str(x))))
next x


mat:=mexe(mat,10) // mexendo inicialmente
mat:=mexe2(mat,10) // mexe com outro algoritimo


cartelas:=80 // numero de cartelas a serem geradas


// Gerando os numeros


gerou:=1
do while .t.
x:=1
do while X< cartelas
@ 20,05 say 'Gerando Cartela n§: '+ltrim(str(gerou))
matnum:={}
b:=random(75)
for y:=1 to 25 // Vinte e cinco dezenas
b:=random(75)
if b>75 .or. b <=0
b:=71
endif
do while .t.
achou:=ascan(matnum,mat[b])
if achou=0
exit
else
b++
if b > 75 .or. b <=0
b:=9
endif
endif
enddo
aadd(matnum,mat[b]) // b como base
if y % 2=0 // par
mat:=mexe2(mat,b)
else
mat:=mexe(mat,b) // mexendo mat
endif
next y
asort(matnum) // coloco matnum em ordem
wnumero:=''
for z:=1 to len(matnum)
wnumero:=wnumero+matnum[z]
next z
seek wnumero
if ! found()
x++
gerou++
append blank
replace numero with wnumero
endif
enddo
clear
alert('Cartelas Geradas !')
quit
enddo


*----------------------------------------------------------------------
function mexe(mat,base)
local z,x,refe
// Funcao para embraralhar a matriz de numeros


z:=random(75)


for x:=1 to 75
if z>75 .or. z <=0
z:=19
endif
contz:=mat[z]
contx:=mat[x]
mat[x]:=contz
mat[z]:=contx
z:=random(75)+33
if z > 75
z:=x+26
if z > 75
z:=6
endif
endif
@ 24,05 say 'Z1: '+ltrim(str(z))
next x


@ 24,0 say space(50)
return mat


*-----------------------------------------------------------------------
function mexe2(mat,base)
local z,x
// Funcao para embraralhar a matriz de numeros


z:=random(75) // item a ser mexido inicialmente


for x:=1 to 75
if z <=0 .or. z > 75
z:=1
endif
contz:=mat[z]
contx:=mat[x]
mat[x]:=contz
mat[z]:=contx
z:=random(75)-17
if z <=0
z:=x+49
if z > 75
z:=3
endif
endif
@ 24,05 say 'Z2: '+ltrim(str(z))


next x


@ 24,05 say space(50)


return mat


function poezero(nume)
if len(nume)=1
nume:='0'+nume
endif
return nume


**********************************************************************


function random(nMax)
static nSeed
local m := 100000000, b := 31415621


nSeed := iif( nSeed == NIL, seconds(), nSeed ) // init_seed()


return( int( nMax * ( ( nSeed := mod( nSeed*b+1, m ) ) / m ) ) )


Obs. O programa que você acabou de concluir, gera as cartelas em um banco de dados, para visualizar as cartelas, deve-se ter um outro programa.

Para visualização das cartelas em sua tela, copie os códigos a seguir. Abra um editor de texto qualquer copie os códigos e salve como pesquisa.prg. Agora é só compilar.
clear
// Pesquisa Cartelas de bingo

use cartelas
goto bott

col:=7
base:=1
conta:=1

do while .t.
   clear
      for x:=10 to 18 step 2
          do while .t.
               @ x,col say substr(numero,base,2)
               col:=col+3
               base:=base+2
               conta++
               if conta>5
                  conta:=1
                  col:=7
                  exit
               endif
          enddo        
      next x
      
tecla:=inkey(0)
skip -1
base:=1
if bof() .or. tecla=27
   exit
endif  

enddo       

clear
quit