<![CDATA[HMGforum.com]]> http://www.hmgforum.com Fri, 20 Sep 2024 23:54:31 +0000 Smartfeed extension for phpBB http://www.hmgforum.com/styles/prosilver/theme/images/site_logo.svg <![CDATA[HMGforum.com]]> http://www.hmgforum.com en-gb Fri, 20 Sep 2024 23:54:31 +0000 60 <![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Roberto Lopez]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71285#p71285

I've felt a little nostalgic and took a ride around here :D

I'm very glad to see a new, 64 bits, HMG version and a lot of old friends here.

Thanks a lot to keep the project alive, even after all these years...

I'll read you more often from now!]]>
no_email@example.com (Roberto Lopez) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71285#p71285 Wed, 04 Sep 2024 02:12:36 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71285#p71285
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Rathinagiri]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71286#p71286
So happy to see you again sir. How are you?]]>
no_email@example.com (Rathinagiri) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71286#p71286 Wed, 04 Sep 2024 05:18:25 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71286#p71286
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by mol]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71287#p71287 no_email@example.com (mol) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71287#p71287 Wed, 04 Sep 2024 06:27:37 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71287#p71287 <![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Roberto Lopez]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71291#p71291
Rathinagiri wrote: Wed Sep 04, 2024 5:18 am Wow. Hearty welcome the Goat Father of HMG!

So happy to see you again sir. How are you?
I guess "Goat" is too much! :D

I'm currently an active HMG user (apps developer) with various custom apps being currently used. As an HMG user, I've made my own little 'helper' library (perpetually 'under construction' :D )...

Of all things in that library, I guess that the most useful could be my MySql functions (most of my new apps are MySql based). I use MySql even locally (I use a portable MySql server for local storage), this allows an easy 'upscale' path when required (usually, sooner or later will be :D ). Since these functions use some public variables, before publish I'd like create a class for then.

Regarding printing, I only generate PDFs with hmg_hpdf (lightly modified to suit some personal needs) and including SumatraPDF as a viewer.

I'm doing IT support too (each day, my hate towards M$ grows more and more ;) )

That's all! :D]]>
no_email@example.com (Roberto Lopez) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71291#p71291 Wed, 04 Sep 2024 23:13:21 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71291#p71291
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Roberto Lopez]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71292#p71292
mol wrote: Wed Sep 04, 2024 6:27 am Great to see you, Roberto!
Same here!

The time goes fast... in fact, it becomes faster and faster... :D

AFAIR (like Rathi) you are one of the earliest HMG supporters and you still here!

Thanks for that!

I'm happy to see you here!!!]]>
no_email@example.com (Roberto Lopez) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71292#p71292 Wed, 04 Sep 2024 23:18:35 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71292#p71292
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by jayadevu]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71293#p71293
Very happy to see you around.

Portable Mysql Server, very interesting. Where we download and test ?

Wbr,

Jayadev]]>
no_email@example.com (jayadevu) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71293#p71293 Thu, 05 Sep 2024 05:19:39 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71293#p71293
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by serge_girard]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71294#p71294 no_email@example.com (serge_girard) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71294#p71294 Thu, 05 Sep 2024 07:08:34 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71294#p71294 <![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by mol]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71295#p71295
Roberto Lopez wrote: Wed Sep 04, 2024 11:18 pm
mol wrote: Wed Sep 04, 2024 6:27 am Great to see you, Roberto!
Same here!

The time goes fast... in fact, it becomes faster and faster... :D

AFAIR (like Rathi) you are one of the earliest HMG supporters and you still here!

Thanks for that!

I'm happy to see you here!!!
You are my first teacher of HMG and first person which helped me!]]>
no_email@example.com (mol) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71295#p71295 Thu, 05 Sep 2024 12:37:13 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71295#p71295
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Roberto Lopez]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71296#p71296
jayadevu wrote: Thu Sep 05, 2024 5:19 am Hi Roberto,

Very happy to see you around.

Portable Mysql Server, very interesting. Where we download and test ?

Wbr,

Jayadev
Hi Again!

Here it is:

https://mariadb.com/kb/en/portable-mariadb/

https://mariadb.org/download/?t=mariadb ... irror=fder]]>
no_email@example.com (Roberto Lopez) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71296#p71296 Fri, 06 Sep 2024 01:32:53 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71296#p71296
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Roberto Lopez]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71297#p71297
serge_girard wrote: Thu Sep 05, 2024 7:08 am the Goat Father of HMG is back !!
No no no!!! Please!!!! :D

I'm back (mainly) as a silent reader now.]]>
no_email@example.com (Roberto Lopez) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71297#p71297 Fri, 06 Sep 2024 01:40:06 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71297#p71297
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by Rathinagiri]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71300#p71300
Roberto Lopez wrote: Wed Sep 04, 2024 11:13 pm
Rathinagiri wrote: Wed Sep 04, 2024 5:18 am Wow. Hearty welcome the Goat Father of HMG!

So happy to see you again sir. How are you?
I guess "Goat" is too much! :D

I'm currently an active HMG user (apps developer) with various custom apps being currently used. As an HMG user, I've made my own little 'helper' library (perpetually 'under construction' :D )...

Of all things in that library, I guess that the most useful could be my MySql functions (most of my new apps are MySql based). I use MySql even locally (I use a portable MySql server for local storage), this allows an easy 'upscale' path when required (usually, sooner or later will be :D ). Since these functions use some public variables, before publish I'd like create a class for then.

Regarding printing, I only generate PDFs with hmg_hpdf (lightly modified to suit some personal needs) and including SumatraPDF as a viewer.

I'm doing IT support too (each day, my hate towards M$ grows more and more ;) )

That's all! :D
I can feel the same thing Roberto. So eager to see the library!]]>
no_email@example.com (Rathinagiri) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71300#p71300 Sat, 07 Sep 2024 12:07:28 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71300#p71300
<![CDATA[HMG 64 Bits :: Re: HMG 3.6 (64 bit version) :: Reply by jayadevu]]> http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71308#p71308
Roberto Lopez wrote: Fri Sep 06, 2024 1:32 am
jayadevu wrote: Thu Sep 05, 2024 5:19 am Hi Roberto,

Very happy to see you around.

Portable Mysql Server, very interesting. Where we download and test ?

Wbr,

Jayadev
Hi Again!

Here it is:

https://mariadb.com/kb/en/portable-mariadb/

https://mariadb.org/download/?t=mariadb ... irror=fder
Thanks so much Roberto.

Wbr,

Jayadev]]>
no_email@example.com (jayadevu) http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71308#p71308 Mon, 09 Sep 2024 13:57:41 +0000 http://www.hmgforum.com/viewtopic.php?f=46&t=7433&p=71308#p71308
<![CDATA[HMG General Help :: Do you have to use Eval() to call a function name contained in a variable? :: Author HGAutomator]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71260#p71260
Is there an official method other than Eval and a Code Block, or Macro Expansion "&", to call a function name contained in a variable?


So if you have a function defined with 2 parameters like

Function ThisProc( sParameter_01, sParameter_02 )
Local bReturnCode := .F.

If (condition)
bReturnCode := .T.
EndIf

Return bReturnCode

, and you place the function name and array of parameters into variables like this:

sProc := "ThisProc"
aParameters := { sParameter_01, sParameter_02 }

, what is the recommended way to call the function using these 2 variables sProc and aParameters?]]>
no_email@example.com (HGAutomator) http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71260#p71260 Thu, 22 Aug 2024 20:50:55 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71260#p71260
<![CDATA[HMG General Help :: Re: Do you have to use Eval() to call a function name contained in a variable? :: Reply by HGAutomator]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71261#p71261 no_email@example.com (HGAutomator) http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71261#p71261 Thu, 22 Aug 2024 21:34:54 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71261#p71261 <![CDATA[HMG General Help :: Re: Do you have to use Eval() to call a function name contained in a variable? :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71262#p71262 no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71262#p71262 Fri, 23 Aug 2024 07:09:15 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7588&p=71262#p71262 <![CDATA[HMG General Help :: IDE and .hbc files :: Author mol]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71268#p71268 I want to use IDE, but I have to include in my project same .hbc files: hbmxml.hbc hbssl.hbc hbziparc.hbc
How can I do it?
Does somebody know!]]>
no_email@example.com (mol) http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71268#p71268 Sun, 25 Aug 2024 16:47:13 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71268#p71268
<![CDATA[HMG General Help :: Re: IDE and .hbc files :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71269#p71269

Code: Select all

hbcs=hbmxml.hbc
hbcs=hbssl.hbc
hbcs=hbziparc.hbc
or

Code: Select all

hbcs=hbmxml.hbc hbssl.hbc hbziparc.hbc
]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71269#p71269 Mon, 26 Aug 2024 08:52:15 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71269#p71269
<![CDATA[HMG General Help :: Re: IDE and .hbc files :: Reply by mol]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71270#p71270 Thank you Edward!]]> no_email@example.com (mol) http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71270#p71270 Mon, 26 Aug 2024 10:03:59 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7590&p=71270#p71270 <![CDATA[HMG General Help :: Search Womans from your city for night :: Author jortega]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7591&p=71273#p71273 Search Pretty Womans in your city for night]]> no_email@example.com (jortega) http://www.hmgforum.com/viewtopic.php?f=5&t=7591&p=71273#p71273 Tue, 27 Aug 2024 09:52:47 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7591&p=71273#p71273 <![CDATA[HMG General Help :: properly close program :: Author franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71263#p71263 Is there a easy way to close and release all.
I am sure there is a post but I am having a problem locating it.
Thanks in advance.]]>
no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71263#p71263 Fri, 23 Aug 2024 16:49:38 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71263#p71263
<![CDATA[HMG General Help :: Re: properly close program :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71264#p71264

Code: Select all

dbcloseall()
RELEASE MEMORY
UnloadAllDll()
ExitProcess(0)
]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71264#p71264 Sat, 24 Aug 2024 13:02:26 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71264#p71264
<![CDATA[HMG General Help :: Re: properly close program :: Reply by franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71266#p71266 This is what I use but wanted to make sure this exits properly.

Code: Select all

 #include "hmg.ch"
  #define CRLF    HB_OsNewLine()
  #include "FILEIO.CH"

  function Main()
	local temp
	public prating := 8, AND MORE

        REQUEST DBFNTX          
        SET CENTURY ON
        SET DELETED OFF
        SET DATE TO BRITISH
        USE CONTROLS NEW SHARED 
        GO 1
        MSERIAL := ALLTRIM(SERIAL)
        USE
	 HB_LANGSELECT( "EN" )

        // Define the main window.
        DEFINE WINDOW Win_1                  ;
           AT         0,0                    ;
           WIDTH      getdesktopWidth()-25      ;
           HEIGHT     getDeskTopHeight()-45  ;
           TITLE      " Title"   ;
	   MAIN                              ;
           NOMAXIMIZE                        ;
           NOSIZE                            ;
	   ON INIT   {||{ ABOUT()} 
           BACKCOLOR  GRAY ;
	   FONT 'Arial' SIZE 9 
	   ON KEY CONTROL + G action MSGBOX('Series: '+mcod)
	   ON KEY CONTROL + W action ABOUT()   
		   
           DEFINE MAIN MENU OF Win_1
              	  POPUP "    E&xit"
                      ITEM "&Exit Q&A" ;
                              ACTION Win_1.Release
           	      END POPUP
              	      POPUP "   MORE POPUPS"
                      ITEM " MORE POPUPS" ;
                              ACTION MORE FUNCTIONS
           	      END POPUP
          END MENU
		     ON KEY F1 OF WIN_1 ACTION HELPING('q&a.HLP')
		     ON KEY F10 OF WIN_1 ACTION MSGBOX('DATE: 02/20/20')
        END WINDOW
        ACTIVATE WINDOW Win_1
	set helpfile to helping('q&a.hlp')

  return NIL

]]>
no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71266#p71266 Sat, 24 Aug 2024 16:09:27 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71266#p71266
<![CDATA[HMG General Help :: Re: properly close program :: Reply by franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71271#p71271 Action dbcloseall() , RELEASE MEMORY, win_1.release, UnloadAllDll() ,ExitProcess(0)
or a function

Action Getout(), win_1 release
Function Getout)()
dbcloseall()
RELEASE MEMORY
UnloadAllDll()
ExitProcess(0)
return]]>
no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71271#p71271 Mon, 26 Aug 2024 19:27:29 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71271#p71271
<![CDATA[HMG General Help :: Re: properly close program :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71272#p71272 These commands/functions are worth using in ErrorBlock() when we intend to terminate the application due to errors.]]> no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71272#p71272 Tue, 27 Aug 2024 06:52:21 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71272#p71272 <![CDATA[HMG General Help :: Re: properly close program :: Reply by franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71274#p71274 Franco]]> no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71274#p71274 Tue, 27 Aug 2024 15:48:17 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7589&p=71274#p71274 <![CDATA[HMG General Help :: Enviar .pdf directo a la impresora :: Author edufloriv]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71275#p71275
Estoy tratando de enviar archivos .pdf directo a la impresora por defecto, pero mi código ya no funciona, he probado con todas estas opciones:

Code: Select all

*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC Cotizacion_PdfPrint( nOperId , cDocNum , cDocFec )

LOCAL dEmision , cPdfTipo , cPdfRuta , cPdfFile , cPrinter

   IF nOperId > 0
      dEmision := CTOD( cDocFec )
      cPdfRuta := PATHCPE + STR(YEAR(dEmision),4) + '\' + STRZERO(MONTH(dEmision),2) + '\' + STRZERO(DAY(dEmision),2)
      cPdfFile := cPdfRuta + "\" + SIS_RUC + "_00_" + cDocNum + ".pdf"
      IF FILE(cPdfFile)
         cPrinter := GetDefaultPrinter()
         msginfo( cPdfFile + chr(13) + cPrinter )
//         ShellExecute( GetDesktopWindow() , 'printto' , cPdfFile , '"' + cPrinter + '"' , "" , 7 )
//         ShellExecute( 0 , 'printto' , cPdfFile , '"' + cPrinter + '"' ,  , 0 )
         ShellExecute( 0 , "printto" , '"' + cPdfFile + '"' , '"' + cPrinter + '"' , 0 , 0 )
//         wapi_ShellExecute( 0, 'printto' , cPdfFile , cPrinter , , 0 ) 
         MSGINFO( '.pdf enviado a la impresora.')
      ELSE
         msginfo("No existe el archivo "+cPdfFile)
      ENDIF
   ENDIF

RETURN
No me lanza ningún error, siempre termina mostrándome el mensaje ".pdf enviado a la impresora" pero en la impresora no sale nada. Tampoco aparece el documento en la cola de impresión. Si envío una página de prueba desde el menú "Propiedades de la impresora" imprime bien, así que esta descartado que sea problema de configuración. Debo mencionar también que es una impresora compartida instalada fisicamente en otra pc en red. Compilo con HMG 3.5

A la espera de sus comentarios, reciban un cordial saludo amigos.]]>
no_email@example.com (edufloriv) http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71275#p71275 Tue, 27 Aug 2024 20:25:53 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71275#p71275
<![CDATA[HMG General Help :: Re: Enviar .pdf directo a la impresora :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71276#p71276 Comprueba qué valor devuelve la función ShellExecute, si está por debajo del valor 32 significa error: https://learn.microsoft.com/en-us/windo ... llexecutea
Prueba a cambiar «printto» por «print». Recuerda que la variable cPdfFile debe contener la ruta completa al archivo pdf.
Si estás imprimiendo en la impresora por defecto no necesitas especificarla como parámetro, prueba:

Code: Select all

msgdebug ( ShellExecute( Nil , "print" , '"' + cPdfFile + '"' , , Nil , Nil ) )
]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71276#p71276 Wed, 28 Aug 2024 06:11:21 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7592&p=71276#p71276
<![CDATA[HMG General Help :: crash with UDF-Index when ADD new Record :: Author AUGE_OHR]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71282#p71282
i use a UDF-Index and it crash when add new Record
Application Internal Error - C:\hmg.3.4.4\1\HBTEL\HBTEL.exe
Terminated at: 2024-09-01 12:17:25
Nicht zu behebender Fehler 9201: hb_cdxPageKeyIntBalance: index corrupted.
Called from ORDFOR(0)
Called from SETDATAGRIDRECNO(2204) in source\h_grid.prg
Called from SETPROPERTY(7969) in source\h_controlmisc.prg
Called from ADDNEWREC(2497) in C:\hmg.3.4.4\1\HBTEL\HBTEL.PRG
Called from (b)MAIN(321) in C:\hmg.3.4.4\1\HBTEL\HBTEL.PRG
Called from _DOCONTROLEVENTPROCEDURE(6033) in source\h_windows.prg
Called from EVENTS(1794) in source\h_windows.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5694) in source\h_windows.prg
Called from MAIN(404) in C:\hmg.3.4.4\1\HBTEL\HBTEL.PRG

Code: Select all

2482 STATIC PROCEDURE AddNewRec()
2483
2484 LOCAL nRecNo
2485
2486   SELECT 1
2487   ORDSETFOCUS(0)
2488   APPEND BLANK
2489 *  nRecNo := RECNO()
2490
2491   XPPTEL_Store()
2492   nRecNo := RECNO()
2493  
2494   IF SP_Browse() = "BROWSE"
2495      SetProperty( "XPPTEL", "Browse_1", "value", nRecNo )
2496   ELSE
->2497      SetProperty( "XPPTEL", "Browse_1", "RecNo", nRecNo )
2498   ENDIF

Code: Select all

FUNCTION TNR2STR( value )

LOCAL RETVAR := ""
LOCAL nLen   := LEN( value )
LOCAL nSoll  := nLen
LOCAL i, nDiff
LOCAL cStr

   FOR i = 1 TO nLen
      cStr := SUBSTR( value, i, 1 )
      IF cStr == CHR( 32 )
      ELSE
         RETVAR := RETVAR + cStr
      ENDIF
   NEXT

   nDiff := nSoll - LEN( RETVAR )
   FOR i = 1 TO nDiff
      RETVAR := RETVAR + CHR( 32 )
   NEXT

RETURN RETVAR

Code: Select all

PROCEDURE CreateCDX( cCodepage )

LOCAL _tagname, _keyfeld, _cdxname

   USE XPPTEL.DBF VIA "DBFCDX" EXCLUSIVE CODEPAGE (cCodepage)

   _cdxname := "XPPTEL.CDX"                                           // "TELINDEX"

   _tagname := "KDNAME"                                               //zkdname   1
   _KEYFELD := "UPPER(NAME1+NAME2)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "STADT"                                                //zkdort    2
   _KEYFELD := "UPPER(STADT+STRASSE)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "STRASSE"                                              //zstrasse  3
   _KEYFELD := "UPPER(STRASSE+STADT)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "GESCHTEL"                                             //ztelefon  4
   _KEYFELD := "TNR2STR(TELGES)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "FAX"                                                  //ztelfax   5
   _KEYFELD := "TNR2STR(TELFAX)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "1_HANDY"                                              //          6
   _KEYFELD := "TNR2STR(HANDY1)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "2_HANDY"                                              //          7
   _KEYFELD := "TNR2STR(HANDY2)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "3_HANDY"                                              //          8
   _KEYFELD := "TNR2STR(ANHANDY)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "4_HANDY"                                              //          9
   _KEYFELD := "TNR2STR(PVHANDY)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "ANSPVOR"                                              //zansprech 10
   _KEYFELD := "UPPER(ANSPVOR+ANSPNACH)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "ANSPNACH"                                             //zansprech 11
   _KEYFELD := "UPPER(ANSPNACH+ANSPVOR)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "BRANCHE"                                              //zbranche  12
   _KEYFELD := "TKSEL+UPPER(NAME1)"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "KUNDENNO"                                             //zkdnr     13
   _keyfeld := "TKDNR"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   _tagname := "ALLETELNO"                                            //zkdnr     14
   _keyfeld := "TNR2STR(VORTELE)+" + ;
               "TNR2STR(TELGES) +" + ;
               "TNR2STR(VORFAX) +" + ;
               "TNR2STR(TELFAX) +" + ;
               "TNR2STR(VORPRIV)+" + ;
               "TNR2STR(TELPRI) +" + ;
               "TNR2STR(HANDY1) +" + ;
               "TNR2STR(HANDY2) +" + ;
               "TNR2STR(ANHANDY)+" + ;
               "TNR2STR(PVVORT1)+" + ;
               "TNR2STR(PVTEL1) +" + ;
               "TNR2STR(PVVORF1)+" + ;
               "TNR2STR(PVFAX1) +" + ;
               "TNR2STR(PVHANDY)"

   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX

   CLOSE

RETURN
why it CRASH :?:
i have try to disable CDX-Index using ORDSETFOCUS(0) when ADD new Record but it does now help.
what can i do :?:]]>
no_email@example.com (AUGE_OHR) http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71282#p71282 Sun, 01 Sep 2024 10:41:28 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71282#p71282
<![CDATA[HMG General Help :: Re: crash with UDF-Index when ADD new Record :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71283#p71283

Code: Select all

#translate TNR2STR( <cString> ) => Pad( StrTran ( <cString>, " " ), Len( <cString> ) 
If you use a UDF in an index key, other programs that do not contain the used UDF will not be able to retrieve the index key.]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71283#p71283 Sun, 01 Sep 2024 17:02:37 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71283#p71283
<![CDATA[HMG General Help :: Re: crash with UDF-Index when ADD new Record :: Reply by AUGE_OHR]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71284#p71284
edk wrote: Sun Sep 01, 2024 5:02 pm If you use a UDF in an index key, other programs that do not contain the used UDF will not be able to retrieve the index key.
thx i will try #translate Directive instead of Function.

Yes i know that other programs that do not contain the used UDF will not be able to use it.
it is Part of my Protection like my Crypt Function.]]>
no_email@example.com (AUGE_OHR) http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71284#p71284 Sun, 01 Sep 2024 18:31:21 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7594&p=71284#p71284
<![CDATA[HMG General Help :: delete *.ntx files :: Author franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71278#p71278 When exiting program I would like to delete the undeleted temporary index`s. They all start with t and are .ntx files
delete 'c:\mybrw\t*.ntx'.
is there a way to delete *.ntx
Thanks in advance Franco]]>
no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71278#p71278 Fri, 30 Aug 2024 16:09:15 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71278#p71278
<![CDATA[HMG General Help :: Re: delete *.ntx files :: Reply by AUGE_OHR]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71279#p71279 when use a FILE it take some Time before it "free" it.
when it happens in Network it is a SMB2 Problem of "FileInfoCacheLifetime" https://learn.microsoft.com/en-us/previ ... dfrom=MSDN]]>
no_email@example.com (AUGE_OHR) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71279#p71279 Fri, 30 Aug 2024 16:44:58 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71279#p71279
<![CDATA[HMG General Help :: Re: delete *.ntx files :: Reply by serge_girard]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71280#p71280
Did you try with FERASE?
FERASE("C:\folder\t*.ntx" )]]>
no_email@example.com (serge_girard) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71280#p71280 Sat, 31 Aug 2024 06:51:42 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71280#p71280
<![CDATA[HMG General Help :: Re: delete *.ntx files :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71281#p71281 hb_FileDelete(<cFileMask> [,<cAttr>]) ➜ lResult
removes files which match given <cFileMask> (it may contain path) and returns .T. if at least one file was deleted. Optional <cAttr> parameter can be used to include system "S" and hidden "H" files. If <cAttr> contains "R" letter then before deleting READONLY attribute is removed.]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71281#p71281 Sat, 31 Aug 2024 08:30:13 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71281#p71281
<![CDATA[HMG General Help :: Re: delete *.ntx files :: Reply by franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71290#p71290 Thanks all.]]> no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71290#p71290 Wed, 04 Sep 2024 15:09:23 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71290#p71290 <![CDATA[HMG General Help :: Re: delete *.ntx files :: Reply by franco]]> http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71313#p71313 Serge, It would not work for me.
Edward, Yours worked perfect .
I create a folder in the c drive of every computer on the network. This is where I send temporary indexes witch all start with tf****.ntx
hb_FileDelete("c:\dir\tf*.ntx")
Franco]]>
no_email@example.com (franco) http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71313#p71313 Sat, 14 Sep 2024 17:05:28 +0000 http://www.hmgforum.com/viewtopic.php?f=5&t=7593&p=71313#p71313
<![CDATA[General :: Other Vintage Game :: Author LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71298#p71298
POR AQUÍ CON ESTE NUEVO JUEGO VINTAGE QUE QUIERO RESCATAR, PARA QUE LO JUEGUEN CHICOS y GRANDES ...
ESTE JUEGUITO ESTUVO PROGRAMADO EN QBASIC-BAJO D.O.S., EN LOS 80 ... SE LLAMA LA CULEBRITA.

A PESAR QUE EMPIEZA CON UNA PANTALLA HMG, LUEGO TUVE QUE PASAR A MODO REQUEST HB_GT_WIN_DEFAULT, PARA GUARDAR EL PARECIDO, ADEMÁS QUE EN MODO HMG NO SABRÍA CÓMO HACERLO :oops:

HAY UNAS DIFERENCIAS CON EL JUEGO ORIGINAL DE LOS 80 ... PERO CREO QUE NO ES DE MUCHA IMPORTANCIA ... SINEMBARGO ...

EL VINTAGE TIENE ...
--------------------------
- LOS NÚMEROS VAN SALIENDO A MEDIDA QUE SE "COME" EL QUE ESTÁ EN PANTALLA <--- IRRELEVANTE
- TIENE 5 VIDAS EL JUGADOR <--- IRRELEVANTE
- TIENE SONIDO AL MOMENTO QUE SE COME UN # <--- QUIZÁS NECESARIO
- SI PASA LA PRIMERA PANTALLA AVANZA A OTRO NIVEL DE DIFICULTAD <--- IRRELEVANTE
- GUARDA UN PUNTAJE ... <--- IRRELEVANTE
- SI PASA SOBRE SU PROPIO CUERPO (COLA) PIERDE <--- IMPORTANTE


EL QUE OS PRESENTO, TIENE ...
---------------------------------------
- EL MOVIMIENTO DE LAS 4 TECLAS DIRECCIONALES,
- EL CUERPO DE LA CULEBRA CRECE A MEDIDA QUE AVANZA
- EL TIEMPO DE INTÉRVALO EN MOVERSE LA CULEBRA ESTÁ EN EL PRG (.1) ES LO IDEAL
- PAUSA EL JUEGO CON ESC, PARA QUE EL JUGADOR REVISE SU ESTRATEGIA
- SI LA CULEBRA CHOCA CONTRA EL MARCO ROJO (LÍMITES), PIERDE !
- CONTROLA EL MOVIMIENTO EN CONTRA DE LA DIRECCIÓN QUE VA (TAL COMO EL ORIGINAL),
ES DECIR, SI VA A LA DERECHA Y PULSA HACIA LA IZQUIERDA O VICEVERSA, SE AUTO-ELIMINA
Y PIERDE EL JUEGO, O SI VA PARA ABAJO Y PULSA PARA ARRIBA O VICEVERSA, TAMBIÉN PIERDE.

EN ESTE, APARECEN TODOS LOS 9 NÚMEROS, POSICIONADOS EN FORMA ALEATORIA
EN UNA PANTALLA 25x80 Y LA CULEBRA NACE EN EL CENTRO AL IGUAL QUE EL VINTAGE,
PERO AQUÍ ESPERA A QUE EL JUGADOR PULSE LA PRIMERA TECLA DIRECCIONAL.

TENGO LA CAPTURA DE FILA Y COLUMNA DE CADA NÚMERO EN PANTALLA, EN 9 VARIABLES,
PORQUE CREO SE NECESITARÁ PARA SABER SI EL # FUE TAPADO POR LA CULEBRA,
Y EMITIR UN SONIDO EN ESE MOMENTO.


LO QUE FALTA POR HACER ES ...
---------------------------------------
- LA PANTALLA NEGRA INICIAL QUE NO APAREZCA, SINO CUANDO YA SE OCULTE WINDOW MAIN
- CENTRAR LA PANTALLA DEL JUEGO AUTOMÁTICAMENTE.
- CUANDO LA CULEBRA SE COMA UN # PITE UN SONIDO O APAREZCA ALGO Y DESAPAREZCA.
- SI EL JUGADOR PASA DEL #2 AL #5 o #7 Y NO AL QUE SIGUE, QUE ES EL #3, PIERDE EL JUEGO !
- SI LA CULEBRA PASA POR ENCIMA DE SU PROPIO CUERPO (COLA), PIERDE !
- CUANDO SE TAPE EL #9 DEBE SALIR UN MENSAJE QUE DIGA MSGINFO("LO HA LOGRADO, INTÉNTELO NUEVAMENTE !")
- SI LOGRA TAPAR HASTA EL #9 TAMBIÉN SE PODRÍA AÑADIR EL TIEMPO EN QUE LO HIZO


SI ALGUIEN DESEA AYUDARME, LE AGRADEZCO MUCHO ... ADEMÁS QUE ESTO ES PARA TODOS NOSOTROS :roll:

SALUDOS A TODOS
LOUIS

P.D.- LES ADJUNTO EL CÓDIGO ORIGINAL DE QBASIC, POR SI LO QUIEREN REVISAR.

Attachments

CULEBRITA.rar (8.32 KiB)

CULEBRITA NEW.jpg (45.55 KiB)


CULEBRITA OLD.jpg (80.48 KiB)

]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71298#p71298 Fri, 06 Sep 2024 18:14:22 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71298#p71298
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71299#p71299
Continué arreglando el programita de la culebrita y ya emite sonido al comerse los números (agregué un wab) y da el mensaje de despedida cuando el jugador ha terminado el juego, es decir, llegó hasta el número 9 :mrgreen:

Aún falta que se auto-elimine si se cruza sobre su propio cuerpo y que siga el orden numérico estricto :cry:

Alguien se anima a ayudarme a completar el código ? :oops:

Saludos a Todos

Louis

P.D.- Ah y también falta esconder la primera pantalla negra que sale al inicio :roll:

Attachments


CULEBRITA NEW1.jpg (65.71 KiB)

CULEBRITA.rar (2.24 KiB)
X.rar (2.78 KiB)
]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71299#p71299 Fri, 06 Sep 2024 23:01:27 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71299#p71299
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71301#p71301
Por aquí con una nueva actualización, ya respeta el orden secuencial de los números y amplié un poquito la ventana para ir anotando los números que van siendo tapados.

Saludos
Louis

P.D.- Falta hacer que no aparezca la ventana negra del comienzo y que si la culebrita se cruza con su propio cuerpo se auto-elimine, creo que aquí si necesito de alguien que me dé una manito :oops:

Attachments

CULEBRITA.rar (2.46 KiB)

CULEBRITA NEW2.jpg (76.59 KiB)

]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71301#p71301 Sun, 08 Sep 2024 00:57:05 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71301#p71301
<![CDATA[General :: Re: Other Vintage Game :: Reply by serge_girard]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71302#p71302 no_email@example.com (serge_girard) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71302#p71302 Sun, 08 Sep 2024 08:30:00 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71302#p71302 <![CDATA[General :: Re: Other Vintage Game :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71303#p71303

Code: Select all

******************************
*** COMPILADO EN HMG 3.4.0 ***
******************************

#include "hmg.ch"
#include "inkey.ch"

REQUEST HB_GT_WIN_DEFAULT

FUNCTION MAIN()

Public cons_hwnd:=GETCONSOLEWINDOW()
HideConsole(cons_hwnd)

SET CODEPAGE TO UNICODE
SET CURSOR OFF

DEFINE WINDOW SNAKE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,139,139} MAIN

DRAW RECTANGLE IN WINDOW SNAKE AT 45,195 TO 105,1028 PENCOLOR GREEN PENWIDTH 5 FILLCOLOR {112,128,144}
@ 50,200 LABEL L1 VALUE "J U E G O      L A      C U L E B R I T A" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 36 FONTCOLOR WHITE BOLD UNDERLINE TRANSPARENT
@150,125 LABEL L2 VALUE "- CON LA CULEBRITA, PASA POR ENCIMA DE CADA NÚMERO QUE APARECE EN PANTALLA, EMPIEZA CON EL #1 HASTA LLEGAR AL #9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@200,125 LABEL L3 VALUE "- DEBES SEGUIR EXTRICTAMENTE EL ORDEN SECUENCIAL 1-2-3-4-5-6-7-8-9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@250,125 LABEL L4 VALUE "- LA CULEBRITA CADA VEZ QUE AVANZA IRÁ CRECIENDO SU CUERPO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@300,125 LABEL L5 VALUE "- PUEDES AVANZAR HACIA CUALQUIER LADO (ARRIBA-ABAJO-DERECHA-IZQUIERDA), UTILIZA LAS FLECHAS DIRECCIONALES," WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@350,125 LABEL L6 VALUE "- SI VAS EN DIRECCIÓN CONTRARIA A LA QUE VAS, TE ELIMINARÁS Y PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@400,125 LABEL L7 VALUE "- SI CHOCAS CONTRA EL MARCO ROJO (LÍMITE DEL CAMPO DE JUEGO), PERDERÁS !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@450,125 LABEL L8 VALUE "- SI PASAS POR ENCIMA DE TU PROPIO CUERPO (COLA), PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@500,125 LABEL L9 VALUE "- SI QUIERES PAUSAR EL JUEGO, PARA RECONSIDERAR UNA ESTRATEGIA, PULSA ESCAPE !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT

@575,600 BUTTON B1 CAPTION "J U G A R" FONT "ARIAL" SIZE 12 BOLD ONCLICK ENTRADA()


DEFINE PLAYER MUSIC
   ROW    0
   COL    0
   WIDTH  0
   HEIGHT 0
   FILE GetWindowsFolder() + "\Media\TOWN.MID"		// SONIDO DE FONDO PARA HACERLO AMIGABLE
END PLAYER

END WINDOW

SNAKE.MUSIC.PLAY()
SNAKE.MAXIMIZE
SNAKE.ACTIVATE
RETURN


*---------------
FUNCTION ENTRADA
Local i, aCoordinates, FnNum, CnNum, lFound, cBrick

SNAKE.HIDE

MessageBoxTimeout ("LA CULEBRITA NACE EN EL CENTRO DE LA PANTALLA Y ESPERA QUE TÚ LE DES MOVIMIENTO PARA CUALQUIER LADO")

ShowConsole(cons_hwnd)
SetConsoleTitle( "Snake" )

SETMODE(25,80)
CLEA

SET COLO TO W+/B+

SNAKE.MUSIC.STOP		// AQUÍ NO SÉ CÓMO DETENER EL SONIDO

SET COLO TO R/B
CLEA

DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )

SET COLO TO W+/B

aCoordinates := { { 12, 40 } }		//snake's position
FOR i := 1 TO 9
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          IF Empty ( aCoordinates )
	       EXIT
          ELSE
               lFound := .F.
	       AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
               IF .Not. lFound
                    EXIT
               ENDIF
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )
      @ FnNum, CnNum SAY i PICT "9" COLO ("G+/N")	// MUESTRA LOS # ALEATORIAMENTE DENTRO DEL CUADRO

NEXT i

//some bricks
FOR i := 1 TO 9
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          lFound := .F.
	  AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
          IF .Not. lFound
               EXIT
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )
      IF i%1 = 0
          cBrick := "░"
      ENDIF
      IF i%2 = 0
          cBrick := "▓"
      ENDIF
      IF i%3 = 0
          cBrick := "▒"
      ENDIF
      @ FnNum, CnNum SAY cBrick COLO ("R+/N")	// Brick
NEXT i

DO JUGAR

RETURN

********************************
FUNCTION JUGAR
********************************
Local cScrChar, nNextGoal := 1, cMessage, F, C, cDirection := "", nSpeed

Keyboard CHR( 0 )

F := 12
C := 40

@ F,C SAY "☺"

X=0
INKEY(0)

DO WHILE .T.

DO CASE
   CASE lastkey() = K_RIGHT			// FLECHA A LA DERECHA

      DO CASE 
           CASE cDirection = "Up"				// PARA ARRIBA
               @ F,C SAY "╔"		//OK
           CASE cDirection = "Down"
               @ F,C SAY "╚"		//OK
      ENDCASE
      cDirection := "Right"
      C++
      nSpeed := 0.2

   CASE lastkey() = K_LEFT		// FLECHA A LA IZQUIERDA

      DO CASE 
           CASE cDirection = "Up"				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE cDirection = "Down"
               @ F,C SAY "╝"		//OK
      ENDCASE
      cDirection := "Left"
      C--
      nSpeed := 0.2

   CASE lastkey() = K_UP			// FLECHA ARRIBA

      DO CASE 
           CASE cDirection = "Right"				// PARA ARRIBA
               @ F,C SAY "╝"		//OK
           CASE cDirection = "Left"
               @ F,C SAY "╚"		//OK
      ENDCASE
      cDirection := "Up"
      F--
      nSpeed := 0.35

   CASE lastkey() = K_DOWN		// FLECHA ABAJO

      DO CASE 
           CASE cDirection = "Right"				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE cDirection = "Left"
               @ F,C SAY "╔"		//OK
      ENDCASE
      cDirection := "Down"
      F++
      nSpeed := 0.35

   CASE lastkey() = K_ESC		// PAUSA EL JUEGO
      @ 24,28 SAY "UD HA PAUSADO EL JUEGO !"
      INKEY(0)
      @ 24,28 SAY "CONTINÚE EL JUEGO .... !"
      LOOP

   CASE lastkey() != K_RIGHT .OR. lastkey() != K_LEFT .OR. lastkey() != K_UP .OR. lastkey() != K_DOWN
      EXIT

ENDCASE

cMessage := CheckCollision ( F /* nRow */ , C /* nCol */, @nNextGoal )
IF Empty ( cMessage )
     @ F,C SAY IF ( cDirection = "Right" .Or. cDirection = "Left", "═", "║" )
ELSE
     MessageBoxTimeout ( cMessage, "Snake" )
     EXIT
ENDIF

INKEY( nSpeed )				// VELOCIDAD DEL JUEGO
  
ENDDO

MessageBoxTimeout ("SALIENDO DE LA CULEBRITA !")
SNAKE.RELEASE
QUIT
RETURN

********************************************************
FUNCTION CheckCollision ( nRow, nCol, nNextGoal )
Local cScrChar := GetCharFromScreen( nRow, nCol ), i

DO CASE
     CASE isDigit ( cScrChar )
          IF Val ( cScrChar ) == nNextGoal
               IF nNextGoal = 9
		    PLAY WAVE GetWindowsFolder() + "\Media\tada.wav"
		    RETURN "LO HA LOGRADO ! ... INTÉNTELO DE NUEVO !!!"
               ENDIF
               PLAY WAVE GetWindowsFolder() + "\Media\ding.wav"
               nNextGoal ++
          ELSE
               PLAY WAVE GetWindowsFolder() + "\Media\notify.wav"
               RETURN "¡Orden equivocado!"
          ENDIF

      CASE cScrChar $ hb_utf8ToStr ( "☺═║╗╔╚╝", "EN" )
          PLAY WAVE GetWindowsFolder() + "\Media\chord.wav"
          SetColor ( "R+/B" )
          @nRow, nCol SAY "♦"
          RETURN "LO SIENTO UD SE HA SUICIDADO !"

      CASE cScrChar = hb_utf8ToStr ( "█", "EN" )
	  PLAY WAVE GetWindowsFolder() + "\Media\ringout.wav"
          FOR i := 1 TO 99
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "Y+/B" )
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )
          NEXT i
          RETURN "SALIÓ DE LA PISTA DE JUEGO"+CHR(13)+CHR(13)+"HA PERDIDO !!!"
		
      CASE cScrChar <> " "
          PLAY WAVE GetWindowsFolder() + "\Media\chimes.wav"
          RETURN "Collision with " + hb_StrToUTF8 ( cScrChar, "EN" )
ENDCASE
RETURN ""
************************************************
FUNCTION GetCharFromScreen( nRow, nCol )
Local cChars
SET CODEPAGE TO ENGLISH
cChars := SaveScreen (nRow, nCol, nRow, nCol)
SET CODEPAGE TO UNICODE
RETURN Left ( cChars, 1 )


#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include <windows.h>

// doesn't work with win32 function GetConsoleWindow()
HWND GetConWin()
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
return hwnd;
}

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl ((LONG_PTR) GetConWin());
}

HB_FUNC(HIDECONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_HIDE); // SW_HIDE
}

HB_FUNC(SHOWCONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd ==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_SHOW); // because 1'st time console stays minimized
ShowWindow(hwnd,SW_RESTORE); //SW_SHOW
SetFocus(hwnd);
SetForegroundWindow(hwnd);
}

HB_FUNC(SETCONSOLETITLE)
{ 
SetConsoleTitle( (char *) hb_parc(1) );
}

#pragma ENDDUMP
]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71303#p71303 Sun, 08 Sep 2024 16:03:51 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71303#p71303
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71304#p71304
Siempre Ud muy amable !

it turned out prettier

Saludos
Louis

Attachments


NEW SNAKE.jpg (76.89 KiB)

]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71304#p71304 Sun, 08 Sep 2024 17:15:52 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71304#p71304
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71305#p71305
Agradeciendo nuevamente la gentileza del Amigo Edward por su aporte al código, me permití hacer un pequeño arreglo
la pantalla a 90 para poder ir presentando los números que va cubriendo la culebrita y el sonido del x.wab que me parece
más fuerte y cool :mrgreen:

Espero les agrade ...

Saludos
Louis

P.D.- Si alguien cree que puede agregar algo para hacerlo más cool, You can do it and don't forget to share with all of us ! :geek:

Code: Select all

******************************
*** COMPILADO EN HMG 3.4.0 ***
******************************

#include "hmg.ch"
#include "inkey.ch"

REQUEST HB_GT_WIN_DEFAULT

FUNCTION MAIN()

Public cons_hwnd:=GETCONSOLEWINDOW()
HideConsole(cons_hwnd)

SET CODEPAGE TO UNICODE
SET CURSOR OFF

DEFINE WINDOW SNAKE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,139,139} MAIN

DRAW RECTANGLE IN WINDOW SNAKE AT 45,195 TO 105,1028 PENCOLOR GREEN PENWIDTH 5 FILLCOLOR {112,128,144}
@ 50,200 LABEL L1 VALUE "J U E G O      L A      C U L E B R I T A" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 36 FONTCOLOR WHITE BOLD UNDERLINE TRANSPARENT
@150,125 LABEL L2 VALUE "- CON LA CULEBRITA, PASA POR ENCIMA DE CADA NÚMERO QUE APARECE EN PANTALLA, EMPIEZA CON EL #1 HASTA LLEGAR AL #9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@200,125 LABEL L3 VALUE "- DEBES SEGUIR EXTRICTAMENTE EL ORDEN SECUENCIAL 1-2-3-4-5-6-7-8-9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@250,125 LABEL L4 VALUE "- LA CULEBRITA CADA VEZ QUE AVANZA IRÁ CRECIENDO SU CUERPO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@300,125 LABEL L5 VALUE "- PUEDES AVANZAR HACIA CUALQUIER LADO (ARRIBA-ABAJO-DERECHA-IZQUIERDA), UTILIZA LAS FLECHAS DIRECCIONALES," WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@350,125 LABEL L6 VALUE "- SI VAS EN DIRECCIÓN CONTRARIA A LA QUE VAS, TE ELIMINARÁS Y PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@400,125 LABEL L7 VALUE "- SI CHOCAS CONTRA EL MARCO ROJO (LÍMITE DEL CAMPO DE JUEGO), PERDERÁS !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@450,125 LABEL L8 VALUE "- SI PASAS POR ENCIMA DE TU PROPIO CUERPO (COLA), PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@500,125 LABEL L9 VALUE "- SI QUIERES PAUSAR EL JUEGO, PARA RECONSIDERAR UNA ESTRATEGIA, PULSA ESCAPE !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT

@575,600 BUTTON B1 CAPTION "J U G A R" FONT "ARIAL" SIZE 12 BOLD ONCLICK ENTRADA()


DEFINE PLAYER MUSIC
   ROW    0
   COL    0
   WIDTH  0
   HEIGHT 0
   FILE GetWindowsFolder() + "\Media\TOWN.MID"		// SONIDO DE FONDO PARA HACERLO AMIGABLE
END PLAYER

END WINDOW

SNAKE.MUSIC.PLAY()
SNAKE.MAXIMIZE
SNAKE.ACTIVATE
RETURN


*---------------
FUNCTION ENTRADA
Local i, aCoordinates, FnNum, CnNum, lFound, cBrick

SNAKE.HIDE

MessageBoxTimeout ("LA CULEBRITA NACE EN EL CENTRO DE LA PANTALLA"+CHR(13)+CHR(13)+" Y ESPERA QUE TÚ LE DES MOVIMIENTO"+CHR(13)+"PARA CUALQUIER LADO ╬ ...")

ShowConsole(cons_hwnd)
SetConsoleTitle( "Snake" )

SETMODE(25,90)
CLEA

SET COLO TO W+/B+

SNAKE.MUSIC.STOP

SET COLO TO R/B
CLEA

DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )

SET COLO TO W+/B

aCoordinates := { { 12, 40 } }		//snake's position
FOR i := 1 TO 9
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          IF Empty ( aCoordinates )
	       EXIT
          ELSE
               lFound := .F.
	       AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
               IF .Not. lFound
                    EXIT
               ENDIF
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )
      @ FnNum, CnNum SAY i PICT "9" COLO ("G+/N")	// MUESTRA LOS # ALEATORIAMENTE DENTRO DEL CUADRO
NEXT i

//nine bricks
FOR i := 1 TO 9
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          lFound := .F.
	  AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
          IF .Not. lFound
               EXIT
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )

      IF i%1 = 0 .OR. i%2 = 0 .OR. i%3 = 0
          cBrick := "◙"
      ENDIF

      @ FnNum, CnNum SAY cBrick COLO ("W+/B")	// Brick
NEXT i

DO JUGAR

RETURN

********************************
FUNCTION JUGAR
********************************
Local cScrChar, nNextGoal := 1, cMessage, F, C, cDirection := "", nSpeed

@ 6,82 SAY "NÚMEROS"
@ 7,82 SAY "TAPADOS"
@ 8,82 SAY "======="

Keyboard CHR( 0 )

F := 12
C := 40

@ F,C SAY "╬"

X=0
INKEY(0)

DO WHILE .T.

DO CASE
   CASE lastkey() = K_RIGHT			// FLECHA A LA DERECHA

      DO CASE 
           CASE cDirection = "Up"				// PARA ARRIBA
               @ F,C SAY "╔"		//OK
           CASE cDirection = "Down"
               @ F,C SAY "╚"		//OK
      ENDCASE
      cDirection := "Right"
      C++
      nSpeed := 0.2

   CASE lastkey() = K_LEFT		// FLECHA A LA IZQUIERDA

      DO CASE 
           CASE cDirection = "Up"				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE cDirection = "Down"
               @ F,C SAY "╝"		//OK
      ENDCASE
      cDirection := "Left"
      C--
      nSpeed := 0.2

   CASE lastkey() = K_UP			// FLECHA ARRIBA

      DO CASE 
           CASE cDirection = "Right"				// PARA ARRIBA
               @ F,C SAY "╝"		//OK
           CASE cDirection = "Left"
               @ F,C SAY "╚"		//OK
      ENDCASE
      cDirection := "Up"
      F--
      nSpeed := 0.35

   CASE lastkey() = K_DOWN		// FLECHA ABAJO

      DO CASE 
           CASE cDirection = "Right"				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE cDirection = "Left"
               @ F,C SAY "╔"		//OK
      ENDCASE
      cDirection := "Down"
      F++
      nSpeed := 0.35

   CASE lastkey() = K_ESC		// PAUSA EL JUEGO
      @ 24,28 SAY "UD HA PAUSADO EL JUEGO !"
      INKEY(0)
      @ 24,28 SAY "CONTINÚE EL JUEGO .... !"
      LOOP

   CASE lastkey() != K_RIGHT .OR. lastkey() != K_LEFT .OR. lastkey() != K_UP .OR. lastkey() != K_DOWN
      EXIT

ENDCASE

cMessage := CheckCollision ( F /* nRow */ , C /* nCol */, @nNextGoal )
IF Empty ( cMessage )
     @ F,C SAY IF ( cDirection = "Right" .Or. cDirection = "Left", "═", "║" )
ELSE
     MessageBoxTimeout ( cMessage, "Snake" )
     EXIT
ENDIF

INKEY( nSpeed )				// VELOCIDAD DEL JUEGO
  
ENDDO

MessageBoxTimeout ("SALIENDO DE LA CULEBRITA !")
SNAKE.RELEASE
QUIT
RETURN

********************************************************
FUNCTION CheckCollision ( nRow, nCol, nNextGoal )
Local cScrChar := GetCharFromScreen( nRow, nCol ), i

DO CASE
     CASE isDigit ( cScrChar )
          IF Val ( cScrChar ) == nNextGoal
               IF nNextGoal = 9
		    PLAY WAVE GetWindowsFolder() + "\Media\tada.wav"
                    @ nNextGoal+8,85 SAY ALLTRIM(STR(nNextGoal))
		    RETURN "LO HA LOGRADO ! ... INTÉNTELO DE NUEVO !!!"
               ENDIF
               PLAY WAVE "X.wav"
               //PLAY WAVE GetWindowsFolder() + "\Media\ding.wav"
               @ nNextGoal+8,85 SAY ALLTRIM(STR(nNextGoal))
               nNextGoal ++
          ELSE
               PLAY WAVE GetWindowsFolder() + "\Media\notify.wav"
               RETURN "¡ESE NÚMERO NO ERA EL QUE SEGUÍA!"
          ENDIF

      CASE cScrChar $ hb_utf8ToStr ( "☺═║╗╔╚╝", "EN" )
          PLAY WAVE GetWindowsFolder() + "\Media\chord.wav"
          SetColor ( "R+/B" )
          @nRow, nCol SAY "♦"
          RETURN "LO SIENTO UD SE HA SUICIDADO !"

      CASE cScrChar = hb_utf8ToStr ( "█", "EN" )
	  PLAY WAVE GetWindowsFolder() + "\Media\ringout.wav"
          FOR i := 1 TO 99
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "Y+/B" )
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )
          NEXT i
          RETURN "SALIÓ DE LA PISTA DE JUEGO"+CHR(13)+CHR(13)+"HA PERDIDO !!!"
		
      CASE cScrChar <> " "
          PLAY WAVE GetWindowsFolder() + "\Media\chimes.wav"
          RETURN "Collision with " + hb_StrToUTF8 ( cScrChar, "EN" )
ENDCASE
RETURN ""


************************************************
FUNCTION GetCharFromScreen( nRow, nCol )
Local cChars
SET CODEPAGE TO ENGLISH
cChars := SaveScreen (nRow, nCol, nRow, nCol)
SET CODEPAGE TO UNICODE
RETURN Left ( cChars, 1 )


#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include <windows.h>

// doesn't work with win32 function GetConsoleWindow()
HWND GetConWin()
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
return hwnd;
}

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl ((LONG_PTR) GetConWin());
}

HB_FUNC(HIDECONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_HIDE); // SW_HIDE
}

HB_FUNC(SHOWCONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd ==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_SHOW); // because 1'st time console stays minimized
ShowWindow(hwnd,SW_RESTORE); //SW_SHOW
SetFocus(hwnd);
SetForegroundWindow(hwnd);
}

HB_FUNC(SETCONSOLETITLE)
{ 
SetConsoleTitle( (char *) hb_parc(1) );
}

#pragma ENDDUMP

Attachments


SNAKE.jpg (99.03 KiB)

]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71305#p71305 Mon, 09 Sep 2024 00:06:03 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71305#p71305
<![CDATA[General :: Re: Other Vintage Game :: Reply by edk]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71306#p71306
Se agregó SplashScreen, pregunta de repetición, cabeza de serpiente, niveles de dificultad:

Code: Select all

******************************
*** COMPILADO EN HMG 3.4.0 ***
******************************

#include "hmg.ch"
#include "inkey.ch"

REQUEST HB_GT_WIN_DEFAULT

FUNCTION MAIN()

Public cons_hwnd:=GETCONSOLEWINDOW(), nLevel := 1, cEgg := "◌"

HideConsole(cons_hwnd)


SET WINDOW MAIN OFF
CreateScreenSplash ()
SET WINDOW MAIN ON

SET CODEPAGE TO UNICODE
SET CURSOR OFF

DEFINE WINDOW SNAKE AT 0,0 WIDTH 0 HEIGHT 0 BACKCOLOR {0,139,139} MAIN

DRAW RECTANGLE IN WINDOW SNAKE AT 45,195 TO 105,1028 PENCOLOR GREEN PENWIDTH 5 FILLCOLOR {112,128,144}
@ 50,200 LABEL L1 VALUE "J U E G O      L A      C U L E B R I T A" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 36 FONTCOLOR WHITE BOLD UNDERLINE TRANSPARENT
@150,125 LABEL L2 VALUE "- CON LA CULEBRITA, PASA POR ENCIMA DE CADA NÚMERO QUE APARECE EN PANTALLA, EMPIEZA CON EL #1 HASTA LLEGAR AL #9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@200,125 LABEL L3 VALUE "- DEBES SEGUIR EXTRICTAMENTE EL ORDEN SECUENCIAL 1-2-3-4-5-6-7-8-9  !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@250,125 LABEL L4 VALUE "- LA CULEBRITA CADA VEZ QUE AVANZA IRÁ CRECIENDO SU CUERPO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@300,125 LABEL L5 VALUE "- PUEDES AVANZAR HACIA CUALQUIER LADO (ARRIBA-ABAJO-DERECHA-IZQUIERDA), UTILIZA LAS FLECHAS DIRECCIONALES," WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@350,125 LABEL L6 VALUE "- SI VAS EN DIRECCIÓN CONTRARIA A LA QUE VAS, TE ELIMINARÁS Y PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@400,125 LABEL L7 VALUE "- SI CHOCAS CONTRA EL MARCO ROJO (LÍMITE DEL CAMPO DE JUEGO), PERDERÁS !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@450,125 LABEL L8 VALUE "- SI PASAS POR ENCIMA DE TU PROPIO CUERPO (COLA), PERDERÁS EL JUEGO !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT
@500,125 LABEL L9 VALUE "- SI QUIERES PAUSAR EL JUEGO, PARA RECONSIDERAR UNA ESTRATEGIA, PULSA ESCAPE !" WIDTH 999 HEIGHT 50 FONT "ARIAL" SIZE 14 BOLD FONTCOLOR WHITE TRANSPARENT

@575,600 BUTTON B1 CAPTION "J U G A R" FONT "ARIAL" SIZE 12 BOLD ONCLICK ENTRADA()

DEFINE PLAYER MUSIC
   ROW    0
   COL    0
   WIDTH  0
   HEIGHT 0
   FILE GetWindowsFolder() + "\Media\TOWN.MID"		// SONIDO DE FONDO PARA HACERLO AMIGABLE
END PLAYER

END WINDOW

DoMethod ( "SplashScreen", "HIDE" )

SNAKE.MUSIC.PLAY()
SNAKE.MAXIMIZE
SNAKE.ACTIVATE
RETURN


*-------------------------------------------------------------------------------------------*
PROCEDURE CreateScreenSplash ()
*-------------------------------------------------------------------------------------------*

   DEFINE WINDOW SplashScreen;
         AT 0,0;  
         WIDTH 400;
         HEIGHT 200;
         BACKCOLOR WHITE; 
         NOSYSMENU;
         NOSIZE;
         NOMINIMIZE;
         NOMAXIMIZE; 
         NOCAPTION ;
         CHILD

         SET WINDOW SplashScreen TRANSPARENT TO COLOR WHITE

         @   0,   0 LABEL Frame_1 VALUE "" WIDTH 400 HEIGHT 200 BACKCOLOR NAVY
         @  15,  15 LABEL Frame_2 VALUE "" WIDTH 370 HEIGHT 170 BACKCOLOR WHITE
                 
         @  45,  20 LABEL Label_1 VALUE "S N A K E" WIDTH 360 HEIGHT 60 TRANSPARENT FONT "Times New Roman" SIZE 36 FONTCOLOR NAVY CENTERALIGN 
         @ 105,  20 LABEL Label_2 VALUE "Loading ..." WIDTH 360 HEIGHT 60 TRANSPARENT FONT "Times New Roman" SIZE 36 FONTCOLOR NAVY CENTERALIGN 
         
   END WINDOW

SplashScreen.CENTER
SplashScreen.SHOW

 
RETURN


*---------------
FUNCTION ENTRADA
Local i, aCoordinates, FnNum, CnNum, lFound, cBrick := "◙"

SNAKE.HIDE

MessageBoxTimeout ("LA CULEBRITA NACE EN EL CENTRO DE LA PANTALLA"+CHR(13)+CHR(13)+" Y ESPERA QUE TÚ LE DES MOVIMIENTO"+CHR(13)+"PARA CUALQUIER LADO " + cEgg + " ...")

SNAKE.MUSIC.STOP

ShowConsole(cons_hwnd)
SetConsoleTitle( "Snake" )

SETMODE(25,90)

SET COLO TO R/B
CLEA

DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )

SET COLO TO W+/B

aCoordinates := { { 12, 40 } }		//snake egg position
FOR i := 1 TO 9
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          IF Empty ( aCoordinates )
	       EXIT
          ELSE
               lFound := .F.
	       AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
               IF .Not. lFound
                    EXIT
               ENDIF
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )
      @ FnNum, CnNum SAY i PICT "9" COLO ("G+/N")	// MUESTRA LOS # ALEATORIAMENTE DENTRO DEL CUADRO
NEXT i

//nine bricks
FOR i := 1 TO 9 + ( nLevel - 1 ) * 3
     DO WHILE .T.
          FnNum := HB_RANDOMINT(1,23)
          CnNum := HB_RANDOMINT(1,78)
          lFound := .F.
	  AEval ( aCoordinates, { | x | IF ( x [ 1 ] == FnNum .And. x [ 2 ] == CnNum, lFound := .T., Nil ) } ) 
          IF .Not. lFound
               EXIT
          ENDIF
      ENDDO
      AAdd ( aCoordinates, { FnNum, CnNum } )

      @ FnNum, CnNum SAY cBrick COLO ("W+/B")	// Brick

NEXT i

DO JUGAR

RETURN

********************************
FUNCTION JUGAR
********************************
Local cScrChar, nNextGoal := 1, cMessage, F, C, nDirection := 0, nSpeed
Local cHead := "", cUp_Head := "▲", cDown_Head := "▼", cRight_Head := "►", cLeft_Head := "◄"
Local nSpeed_X := 0.2, nSpeed_Y := 0.35

@ 3,82 SAY " LEVEL "
@ 4,82 SAY PADC (AllTrim (Str ( nLevel ) ), 7 )
@ 5,82 SAY "-------"

@ 6,82 SAY "NÚMEROS"
@ 7,82 SAY "TAPADOS"
@ 8,82 SAY "======="

DO WHILE NEXTKEY() # 0 .OR. LASTKEY() # 0   //Reset last and next key buffer
     KEYBOARD CHR(0)
     INKEY(0.1)
     DO EVENTS
ENDDO

F := 12
C := 40

@ F,C SAY cEgg

X=0
INKEY(0)

DO WHILE .T.

DO CASE
   CASE lastkey() = K_RIGHT			// FLECHA A LA DERECHA

      DO CASE 
           CASE nDirection = K_UP				// PARA ARRIBA
               @ F,C SAY "╔"		//OK
           CASE nDirection = K_DOWN
               @ F,C SAY "╚"		//OK
           OTHER
               @ F,C SAY "═"		//OK
      ENDCASE
      nDirection := K_RIGHT
      cHead := cRight_Head
      C++
      nSpeed := nSpeed_X

   CASE lastkey() = K_LEFT		// FLECHA A LA IZQUIERDA

      DO CASE 
           CASE nDirection = K_UP				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE nDirection = K_DOWN
               @ F,C SAY "╝"		//OK
           OTHER
               @ F,C SAY "═"		//OK
      ENDCASE
      nDirection := K_LEFT
      cHead := cLeft_Head
      C--
      nSpeed := nSpeed_X

   CASE lastkey() = K_UP			// FLECHA ARRIBA

      DO CASE 
           CASE nDirection = K_RIGHT				// PARA ARRIBA
               @ F,C SAY "╝"		//OK
           CASE nDirection = K_LEFT
               @ F,C SAY "╚"		//OK
           OTHER
               @ F,C SAY "║"		//OK
      ENDCASE
      nDirection := K_UP
      cHead := cUp_Head
      F--
      nSpeed := nSpeed_Y

   CASE lastkey() = K_DOWN		// FLECHA ABAJO

      DO CASE 
           CASE nDirection = K_RIGHT				// PARA ARRIBA
               @ F,C SAY "╗"		//OK
           CASE nDirection = K_LEFT
               @ F,C SAY "╔"		//OK
           OTHER
               @ F,C SAY "║"		//OK
      ENDCASE
      nDirection := K_DOWN
      cHead := cDown_Head
      F++
      nSpeed := nSpeed_Y

   CASE lastkey() = K_ESC		// PAUSA EL JUEGO
      @ 24,28 SAY "UD HA PAUSADO EL JUEGO !"
      INKEY(0)
      @ 24,28 SAY "CONTINÚE EL JUEGO .... !"
      LOOP

   CASE lastkey() != K_RIGHT .OR. lastkey() != K_LEFT .OR. lastkey() != K_UP .OR. lastkey() != K_DOWN
      MsgStop ("SALIENDO DE LA CULEBRITA !")
      SNAKE.RELEASE
      QUIT

ENDCASE

cMessage := CheckCollision ( F /* nRow */ , C /* nCol */, @nNextGoal )

IF Empty ( cMessage )
     @ F,C SAY cHead
ELSE
     MessageBoxTimeout ( cMessage, "Snake" )
     EXIT
ENDIF

INKEY( Max ( nSpeed - (nLevel - 1) * .05, .03 ) )				// VELOCIDAD DEL JUEGO
  
ENDDO

IF MsgYesNo ( "¿Quieres jugar de nuevo?", "Snake" )
     ENTRADA()
ENDIF

SNAKE.RELEASE
QUIT

RETURN

********************************************************
FUNCTION CheckCollision ( nRow, nCol, nNextGoal )
Local cScrChar := GetCharFromScreen( nRow, nCol ), i

DO CASE
     CASE isDigit ( cScrChar )
          IF Val ( cScrChar ) == nNextGoal
               IF nNextGoal = 9
		    PLAY WAVE GetWindowsFolder() + "\Media\tada.wav"
                    @ nNextGoal+8,85 SAY ALLTRIM(STR(nNextGoal))
                    nLevel ++
		    RETURN "LO HA LOGRADO ! ... INTÉNTELO DE NUEVO !!!"
               ENDIF
               PLAY WAVE "X.wav"
               //PLAY WAVE GetWindowsFolder() + "\Media\ding.wav"
               @ nNextGoal+8,85 SAY ALLTRIM(STR(nNextGoal))
               nNextGoal ++
          ELSE
               PLAY WAVE GetWindowsFolder() + "\Media\notify.wav"
               RETURN "¡ESE NÚMERO NO ERA EL QUE SEGUÍA!"
          ENDIF

      CASE cScrChar $ hb_utf8ToStr ( cEgg + "═║╗╔╚╝", "EN" )
          PLAY WAVE GetWindowsFolder() + "\Media\chord.wav"
          @nRow, nCol SAY "♦" COLO ("R+/B")
          RETURN "LO SIENTO UD SE HA SUICIDADO !"

      CASE cScrChar = hb_utf8ToStr ( "█", "EN" )
	  PLAY WAVE GetWindowsFolder() + "\Media\ringout.wav"
          FOR i := 1 TO 99
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "Y+/B" )
               DispBox( 0,0,24,79, hb_utf8ToStr ( "█", "EN" ), "R/B" )
          NEXT i
          RETURN "SALIÓ DE LA PISTA DE JUEGO"+CHR(13)+CHR(13)+"HA PERDIDO !!!"
		
      CASE cScrChar <> " "
          PLAY WAVE GetWindowsFolder() + "\Media\chimes.wav"
          RETURN "Oh, no, no te golpees la cabeza contra la pared."
ENDCASE
RETURN ""

************************************************
FUNCTION GetCharFromScreen( nRow, nCol )
Local cChars
SET CODEPAGE TO ENGLISH
cChars := SaveScreen (nRow, nCol, nRow, nCol)
SET CODEPAGE TO UNICODE
RETURN Left ( cChars, 1 )


#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include <windows.h>

// doesn't work with win32 function GetConsoleWindow()
HWND GetConWin()
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
return hwnd;
}

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl ((LONG_PTR) GetConWin());
}

HB_FUNC(HIDECONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_HIDE); // SW_HIDE
}

HB_FUNC(SHOWCONSOLE )
{
HWND hwnd;
hwnd = (HWND) hb_parnl (1);

if (hwnd ==NULL)
	hwnd = GetConWin();
ShowWindow(hwnd,SW_SHOW); // because 1'st time console stays minimized
ShowWindow(hwnd,SW_RESTORE); //SW_SHOW
SetFocus(hwnd);
SetForegroundWindow(hwnd);
}

HB_FUNC(SETCONSOLETITLE)
{ 
SetConsoleTitle( (char *) hb_parc(1) );
}

#pragma ENDDUMP
]]>
no_email@example.com (edk) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71306#p71306 Mon, 09 Sep 2024 05:52:09 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71306#p71306
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71309#p71309
Mejoró muchísimo más, está super cool con los niveles de dificultad !

Saludos
Louis

P.D.- Estoy luchando con el Nivel 4 :D

Attachments


SNAKE LEVEL3.jpg (101.04 KiB)

]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71309#p71309 Mon, 09 Sep 2024 15:19:20 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71309#p71309
<![CDATA[General :: Re: Other Vintage Game :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71310#p71310
La ventana del juego ya aparece en el centro de la pantalla y le pregunta al jugador si desea oir la música de fondo mientras juega ...
La primera vez la música se detiene, pero si desea continuar jugando ahí le pregunta ...

Espero les guste a todos 8-)

Saludos
Louis

Attachments


SNAKE.jpg (128.35 KiB)

CULEBRITA.rar (4.43 KiB)
]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71310#p71310 Mon, 09 Sep 2024 16:33:45 +0000 http://www.hmgforum.com/viewtopic.php?f=24&t=7596&p=71310#p71310
<![CDATA[HMG Samples :: Funcion CAPTA y EDITA sobre harbour 3.44 :: Author nelido]]> http://www.hmgforum.com/viewtopic.php?f=9&t=7597&p=71311#p71311
DOCUMENTACIÓN DE LAS FUNCIONES CAPTA Y EDITA

FUNCTION CAPTA

DESARROLLADOR: NELIDO O. SANCHEZ ALVAREZ, INFORMATICO SANTA CLARA-CUBA

OBJETIVO: ESTA FUNCION PERMITE RELACIONAR LAS DIFERENTES TABLAS XBASES (.dbf)
QUE INTERVIENEN EN EL PROCESO DE CAPTACION Y VALIDACION DE DATOS
DE CUALQUIER APLICACION, FACILITANDO EL USO DEL MOUSE PARA EL
DESPLAZAMIENTO EN LA PANTALLA Y LA EXPORTACION EN FORMATO EXCEL
DE LA INFORMACION CAPTADA.

EL PROGRAMADOR SOLO NECESITA DISEÑAR LA TABLA XBASE PRINCIPAL Y LAS
AUXILIARES. EL PROCESO DE CAPTACION DE DATOS SE LOGRA DE FORMA
AUTOMATICA HACIENDO UNA LLAMADA DESDE SU APLICACION A ESTA FUNCION
PASANDOLE LOS PARAMETROS SEGUN SEAN LAS TABLAS XBASES QUE SE
CREARON PARA CADA OPCION DEL MENU DE ENTRADA DE DATOS DEL SISTEMA.

EL PROGRAMADOR TAMBIEN PUEDE DEFINIR FUNCIONES Y PROCEDIMIENTOS
PARA LA VALIDACION ESPECIFICA DE LOS DATOS DE SU APLICACION
PASANDOLOS COMO PARAMETROS A LA FUNCION CAPTA.

LA FUNCION REALIZA UNA COMPROBACION DE COMPATIBILIDAD DE TIPOS
ENTRE LOS CAMPOS DE LA TABLA XBASE PRINCIPAL Y LAS AUXILIARES.

- Ver ejemplo del uso de esta función en la aplicación Metros.prg

- Ver el Metrosc.bat que compila y enlaza la aplicación Metros.prg con
Captura.o (.obj) que contiene dichas funciones.


LLAMADA:

CAPTA (<ExpN1>,<ExpB1>,<ExpC1>[,<Arr1>[,<Arr2>[,<ExpC2>[,<ExpN2>[,<ExpN3>
[,<ExpC3>[,<ExpN4>[,<ExpC4>[,<Arr3>[,<Arr4>[,<ExpB2>]]]]]]]]]]]]])

DONDE:

<ExpN1> CANTIDAD DE CAMPOS INDICES (MAXIMO 10).
<ExpB1> EXPRESION BOOLEANA PARA FIJAR O NO ULTIMO CAMPO INDICE.
<ExpC1> NOMBRE (SIN EXTENSION) DE LA TABLA XBASE (.dbf) PRINCIPAL A CAPTAR.
<Arr1> ARREGLO CON LOS TITULOS DESEADOS PARA CADA CAMPO DE LA TABLA XBASE
PRINCIPAL A CAPTAR.
<Arr2> ARREGLO CON LOS NOMBRES DE LAS TABLAS XBASES AUXILARES PARA CADA
CAMPO INDICE DE LA TABLA XBASE PRINCIPAL A CAPTAR.
<ExpC2> CADENA CON EL NOMBRE DE UNA FUNCION DEFINIDA POR EL USUARIO (SIN
ESPECIFICAR PARENTESIS O ARGUMENTOS). ESTA FUNCION SERA EMPLEADA
POR CAPTA PARA VALIDAR CUALQUIER CAMPO DE LA TABLA XBASE PRINCIPAL
DE LA ENTRADA DE DATOS.
<ExpN2> FILA DE PANTALLA DONDE APARECERA <ExpC3>.
<ExpN3> COLUMNA DE PANTALLA DONDE APARECERA <ExpC3>.
<ExpC3> CADENA CON EL TITULO DE LA ENTRADA DE DATOS.
<ExpN4> NUMERO DEL ULTIMO CAMPO DE LA TABLA XBASE PRINCIPAL QUE SE DESEA
CAPTAR, SI SE OMITE SE ASUME EL ULTIMO CAMPO DE LA TABLA XBASE.
<ExpC4> CADENA CON EL NOMBRE DE UN PROCEDIMIENTO DEFINIDO POR EL USUARIO
QUE SERA EMPLEADO POR CAPTA PARA VALIDAR Y MOSTRAR VENTANAS DE AYUDA A LOS
CAMPOS QUE NO SON INDICES.
<Arr3> ARREGLO CON LAS LINEAS DE ENCABEZAMIENTOS PARA LOS LISTADOS
PANTALLA-IMPRESORA-FICHERO.
<Arr4> ARREGLO CON LOS NOMBRES DE TABLAS XBASES AUXILIARES, PARA CAPTAR
Y VALIDAR LOS CAMPOS NO INDICES. EL SUBINDICE DEL ARREGLO CORRESPONDE
A LA POSICION DE LA COLUMNA EN LA PANTALLA DE CAPTACION
DESDE EL 1 HASTA EL ULTIMO CAMPO.
<ExpB2> EXPRESION BOOLEANA PARA HABILITAR O NO LA TECLA F2 - ELIMINAR EN LA
OPCION F3-VER/EDITAR.

- CAPTA retorna .T. (Verdadero) si el usuario realizó cambios en la tabla
xbase principal, de lo contrario .F. (Falso).

- EL símbolo [] en la llamada significa que el parámetro es opcional.

RESTRICCIONES:

1) LA APLICACION NO DEBE USAR TABLAS XBASES LLAMADAS: CLTMP.DBF,
CLTMP.DBT, LETMP.DBF NI VARIABLES: VCT, VCE, VCS, VCN.

2) LOS CAMPOS LLAVES DE LA TABLA XBASE PRINCIPAL DEBEN SER LOS
PRIMEROS Y EL NOMBRE DE LOS CAMPOS LLAVES NO DEBE TENER MAS DE 9
CARACTERES PORQUE LA FUNCION ADICIONA 1 CARACTER.

FUNCTION EDITA

DESARROLLADOR: NELIDO O. SANCHEZ ALVAREZ, INFORMATICO SANTA CLARA-CUBA

OBJETIVO: ESTA FUNCION PERMITE EDITAR POR PANTALLA, IMPRESORA Y FICHERO
CUALQUIER INFORME CREADO EN UNA TABLA XBASE (.dbf)
OFRECIENDO LA POSIBILIDAD DE PONERLE TITULOS A CADA COLUMNA Y
ENCABEZADOS Y PIE A LOS INFORMES. LOS INFORMES PUEDEN SER
EXPORTADOS AL FORMATO EXCEL.

- Ver ejemplo de uso de esta función en la aplicación Metros.prg

LLAMADA:

EDITA (<ExpC1>[,<Arr1>[,<Arr2>[,<ExpN1>[,<ExpN2>[,<ExpN3>[,<ExpC2>[,<Arr3>]]]]]]])

DONDE:

<ExpC1> NOMBRE (SIN EXTENSION) DE LA TABLA XBASE A EDITAR.
<Arr1> ARREGLO CON LOS TITULOS DESEADOS PARA CADA CAMPO DE LA TABLA XBASE
<Arr2> ARREGLO CON LAS LINEAS DE ENCABEZAMIENTOS DE LOS INFORMES.
<ExpN1> NUMERO DEL ULTIMO CAMPO QUE SE DESEA EDITAR, SI SE OMITE SE
SE ASUME EL ULTIMO CAMPO DE LA TABLA XBASE.
<ExpN2> FILA DE PANTALLA DONDE APARECERA LA <ExpC2>.
<ExpN3> COLUMNA DE PANTALLA DONDE APARECERA LA <ExpC2>.
<ExpC2> CADENA CON EL TITULO DEL INFORME.
<Arr3> ARREGLO CON LA LINEAS DE PIE DE LOS INFORMES.

- EL símbolo [] en la llamada significa que el parámetro es opcional.

Ejemplo de uso
https://drive.google.com/file/d/1dHKOKF ... p=drivesdk

User avatar
nelido

Posts: 3
Joined: Mon Sep 09, 2024 12:41 pm
Location: Sant]]>
no_email@example.com (nelido) http://www.hmgforum.com/viewtopic.php?f=9&t=7597&p=71311#p71311 Thu, 12 Sep 2024 19:39:53 +0000 http://www.hmgforum.com/viewtopic.php?f=9&t=7597&p=71311#p71311
<![CDATA[HMG Utilities :: Editor de tablas Xbase (es-en) para windows 32-64 bits :: Author nelido]]> http://www.hmgforum.com/viewtopic.php?f=10&t=7598&p=71312#p71312 https://drive.google.com/file/d/11EZq73 ... p=drivesdk

DbviewSetup-en.exe
https://drive.google.com/file/d/11Fy2xp ... p=drivesdk

DbviewSetup-es.exe
https://drive.google.com/file/d/11IS7x2 ... p=drivesdk]]>
no_email@example.com (nelido) http://www.hmgforum.com/viewtopic.php?f=10&t=7598&p=71312#p71312 Sat, 14 Sep 2024 15:14:21 +0000 http://www.hmgforum.com/viewtopic.php?f=10&t=7598&p=71312#p71312
<![CDATA[My HMG Projects :: Re: Descubrir la Imagen oculta :: Reply by LOUIS]]> http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71265#p71265
Saludos.

Attachments

IMAGENES.rar (2.32 KiB)
]]>
no_email@example.com (LOUIS) http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71265#p71265 Sat, 24 Aug 2024 15:57:32 +0000 http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71265#p71265
<![CDATA[My HMG Projects :: Re: Descubrir la Imagen oculta :: Reply by danielmaximiliano]]> http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71267#p71267 no_email@example.com (danielmaximiliano) http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71267#p71267 Sat, 24 Aug 2024 21:26:41 +0000 http://www.hmgforum.com/viewtopic.php?f=15&t=7545&p=71267#p71267 <![CDATA[General Discussions :: Winlator - A way to run Windows Applications in Android :: Author Rathinagiri]]> http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71288#p71288
Recently I came across an Android Application which creates a Windows Emulator using WINE in Android OS. It can be downloaded from https://winlator.org/

Some of our HMG friends had already tried and successfully running (even compiling using HMG) their windows exe files inside Android.]]>
no_email@example.com (Rathinagiri) http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71288#p71288 Wed, 04 Sep 2024 10:40:11 +0000 http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71288#p71288
<![CDATA[General Discussions :: Re: Winlator - A way to run Windows Applications in Android :: Reply by serge_girard]]> http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71289#p71289 I will try later!

S]]>
no_email@example.com (serge_girard) http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71289#p71289 Wed, 04 Sep 2024 11:01:40 +0000 http://www.hmgforum.com/viewtopic.php?f=12&t=7595&p=71289#p71289