Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Serapis

#2841
Mira a ver si tienes también el fichero solution (*.sln), áabrelo con el bloc de notas y revisa la versión precisa que se requiere:
Por ejemplo, aquí un proyecto en C# para VS2005, se encabeza así las 2 primeras líneas:
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005

Al abrirlo con el VS2010, tal como te señala Elektro, sale el asistente de conversión (Microsoft Visual Studio Version Selector), y te solicita si deseas hacer copia previamente (y dónde), al final de la conversión te muestra un resumen del resultado... Si no tienes el *.sln, no importa, también es posible desde el *.csproj. Durante la conversión, hace lo propio con los *.cs, directamente cuando no lo abre es porque no portan info de versión, sólo código...

Si te dan problemas tal vez, no sean ni VS2008 ni VS2005, y sea VS2003, quizás deba primero ser convertido a una versión más actual y desde ahí a VS2010 (y si luego instalas otra versión más reciente, desde esa a la nueva)...
#2842
Ejercicios / Re: duda sobre programa en c.
5 Enero 2018, 19:43 PM
Debes comprobar antes del "switch(ficha){" que la casilla esté libre...

Para el tablero deben usarse 3 valores, con estos 2 significados:
- Casilla vacía: por ejemplo un espacio en blanco. Es lo que debe haber al comienzo del juego.
- Casilla ocupada: casilla ocupada. Y para ello se usan dos valores '0' y 'x', cada una identifica un jugador distinto.

Por tanto cuando el jugador elija una casila, antes de intentar asignar el valor de casilla ocupada, debe consultarse si está libre. Sólo si está libre se consigna el valor ocupado, correspondiente al jufador que tiene el turno.


Un pseudocódigo del juego... estúdialo a fondo, es simple y trata de implementarlo.

enumeracion FinalesPosibles
   FINAL_JUGAR = 0     // quedan casillas or jugar.
   FINAL_GANADO =1   // ganó el jugador actual
   FINAL_TABLAS=2    // resultado en tablas.
fin enumeracion
arraychars Tablero(3,3)


funcion JugarPartida
   caracter jugador, espacio
   entero casilla, fila, columna
   buleano vacia
   finalesposibles finpartida
   
   espacio = " "
   // jugador ="X"  // empieza el jugador 0, ya que nada más empezar cambia el turno al otro jugador.
   finpartida = FINAL_JUGAR

   // Dibujar el tablero vacio y vaciar el contenido del tablero actual
   bucle para x desde 0 a 2
       bucle para Y desde 0 a 2
           tablero(x,y) = espacio
           dibujar(x,y, espacio)
       fin bucle
   fin bucle

   Hacer  // jugar por trnos hasta final de partida.
       // cambiar el turno del jugador
       si jugador = "0" luego
           jugador = "X"
       Sino
           jugador ="0"
       fin si

       Hacer  // pedir casilla libre al jugador actual
           casilla = PedirCasillaAlJugador(entre 0 y 8) //OJO: 0-8, no 1-9
           columna = (casilla modulo 3)
           fila = (casilla \3) //división entera
           vacia = ( Tablero(columna, fila) = espacio)
       Repetir mientras vacia = FALSE  // casilla = ocupada
   
       Tablero(columna, fila) = jugador  // jugador y el valor que se coloca, es lo mismo.
        dibujar(columna, fila, jugador)  // dibuja en el tablero la apuesta del jugador.
        finpartida= TresEnRaya(jugador)   // descubrir si hay 3 en raya en alguna posicion (horizontal vertical, diagonal).          
   Repetir mientras (finpartida = FINAL_JUGAR)

   // si alguien se alzó con la victoria se proclama.
   Si (finpartida = FINAL_GANADO) luego
       mensaje "La partida acabó con victoria del jugador que jugaba con la ficha: " + jugador
   Sino
       mensaje "La partida acabó en tablas."
   Fin si
fin funcion


Dibujar (x, y, valor) es una función que dibuja el valor consuignado en la casilla que se indica.
Pero si te resulta complicado, dibujar una sola casilla, puedes optar por redibujar el tablero entero, no requiriendo al caso ningún parámetro.

finalesposibles = TresEnRaya(valor), es una función que escruta sobre el array si hay tres en raya del valor recibido ("X", ó "0"), si lo hay devuelve un valor 1 (ganado), si no lo hay todavía escruta si queda alguna casilla libre donde jugar, si no lo hay devuelve un valor 2 (tablas), si quedan casillas libres para jugar, devuelve un valor 0 (jugar)... es decir devuelve un valor de la enumeración: finalesPosibles...
Como sabes, 3 en raya puede ser en horizonbtal, vertical o diagonal... comprueba cada línea, horizontal, cada línea vertical y las 2 diagonales, cada una son 3 pares de cordenadas, que puede derivarse a una segunda función...

finalesposibles = Funcion TresEnRaya(valor)
  si Correcto3(0,0,1,0,2,0, valor) = TRUE luego
     Devolver FINAL_GANADO
  fin si
  ... el resto queda a tu esfuerzo...

fin funcion


Buleano = Correcto3(x1, y1, x2, y2, x3, y3, valor) es una función que recibe 3 pares de cordenadas y devuelve TRUE, si las 3 tienen el mismo valor que el recibido.
dándote la primera de las llamadas, ya te faltan solo completar, 2 líneas horizontales, las 3 verticales y las 2 diagonales... la primera te sirve de guía.

Y aquí lo que sería el pseudocódigo de dicha función:

buleano = Funcion Correcto3(x1, y1, x2, y2, x3, y3, valor)
   Si Tablero(x1, y1) = valor
       Si Tablero(x2, y2) = valor
           Si Tablero(x3, y3) = valor
               Devolver TRUE
           fin si
       fin si
   fin si
   Devolver FALSE
fin funcion


PedirCasillaAlJugador, es una función que reclama un valor entre 0 y 8, no debe admitir ningún otro. 
#2843
Pura especulación...

¡¿Tarjetas gráficas para minar criptomonedas?!... una tontería.
Si los fabricantes de verdad quisieran hacer un mercado para el minado de criptomonedas, harían soluciones dedicadas como otras que ya existen... pero claro, por qué no enmierdarlo todo y así afecta a nivel mundial...???. Y así acabaos pagando todos algo que solo necesitan algunos...
#2844
Linux Torvalds, les ha dado un buen rapapolvo a los tontainas de Intel... y es que no es para menos...


https://lkml.org/lkml/2018/1/3/797

Yo insisto, en que (algunos de ellos) son agujeros dejados ahí a propósito, por imposición del gobierno 'usasense'...
Hasta hace unos años, podían pasar desapercibidos, hoy día se mira todo con lupa (lo cual es lo correcto, no confiar en ninguna empresa, me cansan esos usuarios ciegos por tal o cual marca, sin reconocer sus defectos)...



Para descargar los papers y 'FAQs' genéricas al respecto: https://meltdownattack.com/
#2845
Si no quieren hacer acuerdos, tampoco tendrán derecho a reclamaciones...

...por otro lado, Spotify, hasta donde yo comprobé tiempo atrás, no tiene disponible el contenido de aquellos con los que no tiene acuerdo... Si esto ha cambiado, ya lo ignoro. De hecho años atrás, buscaba discos de Metallica y no encontraba ninguno, después busqué noticias por la red, y era la propia banda que había declinado participar en Spotify... obviamente lo que no podrá evitar Spotify es que tú tengas en tu equipo tal o cual álbum... y que si te permite indexar (y a medida que su catálogo se amplía y hay existencias, se retira el tuyo, en favor del que ellos hospedan (no te lo borran solo cambian la ruta de origen)).

Habrá que ver en el tiempo, explicaciones más claras...
#2846
Este año 2018, se prevee como el año de las vulnerabilidades sin fin... si el 2017, ha sido imparable creo que éste va a ser aún más terrible.

#2847
Si lo usas muy a menudo, suele ser deseable tener dos funciones...

Una llamada (por ejemplo) StartTime que toma la hora actual y otra que se llame (por ejemplo) EndTime que toma la hora actual, resta la previa y devuelve el resultado
(lo que te ha puesto engel lex, pero separado en dos funciones)...

Así puedes usarlo fácilmente desde cualquier parte del código.
#2848
mmm... hablo de memoria... pero en Vs, la mayoría de controles que tienen propiedad Text, tienen también la propiedad SelectedText....

...entonces porqué no pruebas en vez de con:
Clipboard.SetText(TabControl1.SelectedTab.Controls(0).Text)
con:
Clipboard.SetText(TabControl1.SelectedTab.Controls(0).SelectedText)
#2849
Lo más cómodo de toda la vida es usar el Clipboard.

Cuando no se usa (en apariencia), es porque esa clase no es sino un wrapper de/para dicho clipboard
#2850
Es una estafadora como tantos... No hay diferencia entre eso y cualquier otro ladrón. Los procedimientos los ajustan para 'cumplir' sus objetivos y como cualquier otro ladrón, los sentimientos lejos de ser un freno, son para ellos una ventaja d ela que sacar provecho 8o al menos ventaja).

Debería además habérsele impuesto pena de cárcel...