JUEGO BINGO
Moderator: Rathinagiri
JUEGO BINGO
Buenas tardes a todos.
Hice un programa para jugar Bingo en casa, el código está bien, sacando números aleatorios del 1 al 75, pero tengo 2 inconvenientes
Primero que no puedo pausar el juego si alguien grita !Bingo! ... Debo detener (pausar) el juego, para revisar el cartón del jugador vs los números que han salido en la pantalla ... (creo que todos hemos jugado esto alguna vez)
Si el Bingo es correcto, termino el juego, pero si no lo es, debo continuarlo hasta que haya un ganador.
El segundo problemilla es que debe capturar la variable del número (M4) y hacer que la computadora lo lea.
En VFP sí lo hice con Createobject("SAPI.SPVoice"), pero aquí no tengo la idea de cómo hacerlo
En fin, si por lo menos pudiera pausarlo y luego hacer que continúe o termine el juego, estaré contento ... ya lo otro, tendré que afinar la garganta para cantar los números
Os dejo adjunto el ejecutable y el código también para que lo revisen y me den una manito, luego esto quedará aquí para distracción de todos nosotros.
Gracias de antemano.
Hice un programa para jugar Bingo en casa, el código está bien, sacando números aleatorios del 1 al 75, pero tengo 2 inconvenientes
Primero que no puedo pausar el juego si alguien grita !Bingo! ... Debo detener (pausar) el juego, para revisar el cartón del jugador vs los números que han salido en la pantalla ... (creo que todos hemos jugado esto alguna vez)
Si el Bingo es correcto, termino el juego, pero si no lo es, debo continuarlo hasta que haya un ganador.
El segundo problemilla es que debe capturar la variable del número (M4) y hacer que la computadora lo lea.
En VFP sí lo hice con Createobject("SAPI.SPVoice"), pero aquí no tengo la idea de cómo hacerlo
En fin, si por lo menos pudiera pausarlo y luego hacer que continúe o termine el juego, estaré contento ... ya lo otro, tendré que afinar la garganta para cantar los números
Os dejo adjunto el ejecutable y el código también para que lo revisen y me den una manito, luego esto quedará aquí para distracción de todos nosotros.
Gracias de antemano.
- Attachments
-
- BINGO.rar
- (1.08 MiB) Downloaded 266 times
-
- BINGO3.jpg (149.91 KiB) Viewed 59177 times
-
- BINGO2.jpg (135.24 KiB) Viewed 59177 times
-
- BINGO1.jpg (145.58 KiB) Viewed 59177 times
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: JUEGO BINGO
hola es asi
Code: Select all
#include <hmg.ch>
Function Main
Public oVoz := CreateObject("SAPI.SpVoice")
Load Window Main
Main.Center
Main.Activate
Return
Function Hola( cVoz )
oVoz:Speak( cVoz )
return
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Re: JUEGO BINGO
Muchas gracias Daniel
Ya le adapté tu colaboración que agradezco mucho, ya la compu canta los números que van saliendo
Pero ahora sólo falta poder pausar el juego si yo toco una tecla (cuando van saliendo los números aleatoriamente), porque como dije antes, si alguien dice BINGO ! a los 58 números jugados, yo debo pausar el juego para proceder a la revisión y luego terminar el Bingo si fue correcto o continuar si no hubo Bingo.
Sólo eso nos faltaría y quedaría cool el programita para todos nosotros.
Ojalá alguien se anime a colaborar y nos eche una manito (ver líneas 67 al 72)
Nuevamente gracias Daniel !
Ya le adapté tu colaboración que agradezco mucho, ya la compu canta los números que van saliendo
Pero ahora sólo falta poder pausar el juego si yo toco una tecla (cuando van saliendo los números aleatoriamente), porque como dije antes, si alguien dice BINGO ! a los 58 números jugados, yo debo pausar el juego para proceder a la revisión y luego terminar el Bingo si fue correcto o continuar si no hubo Bingo.
Sólo eso nos faltaría y quedaría cool el programita para todos nosotros.
Ojalá alguien se anime a colaborar y nos eche una manito (ver líneas 67 al 72)
Nuevamente gracias Daniel !
Code: Select all
*******************************************
* PROGRAMADO EN HMG 3.0.46 EL 09/01/2024 *
* PROGRAMADO PARA BINGO DE 75 BOLAS *
* PARA JUGAR ENTRE AMIGOS O FAMILIA *
*******************************************
#include "HMG.CH"
* SCREEN 1360x768
FUNCTION MAIN()
PUBLIC n,L,C,M4
Public oVoz := CreateObject("SAPI.SpVoice")
DEFINE WINDOW PRINCE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,125,250} NOCAPTION MAIN
@ 000,000 LABEL L0 VALUE "JUGANDO BINGO EN CASA" WIDTH 1200 HEIGHT 99 FONT "ALGERIAN" SIZE 72 BOLD UNDER ITALIC FONTCOLOR WHITE TRANSP
@ 725,1180 BUTTON BUTTON_1 CAPTION "S T A R T" WIDTH 75 HEIGHT 30 ONCLICK BUSCANUME()
@ 725,1260 BUTTON BUTTON_2 CAPTION "E X I T" WIDTH 75 HEIGHT 30 ONCLICK SALIR()
ON KEY ESCAPE ACTION SALIR()
END WINDOW
PRINCE.MAXIMIZE
PRINCE.ACTIVATE
RETURN
*-----------------
FUNCTION BUSCANUME
LOCAL NNUM
MSGINFO ("ATENCION POR FAVOR, EMPEZARA EL JUEGO !")
aleatorio:=ARRAY(75)
FOR n=1 TO 75
PASE:=.T.
DO WHILE PASE
NNUM:=HB_RANDOMINT(1,75)
IF VALTYPE(aleatorio[NNUM])="U"
aleatorio[NNUM]:=NNUM
PASE:=.F.
ENDIF
ENDDO
CVAR1:="NUME"+ALLTRIM(STR(n)) && ETIQUETA QUE VA AUMENTANDO EN 1
CVAR2:=ALLTRIM(STR(NNUM)) && NUMERO PURO ALEATORIO
CVAR3:="LAST"+ALLTRIM(STR(n)) && ETIQUETA PARA ULTIMO NUMERO JUGADO
M4=NNUM
CANTA()
PINTANUME()
@ L,C LABEL &CVAR1 PARENT PRINCE VALUE CVAR2 WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
L1:="L"+ ALLTRIM(STR(n)) && VARIABLE PARA LABELS
INKEY(0.5) && TIEMPO ENTRE UN NUMERO Y OTRO (SE LO PUEDE AMPLIAR)
IF n=75
n=74
@ 5,1200 LABEL &L1 PARENT PRINCE VALUE TRAN(n+1,'99') WIDTH 111 HEIGHT 99 FONT "ALGERIAN" SIZE 72 BOLD FONTCOLOR GREEN BACKCOLOR {0,125,250}
EXIT
ELSE
@ 5,1200 LABEL &L1 PARENT PRINCE VALUE TRAN(n+1,'99') WIDTH 111 HEIGHT 99 FONT "ALGERIAN" SIZE 72 BOLD FONTCOLOR GREEN BACKCOLOR {0,125,250}
ENDIF
@ 700,0 LABEL &CVAR3 PARENT PRINCE VALUE "ULTIMO NUMERO QUE SALIO --->"+CVAR2 WIDTH 1255 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLUE BACKCOLOR {0,125,250}
***ESTO ES SOLO PARA PAUSAR EL JUEGO, PERO DEBE SER DE OTRA MANERA
IF n=10 .OR. n=30 .OR. n=55 && EN VEZ PREGUNTAR POR n DEBE SER AL PULSAR UNA TECLA CUALQUIERA QUE HAGA UNA PAUSA
MSGINFO("BUSCAR COMO PAUSAR EL PROGRAMA" +CHR(13)+CHR(13)+ " ... PULSANDO YO UNA TECLA !!!"+CHR(13)) && BUSCAR OTRA FORMA DE PAUSAR EL PROGRAMA MANUALMENTE
EXIT && AL PAUSAR EL PROGRAMA NO DEBE SALIR, EL JUEGO DEBE CONTINUAR O PREGUNTAR SI CONTINÚA
ENDIF
***ESTO ES SOLO PARA PAUSAR, PERO DEBE SER DE OTRA MANERA
NEXT
RETU
*-----------------
FUNCTION PINTANUME
IF M4<6
C=0
ENDIF
IF M4>5 .AND. M4<11
C=90
ENDIF
IF M4>10 .AND. M4<16
C=180
ENDIF
IF M4>15 .AND. M4<21
C=270
ENDIF
IF M4>20 .AND. M4<26
C=360
ENDIF
IF M4>25 .AND. M4<31
C=450
ENDIF
IF M4>30 .AND. M4<36
C=540
ENDIF
IF M4>35 .AND. M4<41
C=630
ENDIF
IF M4>40 .AND. M4<46
C=720
ENDIF
IF M4>45 .AND. M4<51
C=810
ENDIF
IF M4>50 .AND. M4<56
C=900
ENDIF
IF M4>55 .AND. M4<61
C=990
ENDIF
IF M4>60 .AND. M4<66
C=1080
ENDIF
IF M4>65 .AND. M4<71
C=1170
ENDIF
IF M4>70
C=1260
ENDIF
IF M4=1 .OR. M4=6 .OR. M4=11 .OR. M4=16 .OR. M4=21 .OR. M4=26 .OR. M4=31 .OR. M4=36 .OR. M4=41 .OR. M4=46 .OR. M4=51 .OR. M4=56 .OR. M4=61 .OR. M4=66 .OR. M4=71
L=120
ENDIF
IF M4=2 .OR. M4=7 .OR. M4=12 .OR. M4=17 .OR. M4=22 .OR. M4=27 .OR. M4=32 .OR. M4=37 .OR. M4=42 .OR. M4=47 .OR. M4=52 .OR. M4=57 .OR. M4=62 .OR. M4=67 .OR. M4=72
L=240
ENDIF
IF M4=3 .OR. M4=8 .OR. M4=13 .OR. M4=18 .OR. M4=23 .OR. M4=28 .OR. M4=33 .OR. M4=38 .OR. M4=43 .OR. M4=48 .OR. M4=53 .OR. M4=58 .OR. M4=63 .OR. M4=68 .OR. M4=73
L=360
ENDIF
IF M4=4 .OR. M4=9 .OR. M4=14 .OR. M4=19 .OR. M4=24 .OR. M4=29 .OR. M4=34 .OR. M4=39 .OR. M4=44 .OR. M4=49 .OR. M4=54 .OR. M4=59 .OR. M4=64 .OR. M4=69 .OR. M4=74
L=480
ENDIF
IF M4=5 .OR. M4=10 .OR. M4=15 .OR. M4=20 .OR. M4=25 .OR. M4=30 .OR. M4=35 .OR. M4=40 .OR. M4=45 .OR. M4=50 .OR. M4=55 .OR. M4=60 .OR. M4=65 .OR. M4=70 .OR. M4=75
L=600
ENDIF
RETU
*-------------
FUNCTION SALIR
PRINCE.RELEASE
QUIT
RETU
*-------------
FUNCTION CANTA
cVoz:= M4
oVoz:Speak( cVoz )
return
Re: JUEGO BINGO
Hola a todos los Amigos del HMG
Le hice un pequeño cambio a los primeros 9 números, para que los ponga en pantalla con el 0 adelante y se vea mejor cuadrada su presentación ...
No se olviden lo que está pendiente
Lo que añadí (o cambié) son 6 líneas, desde el IF VAL hasta el ENDIF
Le hice un pequeño cambio a los primeros 9 números, para que los ponga en pantalla con el 0 adelante y se vea mejor cuadrada su presentación ...
No se olviden lo que está pendiente
Lo que añadí (o cambié) son 6 líneas, desde el IF VAL hasta el ENDIF
Code: Select all
M4=NNUM
CANTA()
PINTANUME()
IF VAL(CVAR2)<10
CVAR2='0'+ALLTRIM(CVAR2)
@ L,C LABEL &CVAR1 PARENT PRINCE VALUE CVAR2 WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
ELSE
@ L,C LABEL &CVAR1 PARENT PRINCE VALUE CVAR2 WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
ENDIF
L1:="L"+ ALLTRIM(STR(n)) && VARIABLE PARA LABELS
INKEY(0.5) && TIEMPO ENTRE UN NUMERO Y OTRO (SE LO PUEDE AMPLIAR)
- Attachments
-
- BINGO4.jpg (132.53 KiB) Viewed 57965 times
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: JUEGO BINGO
Hola: Hice unas mejoras visuales a los numero que van saliendo, de esta manera es mas correcta los numeros en el carton para un seguimiento
Code: Select all
*******************************************
* PROGRAMADO EN HMG 3.0.46 EL 09/01/2024 *
* PROGRAMADO PARA BINGO DE 75 BOLAS *
* PARA JUGAR ENTRE AMIGOS O FAMILIA *
*******************************************
#include "HMG.CH"
* SCREEN 1360x768
FUNCTION MAIN()
PUBLIC nCount, nLine, nColumn, M4
Public oVoz := CreateObject("SAPI.SpVoice")
DEFINE WINDOW PRINCE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,125,250} NOCAPTION MAIN
@ 000,000 LABEL L0 ;
VALUE "JUGANDO BINGO EN CASA" ;
WIDTH 1200 HEIGHT 99 ;
FONT "ALGERIAN" SIZE 72 BOLD UNDERLINE ITALIC ;
FONTCOLOR WHITE TRANSPARENT
@ 725 ,1000 SLIDER Volumen;
RANGE 0 , 100 VALUE 50 ;
WIDTH 180 HEIGHT 30 TOOLTIP "Volumen Speech";
ON CHANGE Volume()
@ 725,1180 BUTTON BUTTON_1 CAPTION "S T A R T" WIDTH 75 HEIGHT 30 ONCLICK BUSCANUME()
@ 725,1260 BUTTON BUTTON_2 CAPTION "E X I T" WIDTH 75 HEIGHT 30 ONCLICK SALIR()
ON KEY ESCAPE ACTION SALIR()
END WINDOW
PRINCE.MAXIMIZE
PRINCE.ACTIVATE
RETURN
FUNCTION Volume
oVoz:Volume := PRINCE.Volumen.value
oVoz:Speak( "Volumen "+ str (PRINCE.Volumen.value ))
Return
FUNCTION BUSCANUME
LOCAL nNum
MSGINFO ("ATENCION POR FAVOR, EMPEZARA EL JUEGO !")
nAleatorio:=ARRAY(75)
FOR nCount=1 TO 75
PASE:=.T.
DO WHILE PASE
nNum:=HB_RANDOMINT(1,75)
IF VALTYPE(nAleatorio[nNum])="U"
nAleatorio[nNum]:=nNum
PASE:=.F.
ENDIF
ENDDO
cVar1:="NUME"+ALLTRIM(STR(nCount)) && ETIQUETA QUE VA AUMENTANDO EN 1
cVar2:=ALLTRIM(STR(nNum)) && NUMERO PURO ALEATORIO
cVar3:="LAST"+ALLTRIM(STR(nCount)) && ETIQUETA PARA ULTIMO NUMERO JUGADO
M4=nNum
CANTA()
PINTANUME()
IF VAL(cVar2)<10
cVar2='0'+ALLTRIM(cVar2)
@ nLine,nColumn LABEL &CVAR1 PARENT PRINCE VALUE CVAR2 WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
ELSE
@ nLine,nColumn LABEL &CVAR1 PARENT PRINCE VALUE CVAR2 WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
ENDIF
L1:="L"+ ALLTRIM(STR(nCount)) && VARIABLE PARA LABELS
INKEY(0.5) && TIEMPO ENTRE UN NUMERO Y OTRO (SE LO PUEDE AMPLIAR)
IF nCount=75
nCount=74
@ 5,1200 LABEL &L1 PARENT PRINCE VALUE TRAN(nCount+1,'99') WIDTH 111 HEIGHT 99 FONT "ALGERIAN" SIZE 72 BOLD FONTCOLOR GREEN BACKCOLOR {0,125,250}
EXIT
ELSE
@ 5,1200 LABEL &L1 PARENT PRINCE VALUE TRAN(nCount+1,'99') WIDTH 111 HEIGHT 99 FONT "ALGERIAN" SIZE 72 BOLD FONTCOLOR GREEN BACKCOLOR {0,125,250}
ENDIF
@ 700,0 LABEL &cVar3 PARENT PRINCE VALUE "ULTIMO NUMERO QUE SALIO --->"+cVar2 WIDTH 1255 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLUE BACKCOLOR {0,125,250}
NEXT
RETURN
*-----------------
FUNCTION PINTANUME
IF M4 >0 .AND. M4 < 16
nLine=120
ENDIF
IF M4 > 15 .AND. M4 < 31
nLine=240
ENDIF
IF M4 >=31 .AND. M4 <= 45
nLine=360
ENDIF
IF M4 >= 46 .AND. M4 <= 60
nLine=480
ENDIF
IF M4 >= 61 .AND. M4 <= 75
nLine=600
ENDIF
IF M4 = 1 .OR. M4 = 16 .OR. M4 = 31 .OR. M4 = 46 .OR. M4 = 61
nColumn=0
ENDIF
IF M4 = 2 .OR. M4 = 17 .OR. M4 = 32 .OR. M4 = 47 .OR. M4 = 62
nColumn=90
ENDIF
IF M4 = 3 .OR. M4 = 18 .OR. M4 = 33 .OR. M4 = 48 .OR. M4 = 63
nColumn=180
ENDIF
IF M4 = 4 .OR. M4 = 19 .OR. M4 = 34 .OR. M4 = 49 .OR. M4 = 64
nColumn=270
ENDIF
IF M4 = 5 .OR. M4 = 20 .OR. M4 = 35 .OR. M4 = 50 .OR. M4 = 65
nColumn=360
ENDIF
IF M4 = 6 .OR. M4 = 21 .OR. M4 = 36 .OR. M4 = 51 .OR. M4 = 66
nColumn=450
ENDIF
IF M4 = 7 .OR. M4 = 22 .OR. M4 = 37 .OR. M4 = 52 .OR. M4 = 67
nColumn=540
ENDIF
IF M4 = 8 .OR. M4 = 23 .OR. M4 = 38 .OR. M4 = 53 .OR. M4 = 68
nColumn=630
ENDIF
IF M4 = 9 .OR. M4 = 24 .OR. M4 = 39 .OR. M4 = 54 .OR. M4 = 69
nColumn=720
ENDIF
IF M4 = 10 .OR. M4 = 25 .OR. M4 = 40 .OR. M4 = 55 .OR. M4 = 70
nColumn=810
ENDIF
IF M4 = 11 .OR. M4 = 26 .OR. M4 = 41 .OR. M4 = 56 .OR. M4 = 71
nColumn=900
ENDIF
IF M4 = 12 .OR. M4 = 27 .OR. M4 = 42 .OR. M4 = 57 .OR. M4 = 72
nColumn=990
ENDIF
IF M4 = 13 .OR. M4 = 28 .OR. M4 = 43 .OR. M4 = 58 .OR. M4 = 73
nColumn=1080
ENDIF
IF M4 = 14 .OR. M4 = 29 .OR. M4 = 44 .OR. M4 = 59 .OR. M4 = 74
nColumn=1170
ENDIF
IF M4 = 15 .OR. M4 = 30 .OR. M4 = 45 .OR. M4 = 60 .OR. M4 = 75
nColumn=1260
ENDIF
RETU
*-------------
FUNCTION SALIR
PRINCE.RELEASE
QUIT
RETU
*-------------
FUNCTION CANTA
cVoz:= M4
oVoz:Speak( cVoz )
return
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Re: JUEGO BINGO
Agregué la capacidad de pausar, detener y reiniciar el sorteo. Optimicé el código.
Code: Select all
*******************************************
* PROGRAMADO EN HMG 3.0.46 EL 09/01/2024 *
* PROGRAMADO PARA BINGO DE 75 BOLAS *
* PARA JUGAR ENTRE AMIGOS O FAMILIA *
*******************************************
#include "HMG.CH"
//SpVoice Flags
#define SVSFDefault 0
#define SVSFlagsAsync 1
#define SVSFPurgeBeforeSpeak 2
#define SVSFIsFilename 4
#define SVSFIsXML 8
#define SVSFIsNotXML 16
#define SVSFPersistXML 32
* SCREEN 1360x768
FUNCTION MAIN()
Public oVoice := CreateObject( "SAPI.SpVoice" )
DEFINE WINDOW PRINCE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,125,250} NOCAPTION MAIN
@ 000,000 LABEL L0 ;
VALUE "JUGANDO BINGO EN CASA" ;
WIDTH 1200 HEIGHT 99 ;
FONT "ALGERIAN" SIZE 72 BOLD UNDERLINE ITALIC ;
FONTCOLOR WHITE TRANSPARENT
@ 5 ,1200 LABEL L1 ;
VALUE "" ;
WIDTH 111 HEIGHT 99 ;
FONT "ALGERIAN" SIZE 72 BOLD ;
FONTCOLOR GREEN BACKCOLOR {0,125,250}
@ 690,0 LABEL L2 ;
VALUE "" ;
WIDTH 1055 HEIGHT 62 ;
FONT "ALGERIAN" SIZE 48 BOLD ;
FONTCOLOR BLUE BACKCOLOR {0,125,250}
@ 735 ,1065 SLIDER Volumen;
RANGE 0 , 100 VALUE oVoice:Volume ;
WIDTH 235 HEIGHT 30 TOOLTIP "Volumen Speech";
ON CHANGE Volume()
@ 700,1065 BUTTON BUTTON_1 CAPTION "S T A R T" WIDTH 75 HEIGHT 30 ONCLICK BUSCANUME()
@ 700,1145 BUTTON BUTTON_2 CAPTION "E X I T" WIDTH 75 HEIGHT 30 ONCLICK SALIR()
@ 700,1225 BUTTON BUTTON_3 CAPTION "PAUSE" WIDTH 75 HEIGHT 30 ONCLICK Pause()
PRINCE.BUTTON_3.Enabled := .F.
ON KEY ESCAPE ACTION SALIR()
END WINDOW
PRINCE.MAXIMIZE
PRINCE.ACTIVATE
RETURN
*-------------
FUNCTION Volume
oVoice:Volume := PRINCE.Volumen.value
Speak ( "Volumen "+ str ( oVoice:Volume ), .F. )
Return
*-------------
FUNCTION Speak ( cSpeak, lWait )
Local nFlagSpVoice
Default lWait := .T.
IF lWait
nFlagSpVoice := SVSFDefault
ELSE
nFlagSpVoice := SVSFlagsAsync + SVSFPurgeBeforeSpeak
ENDIF
oVoice:Speak( cSpeak, nFlagSpVoice )
Return
*-------------
Function Pause ()
PRINCE.BUTTON_3.Caption := IF( PRINCE.BUTTON_3.Caption = "PAUSE", "Continue", "PAUSE" )
DO EVENTS
Return
*-------------
FUNCTION BUSCANUME
LOCAL nNum, nAleatorio, nCount, nLine := 0, nColumn := 0
IF PRINCE.BUTTON_1.Caption = "STOP"
PRINCE.BUTTON_1.Caption := "S T A R T"
PRINCE.BUTTON_3.Caption := "PAUSE"
DO EVENTS
RETURN
ENDIF
PRINCE.BUTTON_1.Caption := "STOP"
PRINCE.BUTTON_3.Caption := "PAUSE"
PRINCE.BUTTON_3.Enabled := .T.
PRINCE.BUTTON_3.SetFocus
DO EVENTS
nAleatorio := {}
DO WHILE Len( nAleatorio ) < 75
DO WHILE .T.
nNum := HB_RANDOMINT(1,75)
IF ASCAN ( nAleatorio, nNum ) = 0
AAdd ( nAleatorio, nNum )
IF _IsControlDefined ( StrZero ( nNum, 2 ) , "PRINCE" )
DoMethod ( "PRINCE", StrZero ( nNum, 2 ), "Release" )
ENDIF
EXIT
ENDIF
DO EVENTS
ENDDO
DO EVENTS
ENDDO
MSGINFO ("ATENCION POR FAVOR, EMPEZARA EL JUEGO !")
FOR nCount := 1 TO Len( nAleatorio )
DO WHILE PRINCE.BUTTON_3.Caption = "Continue"
DO EVENTS
ENDDO
IF PRINCE.BUTTON_1.Caption = "S T A R T"
EXIT
ENDIF
PINTANUME( nAleatorio [ nCount ], @nLine, @nColumn )
@ nLine,nColumn LABEL &(StrZero ( nAleatorio [ nCount ], 2 )) PARENT PRINCE VALUE STRZero( nAleatorio [ nCount ], 2 ) WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
DO EVENTS
PRINCE.L1.VALUE := StrZero ( nCount, 2 )
PRINCE.L2.VALUE := "ULTIMO NUMERO QUE SALIO --->" + STRZero( nAleatorio [ nCount ], 2 )
Speak ( nAleatorio [ nCount ] )
DO EVENTS
INKEY(0.5) && TIEMPO ENTRE UN NUMERO Y OTRO (SE LO PUEDE AMPLIAR)
NEXT
PRINCE.BUTTON_3.Caption := "PAUSE"
PRINCE.BUTTON_3.Enabled := .F.
PRINCE.BUTTON_1.Caption := "S T A R T"
PRINCE.BUTTON_1.SetFocus
DO EVENTS
RETURN
*-----------------
FUNCTION PINTANUME( nNum, nLine, nColumn )
IF nNum >0 .AND. nNum < 16
nLine=120
ENDIF
IF nNum > 15 .AND. nNum < 31
nLine=240
ENDIF
IF nNum >=31 .AND. nNum <= 45
nLine=360
ENDIF
IF nNum >= 46 .AND. nNum <= 60
nLine=480
ENDIF
IF nNum >= 61 .AND. nNum <= 75
nLine=600
ENDIF
IF nNum = 1 .OR. nNum = 16 .OR. nNum = 31 .OR. nNum = 46 .OR. nNum = 61
nColumn=0
ENDIF
IF nNum = 2 .OR. nNum = 17 .OR. nNum = 32 .OR. nNum = 47 .OR. nNum = 62
nColumn=90
ENDIF
IF nNum = 3 .OR. nNum = 18 .OR. nNum = 33 .OR. nNum = 48 .OR. nNum = 63
nColumn=180
ENDIF
IF nNum = 4 .OR. nNum = 19 .OR. nNum = 34 .OR. nNum = 49 .OR. nNum = 64
nColumn=270
ENDIF
IF nNum = 5 .OR. nNum = 20 .OR. nNum = 35 .OR. nNum = 50 .OR. nNum = 65
nColumn=360
ENDIF
IF nNum = 6 .OR. nNum = 21 .OR. nNum = 36 .OR. nNum = 51 .OR. nNum = 66
nColumn=450
ENDIF
IF nNum = 7 .OR. nNum = 22 .OR. nNum = 37 .OR. nNum = 52 .OR. nNum = 67
nColumn=540
ENDIF
IF nNum = 8 .OR. nNum = 23 .OR. nNum = 38 .OR. nNum = 53 .OR. nNum = 68
nColumn=630
ENDIF
IF nNum = 9 .OR. nNum = 24 .OR. nNum = 39 .OR. nNum = 54 .OR. nNum = 69
nColumn=720
ENDIF
IF nNum = 10 .OR. nNum = 25 .OR. nNum = 40 .OR. nNum = 55 .OR. nNum = 70
nColumn=810
ENDIF
IF nNum = 11 .OR. nNum = 26 .OR. nNum = 41 .OR. nNum = 56 .OR. nNum = 71
nColumn=900
ENDIF
IF nNum = 12 .OR. nNum = 27 .OR. nNum = 42 .OR. nNum = 57 .OR. nNum = 72
nColumn=990
ENDIF
IF nNum = 13 .OR. nNum = 28 .OR. nNum = 43 .OR. nNum = 58 .OR. nNum = 73
nColumn=1080
ENDIF
IF nNum = 14 .OR. nNum = 29 .OR. nNum = 44 .OR. nNum = 59 .OR. nNum = 74
nColumn=1170
ENDIF
IF nNum = 15 .OR. nNum = 30 .OR. nNum = 45 .OR. nNum = 60 .OR. nNum = 75
nColumn=1260
ENDIF
RETURN
*-------------
FUNCTION SALIR
PRINCE.RELEASE
QUIT
RETURN
Re: JUEGO BINGO
Muchas pero muchas Gracias a Daniel Maximiliano y a Mr. EDK
Ha quedado muy muy bonito el programa y está a disposición de todos ...
Sus contribuciones fueron Estupendas !!!!
Nuevamente Mil Gracias !!!
Ha quedado muy muy bonito el programa y está a disposición de todos ...
Sus contribuciones fueron Estupendas !!!!
Nuevamente Mil Gracias !!!
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: JUEGO BINGO
Hola : Unas mejoras, eliminar "Ultimo numero que salio" y la cantidad de numero que esta saliendo, se agrega el orden de los numero salientes para eliminar el problema de que en el repaso de Bingo otra persona no haya cantada Bingo anteriormente porque no escucho un numero, "nosé si se entiende"
Code: Select all
*******************************************
* PROGRAMADO EN HMG 3.0.46 EL 09/01/2024 *
* PROGRAMADO PARA BINGO DE 75 BOLAS *
* PARA JUGAR ENTRE AMIGOS O FAMILIA *
*******************************************
#include "HMG.CH"
//SpVoice Flags
#define SVSFDefault 0
#define SVSFlagsAsync 1
#define SVSFPurgeBeforeSpeak 2
#define SVSFIsFilename 4
#define SVSFIsXML 8
#define SVSFIsNotXML 16
#define SVSFPersistXML 32
* SCREEN 1360x768
FUNCTION MAIN()
Public cSalieron := ""
Public oVoice := CreateObject( "SAPI.SpVoice" )
DEFINE WINDOW PRINCE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,125,250} NOCAPTION MAIN
@ 000,000 LABEL L0 ;
VALUE " JUGANDO BINGO EN CASA " ;
WIDTH 1340 HEIGHT 99 ;
FONT "ALGERIAN" SIZE 72 BOLD UNDERLINE ITALIC ;
FONTCOLOR WHITE TRANSPARENT
@ 690,0 LABEL L1 ;
VALUE "" ;
WIDTH 1055 HEIGHT 70 ;
FONT "ALGERIAN" SIZE 16 BOLD ;
FONTCOLOR BLUE BACKCOLOR {0,125,250}
@ 735 ,1065 SLIDER Volumen;
RANGE 0 , 100 VALUE oVoice:Volume ;
WIDTH 235 HEIGHT 30 TOOLTIP "Volumen Speech";
ON CHANGE Volume()
@ 700,1065 BUTTON BUTTON_1 CAPTION "S T A R T" WIDTH 75 HEIGHT 30 ONCLICK BUSCANUME()
@ 700,1145 BUTTON BUTTON_2 CAPTION "E X I T" WIDTH 75 HEIGHT 30 ONCLICK SALIR()
@ 700,1225 BUTTON BUTTON_3 CAPTION "PAUSE" WIDTH 75 HEIGHT 30 ONCLICK Pause()
PRINCE.BUTTON_3.Enabled := .F.
ON KEY ESCAPE ACTION SALIR()
END WINDOW
PRINCE.MAXIMIZE
PRINCE.ACTIVATE
RETURN
*-------------
FUNCTION Volume
oVoice:Volume := PRINCE.Volumen.value
Speak ( "Volumen "+ str ( oVoice:Volume ), .F. )
Return
*-------------
FUNCTION Speak ( cSpeak, lWait )
Local nFlagSpVoice
Default lWait := .T.
IF lWait
nFlagSpVoice := SVSFDefault
ELSE
nFlagSpVoice := SVSFlagsAsync + SVSFPurgeBeforeSpeak
ENDIF
oVoice:Speak( cSpeak, nFlagSpVoice )
Return
*-------------
Function Pause ()
PRINCE.BUTTON_3.Caption := IF( PRINCE.BUTTON_3.Caption = "PAUSE", "Continue", "PAUSE" )
DO EVENTS
Return
*-------------
FUNCTION BUSCANUME
LOCAL nNum, nAleatorio, nCount, nLine := 0, nColumn := 0
IF PRINCE.BUTTON_1.Caption = "STOP"
PRINCE.BUTTON_1.Caption := "S T A R T"
PRINCE.BUTTON_3.Caption := "PAUSE"
DO EVENTS
RETURN
ENDIF
PRINCE.BUTTON_1.Caption := "STOP"
PRINCE.BUTTON_3.Caption := "PAUSE"
PRINCE.BUTTON_3.Enabled := .T.
PRINCE.BUTTON_3.SetFocus
DO EVENTS
nAleatorio := {}
DO WHILE Len( nAleatorio ) < 75
DO WHILE .T.
nNum := HB_RANDOMINT(1,75)
IF ASCAN ( nAleatorio, nNum ) = 0
AAdd ( nAleatorio, nNum )
IF _IsControlDefined ( StrZero ( nNum, 2 ) , "PRINCE" )
DoMethod ( "PRINCE", StrZero ( nNum, 2 ), "Release" )
ENDIF
EXIT
ENDIF
DO EVENTS
ENDDO
DO EVENTS
ENDDO
MSGINFO ("ATENCION POR FAVOR, EMPEZARA EL JUEGO !")
FOR nCount := 1 TO Len( nAleatorio )
DO WHILE PRINCE.BUTTON_3.Caption = "Continue"
DO EVENTS
ENDDO
IF PRINCE.BUTTON_1.Caption = "S T A R T"
EXIT
ENDIF
PINTANUME( nAleatorio [ nCount ], @nLine, @nColumn )
@ nLine,nColumn LABEL &(StrZero ( nAleatorio [ nCount ], 2 )) PARENT PRINCE VALUE STRZero( nAleatorio [ nCount ], 2 ) WIDTH 74 HEIGHT 66 FONT "ALGERIAN" SIZE 48 BOLD FONTCOLOR BLACK BACKCOLOR {0,125,250}
DO EVENTS
PRINCE.L1.VALUE := cSalieron += " " + STRZero( nAleatorio [ nCount ], 2 )
Speak ( nAleatorio [ nCount ] )
DO EVENTS
INKEY(0.5) && TIEMPO ENTRE UN NUMERO Y OTRO (SE LO PUEDE AMPLIAR)
NEXT
PRINCE.BUTTON_3.Caption := "PAUSE"
PRINCE.BUTTON_3.Enabled := .F.
PRINCE.BUTTON_1.Caption := "S T A R T"
PRINCE.BUTTON_1.SetFocus
DO EVENTS
RETURN
*-----------------
FUNCTION PINTANUME( nNum, nLine, nColumn )
IF nNum >0 .AND. nNum < 16
nLine=120
ENDIF
IF nNum > 15 .AND. nNum < 31
nLine=240
ENDIF
IF nNum >=31 .AND. nNum <= 45
nLine=360
ENDIF
IF nNum >= 46 .AND. nNum <= 60
nLine=480
ENDIF
IF nNum >= 61 .AND. nNum <= 75
nLine=600
ENDIF
IF nNum = 1 .OR. nNum = 16 .OR. nNum = 31 .OR. nNum = 46 .OR. nNum = 61
nColumn=0
ENDIF
IF nNum = 2 .OR. nNum = 17 .OR. nNum = 32 .OR. nNum = 47 .OR. nNum = 62
nColumn=90
ENDIF
IF nNum = 3 .OR. nNum = 18 .OR. nNum = 33 .OR. nNum = 48 .OR. nNum = 63
nColumn=180
ENDIF
IF nNum = 4 .OR. nNum = 19 .OR. nNum = 34 .OR. nNum = 49 .OR. nNum = 64
nColumn=270
ENDIF
IF nNum = 5 .OR. nNum = 20 .OR. nNum = 35 .OR. nNum = 50 .OR. nNum = 65
nColumn=360
ENDIF
IF nNum = 6 .OR. nNum = 21 .OR. nNum = 36 .OR. nNum = 51 .OR. nNum = 66
nColumn=450
ENDIF
IF nNum = 7 .OR. nNum = 22 .OR. nNum = 37 .OR. nNum = 52 .OR. nNum = 67
nColumn=540
ENDIF
IF nNum = 8 .OR. nNum = 23 .OR. nNum = 38 .OR. nNum = 53 .OR. nNum = 68
nColumn=630
ENDIF
IF nNum = 9 .OR. nNum = 24 .OR. nNum = 39 .OR. nNum = 54 .OR. nNum = 69
nColumn=720
ENDIF
IF nNum = 10 .OR. nNum = 25 .OR. nNum = 40 .OR. nNum = 55 .OR. nNum = 70
nColumn=810
ENDIF
IF nNum = 11 .OR. nNum = 26 .OR. nNum = 41 .OR. nNum = 56 .OR. nNum = 71
nColumn=900
ENDIF
IF nNum = 12 .OR. nNum = 27 .OR. nNum = 42 .OR. nNum = 57 .OR. nNum = 72
nColumn=990
ENDIF
IF nNum = 13 .OR. nNum = 28 .OR. nNum = 43 .OR. nNum = 58 .OR. nNum = 73
nColumn=1080
ENDIF
IF nNum = 14 .OR. nNum = 29 .OR. nNum = 44 .OR. nNum = 59 .OR. nNum = 74
nColumn=1170
ENDIF
IF nNum = 15 .OR. nNum = 30 .OR. nNum = 45 .OR. nNum = 60 .OR. nNum = 75
nColumn=1260
ENDIF
RETURN
*-------------
FUNCTION SALIR
PRINCE.RELEASE
QUIT
RETURN
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Re: JUEGO BINGO
Puede simplificar aún más la función PINTANUME().
Daniel, no puedo cambiar la voz con la que se dicen los números. En mi sistema tiene dos voces, pero incluso cuando quiero asignar la primera voz (predeterminada), obtengo RTE. ¿Este también es tu caso? ¿Algunas ideas? El mismo problema ocurre cuando quiero cambiar a una salida de audio diferente.
Code: Select all
*-----------------
FUNCTION PINTANUME( nNum, nLine, nColumn )
Local nMod
nMod := nNum / 15
IF nMod == Int ( nMod )
nMod --
ENDIF
nLine := ( Int( nMod ) + 1 ) * 120
nMod := nNum % 15
IF nMod = 0
nMod := 15
ENDIF
nColumn := 15 + ( nMod - 1 ) * 90
RETURN
Code: Select all
oVoice:Voice := oVoice:GetVoices():Item(0) //:Item (0) - 1st voice; :Item (1) - 2nd voice; etc.
oVoice:AudioOutput := oVoice:GetAudioOutputs():Item(0) //:Item (0) - 1st output; :Item (1) - 2nd output; etc.
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: JUEGO BINGO
Hola : en mi pc hay 3 narradores se pueden agregar mas pulsando Windows+ctrl+n en narradores agregar, tamb se puede modificar la salida predeterminada.
Code: Select all
*-------------
FUNCTION Volume
LOCAL oVoces, nFor, cDescription, nIndex
nIndex := 0
oVoice:Volume := PRINCE.Volumen.value
Speak ( "Volumen "+ str ( oVoice:Volume ), .F. )
* list installed voices
FOR EACH oVoces IN oVoice:GetVoices()
cDescription = oVoces:GetDescription()
MSGinfo( cDescription, "Index : " + STR( nIndex, 2))
nIndex := nIndex + 1
ENDFOR
Return
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO