Saltar al contenido

Un juego solitario


pegones1

Recommended Posts

rolano, a Excel 2003 hay que dárselo masticado:

Tapete.Pictures(Application.Caller).select
Selection.ShapeRange.ZOrder msoBringToFront
[/CODE]

Gerson ya se que lo haces con buena voluntad.

Para ser β-tester hay que ser más explícito, indicando la rutina y la sentencia dónde se produce el error.

Como sólo tengo instalado el visor de Excel 2003, no puedo ver las macros corriendo y es cómo si estuviera en la pista de carreras dando palos de ciego.

[color=navy]Solitario en construcción, ¡disculpen las molestias![/color]

SOLITARIO_PW12.zip

Enlace a comentario
Compartir con otras webs

Pedro

Me he llevado una sorpresa con 2007, una vez comienza a cargar, me muestra el error:

unaCarta = Baraja.Cells((contCarta - 1) * 6 + 9, 1).Value
.Name = unaCarta
[COLOR=Red][B].Formula = FormulaCarta(contCarta, VisionCarta)[/B][/COLOR][/CODE]

Y doy clic en "Finalizar" y otro error:

[CODE]Sub BorrarFormulas()
Dim numImagen As Integer

With Tapete
For numImagen = 1 To .Pictures.Count
[COLOR=Red] [B] .Pictures(numImagen).Formula = ""[/B][/COLOR]
Next
End With
End Sub[/CODE]

Y sabes que? en 2003 parece funcionar todo bien, hasta que deseo dar a la baraja, para continuar buscando alguna que se me haya escapado, a menos que sea una limitante de tu gran desarrollo y debo de reiniciar el juego?

Saludos

Enlace a comentario
Compartir con otras webs

Gerson, por supuesto que se puede acabar la partida del solitario y buscar las cartas dando la vuelta al montón de arriba a la izquierda. Por favor, dime la subrutina y la instrucción a depurar en Excel 2003 o mejor inténtalo tu mismo y me lo cuentas.

Eso sí, por lo que cuentas hasta ahora sólo se puede jugar al solitario en Excel 2010 porque también es una sorpresa para mí lo que te pasa en Excel 2007, justo al cargar la Formula en los objetos Picture que son el kit de la cuestión para visualizar las 52 cartas en el tapete.

Me siento muy enojado con la presunta compatibilidad de las versiones de Excel pero aún más con todas las incompatibilidades de VBA. Hay más herramientas de compatibilidad para usar versiones de Office anteriores en las nuevas que para diseñar en sentido contrario.

Gerson, ¿sabes de que se me queja el Inspector, del método select y de las propiedades top y left. ¿Qué hago? ¿los quito y dejo de seleccionar y mover las cartas?

¡ES ABSURDO!

¿Cuántas sorpresas más nos tiene deparadas Micro$oft Office?

La Guía de evaluación y corrección de compatibilidad de aplicaciones para Office 2010 nos indica el camino a seguir para no perdernos en cuanto a:

Comprobación de macros y scripts:

Ee819096.69d84bf6-94e3-4619-a5be-3eb3e129705c(es-es,office.14).gif

Macronianos y Formulianos unidos, ¡¡¡jamás serán vencidos!!!

Enlace a comentario
Compartir con otras webs

Pedro

Gerson, ¿sabes de que se me queja el Inspector, del método select y de las propiedades top y left. ¿Qué hago? ¿los quito y dejo de seleccionar y mover las cartas?

¡ES ABSURDO!

Sabes que debemos hacer todos (bueno lo que siempre busca M.O.) que nos actualicemos, pero Excel 2007 si que me ha avergonzado con tanto error, y bueno 2003 parece superarlo testeando tu pintura, dejame ver que puedo hacer con el error (al llegar a casa), aunque me da terror tocar tu magiaexcelarte jeje

Saludos

Enlace a comentario
Compartir con otras webs

Pedro

Que puedo decir.... estoy un poco mudo y con la boca abierta, funciona perfecto!!!

Pero lamentablemente encontre un pero, no me deja apilar el 4-3 en 10-5, observa la imagen (cuando arrastro y la suelto me la regresa donde estaba, o sea al tercer palo)

[ATTACH]22186.vB[/ATTACH]

Saludos mi estimado y gracias por tomarte las molestias:)

edito: sigo jugando y bueno parece que es un fallo (no error), desde la baraja intento mover el 6 de corazones debajo del 7 trebol pero no me deja:mad:

post-9328-145877002711_thumb.jpg

Enlace a comentario
Compartir con otras webs

Gerson, si que deja, lo que pasa es que hay que arrastrar el grupo de cartas un poco a la izquierda, al nivel del 10 de la imagen. Si se arrastra y suelta hacia la derecha se sale de los márgenes prefijados en la subrutina ReglasJuego del módulo modReglas que chequea dónde se sueltan las cartas. He modificado estos valores:

                            Select Case finLeft
Case 5 To 91
columna = 1
Case 149 To 235
columna = 2
Case 293 To 379
columna = 3
Case 437 To 523
columna = 4
Case 581 To 667
columna = 5
Case 725 To 811
columna = 6
Case 869 To 955
columna = 7
Case Else
columna = 0
End Select[/CODE]

Debería relacionarlos con la hoja de posiciones izquierdas de las cartas, [b]CartasLeft[/b], pero lo dejo para una próxima mejora.

Subo estos casos modificados para abrir el abanico donde soltar las cartas y ahora espero que, como [b]el mejor β-tester[/b] de este juego, puedas finalizar una partida en solitario. :mad:

SOLITARIO_PW21.zip

Enlace a comentario
Compartir con otras webs

Gracias Gerson, te diré que en Excel 2003 hace falta presionar más de una vez una carta vuelta para poder arrastrarla.

Si miras las macros, verás que lo que en Excel 2010 se consigue sin seleccionar la carta, en Excel 2003 hace falta un Select antes de cambiar la fórmula de la imagen.

Esto se ve sobre todo en la rutina PilaCartas del módulo modReglas

        If esExcel2003 Then
Tapete.Shapes(unaCarta).Select
Selection.Formula = FormulaCarta(numCarta, False)
Else
Tapete.Pictures(unaCarta).Formula = FormulaCarta(numCarta, False)
End If[/CODE]

Si alguien sabe como resolverlo le agradecería que no se callara...

Enlace a comentario
Compartir con otras webs

Pedro, un trabajo muy bueno.

Efectivamente no iban con 2000, 2003 ni 2007 en la primera version, pero si que va bien con la ultima version. No puedo decirte en publico nada que no te haya dicho nadie, excepto esto, soltar la carta en el monton me ha dejado boquiabierto, te ha quedado perfecto y me habria encantado descifrarlo, Eres un makina amigo.

Sobre lo de clickar en tapete para minimizar, quizas seria mejor idea una combinacion de teclado, si viene el jefe, con los nervios puedes hacer click en cualquier sitio, pero no pasa lo mismo si tienes una combinacion de teclas ya colocadas en el teclado. Y ademas, ya de paso, ya que estamos en excel, ¿por que no cambiar a una tabla de datos ocultas que cada uno pueda personalizar para que de verdad parezca que estas trabajando? ¿y que esa tabla tenga de color el fondo del tapete?, es demasiado cantoso eso de minimizar y que luego venga el jefe y diga, ¿que era eso que has minimizado? lo abres y ahi esta el tapete... jeje,

Un saludo amigo

Enlace a comentario
Compartir con otras webs

verzulsan, vamos progresando si ya es compatible con todas las versiones de Excel ¡lo que no es moco de pavo! :rolleyes:

Parece mentira que no hayas descifrado cómo soltar la carta, o grupo de cartas (cosa mucho más compleja de conseguir), en el montón. Siendo tan agudo y listo como creo que eres, será porque no le has dedicado suficiente tiempo o no lo has intentado al ver lo poco estructurado que está el juego. :mad:

Te doy un par de pistas: :o

- Las coordenadas están en las hojas ocultas: CartasTop y CartasLeft

- Toda la lógica del juego se hace con una "solitaria macro": ReglasJuego asignada a cada una de las 52 cartas.

Como el juego es abierto y sin licencia de uso ni de explotación dejo a cada uno que implemente lo que más le convenga respecto a tu sugerencia de no minimizar el tapete... :P

P.D.: Siento no haber comentado las instrucciones VBA. Fue un imponderable que me propuse desde el principio, que comprimido ocupara menos de 97.7 KB para subirlo al foro, lo que me obligó a eliminar los comentarios y a generar todo el mazo de cartas dinámicamente ya que si lo pintaba antes ocupaba mucho más. :mad:

He escrito un primer artículo en mi blog sobre:

Donde podréis bajaros la versión 2.2 que ha dejado de ser β.

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 98 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • No has especificado cuales son las celdas a validar si están vacías, te he puesto un ejemplo para el rango A1:A6, corrige a voluntad: Sub Borrar() '------- Corregir las celdas según necesidad If Range("A1") = "" Or _ Range("A2") = "" Or _ Range("A3") = "" Or _ Range("A4") = "" Or _ Range("A5") = "" Or _ Range("A6") = "" Then MsgBox "Hay celdas vacías", vbInformation Exit Sub End If '------- Range("C5").ClearContents Range("C7").ClearContents Range("C8").ClearContents Range("C23").ClearContents Range("C24").ClearContents Range("C39").ClearContents Range("C40").ClearContents Range("C55").ClearContents Range("C56").ClearContents Range("C71").ClearContents Range("C72").ClearContents Range("C87").ClearContents Range("C88").ClearContents Range("C103").ClearContents Range("C104").ClearContents Range("C119").ClearContents Range("C120").ClearContents Range("C135").ClearContents Range("C136").ClearContents Range("C151").ClearContents Range("C152").ClearContents End Sub  
    • Hola me podrian ayudar a corregir esta macro, ya que que he puesto la condicion que no se ejecute por si hay valores vacios en 6 celdas y siempre se ejecuta, comparto codigo:     Selection.ClearContents     Range("C5").Select     Selection.ClearContents     Selection.ClearContents     Range("C7").Select     Selection.ClearContents     Selection.ClearContents     Range("C8").Select     Selection.ClearContents     Range("C23").Select     Selection.ClearContents     Range("C24").Select     Selection.ClearContents     Range("C39").Select     Selection.ClearContents     Selection.ClearContents     Selection.ClearContents     Range("C40").Select     Selection.ClearContents     Range("C55").Select     Selection.ClearContents     Range("C56").Select     Selection.ClearContents     Range("C71").Select     Selection.ClearContents     Selection.ClearContents     Range("C72").Select     Selection.ClearContents     Range("C87").Select     Selection.ClearContents     Range("C88").Select     Selection.ClearContents     Range("C103").Select     Selection.ClearContents     Range("C104").Select     Selection.ClearContents     Range("C119").Select     Selection.ClearContents     Range("C120").Select     Selection.ClearContents     Range("C135").Select     Selection.ClearContents     Range("C136").Select     Selection.ClearContents     Range("C151").Select     Selection.ClearContents     Range("C152").Select     Selection.ClearContents     Range("A1").Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select     Range("C4").Select         End Sub
    • Hola quisiera solucionar un problema ya que tengo 2 hojas de excel. En la "hoja1 columna A" tengo los datos con filtro y hago 2 eventos siempre que son ordenarlos por columna  e inserto filas. Pero al hacerlo en la "hoja2 columna A" donde tengo mis formulas fijas con $  que estan haciendo referencia a la hoja antes mencionada se me desordenan los datos. Entiendo que al fijar la formula con $ e inserto filas en la hoja1  ayuda, pero no cuando ordeno los datos. =hoja1!$A$1   Como hacer que se fijen y no cambien mis formulas?
    • Tengo el siguiente conjunto de formulas con las cuales pretendo buscar el par de fechas con la mayor cantidad de días existente dentro en un conjunto de fechas consecutivas mediante los cuales puedo determinar récords de cumplimiento o incumplimiento de ciertas metas en base a las fechas de eventos determinados  =INDICE(ORDENAR(FILTRAR(MATRIZ!$U$2:$U$3018;MATRIZ!$AU$2:$AU$3018="");;1);1) =INDICE(ORDENAR(FILTRAR(MATRIZ!$U$2:$U$3018;MATRIZ!$AU$2:$AU$3018="");;1);2) =INDICE(ORDENAR(FILTRAR(MATRIZ!$U$2:$U$3018;MATRIZ!$AU$2:$AU$3018<>"");;1);1) =INDICE(ORDENAR(FILTRAR(MATRIZ!$U$2:$U$3018;MATRIZ!$AU$2:$AU$3018<>"");;1);2) 1.       Como se puede observar en la Columna “U” de la Hoja3 (MATRIZ) hay un total de 18 fechas individuales repartidas desde la Celda “U3” a la Celda “U20” 2.       Las fórmulas deberían ordenar y filtrar las fechas entre eventos consecutivos que correspondan cuando AU=””, 14 pares fechas (U3:U5, U5:U7, U7:U8, U8:U9, U9:U10, U10:U11, U11:U12, U12:U13, U13:U14, U14:U16, U16:U17 U17:U18, U18:U19 y U19:U20) y cuando AU<>”” 02 pares de fechas (U4U6 y U6:U15) conforme a la Imagen 1. 3.       Las fórmulas deberían evaluar individualmente el resultado de la diferencia entre la fecha más reciente y la fecha más antigua correspondiente a cada par de fechas obtenidas en el punto anterior seleccionando el par de fechas con mayor cantidad de días cuando AU=”” y cuando AU<>””, conforme se muestra en la Imagen 1 4.       En consecuencia, el par de fechas con el valor más alto cuando AU=”” es del 07/07/2023 al 01/12/2023 = 147 días, mientras que el par de fechas con el valor más alto cuando A<>”” es del 30/04/2023 al 17/01/2024 = 262 días. 5.       Sin embargo, como se puede observar en la Hoja65 (CARTELERA) al aplicar las fórmulas, aunque los datos varíen la posición y/o se introduzcan otros pares de fechas con mayor cantidad de días dichas formulas solo toman en cuenta el primer par de fechas de abajo hacia arriba cuando AU=”” del 01/01/2023 al 29/01/2023 = 28 días y cuando AU<>”” del 30/04/2023 al 17/01/2024= 262 días. PRUEBA.xlsm
    • Ha sido más sencillo de lo que parecía, o eso creo.  Pruebas.xlsb
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.