Navegación

    UniversoJuegos
    • Registrarse
    • Conectarse
    • Buscar
    • Recientes
    • Etiquetas
    • Popular
    • Usuarios
    • Grupos
    • Buscar
    1. Inicio
    2. Salvatore
    3. Mensajes

    Salvatore (@Salvatore)

    242
    Reputación
    3770
    Mensajes
    3400
    Visitas
    6
    Seguidores
    0
    Siguiendo
    • Perfil
    • Siguiendo
    • Seguidores
    • Temas
    • Mensajes
    • Mejor valorados
    • Grupos

    Information about Salvatore

    Registrado
    Última vez conectado
    Sitio web
    salvatorelab.com
    Ubicación
    Madrid
    Edad
    35

    Publicados por Salvatore

    • TV y Videos - TrackMania is Dead??

      Sinceramente no estoy nada seguro. Por un lado entiendo que si lo que quieren es acabar con el pirateo, censuraran tanto las webs que enlacen al material pirata (links de megaupload), como las que enlacen a las webs que tienen esos enlaces a material pirata.
      Supongo esto, porque si no acaban con la cadena de enlaces, las webs como cinetube lo tendrían muy fácil: en vez de enlazar a megaupload directamente, solo tendrían que crear blogs secundarios (wordpress, blogspot...). Enlazan al blog secundario y listo, manos limpias.

      Con lo cual si de verdad quieren acabar con esas webs, deben censurar tanto enlaces directos como secundarios.

      Sin embargo por otra parte, surgirían problemas de gente que sin saberlo está enlazando a webs con material pirata. Yo enlazo a cualquier otra página, por ejemplo meneame. Meneame enlaza a otra web (de las miles a las que enlaza) con material pirata. Ale, jodidos. No tiene pies ni cabeza.

      Así que como digo, no tengo ni idea. Supongo que las denuncias se centrarán en sitios con un altísimo número de enlaces y visitas. Nosotros de momento no creo que le demos dolor de cabeza a ningún autor, pero todo es empezar a enlazar...

      publicado en Ideas
    • Primer programa en Java

      Terminado, y compilado. Todos podéis probarlo sin necesidad de tener instalado el compilador. Seguro que todos, o prácticamente todos vosotros tenéis la máquina virtual de java instalada, con lo cual con poner "java Main" en la consola podréis ver el programita funcionando.

      Anghios el programa se resetea al entrar en el bucle "while" del método main. Es decir, cada vez que el usuario pulsa 1. No se resetea nunca durante una partida, si miras el método jugarPartida() verás como no aparece ninguna llamada a "reiniciar()"

      Para más adelante lo haremos con interfaz gráfica, que tampoco es complicado, pero son bastantes más líneas de código. Meter tanto de golpe es mucho jeje.

      EDITO: Corregido un error que generaba números entre 0 y 9, en vez de entre 1 y 10 como pensaba xD. Bastó con añadir un "+1" en la generación de aleatorios.

      publicado en Aplicaciones de escritorio
    • Primer programa en Java

      Antes de empezar quizá te interese revisar los tutoriales anteriores:
      Cómo compilar y ejecutar programas en Java
      "Hola Mundo" en java, pero gráfico 😃

      Hoy vamos a hacer algo un poco más útil, y más complicado. El objetivo es entender un poco mejor lo que Java proporciona: programación orientada a objetos. Espero ser capaz de ayudaros a ver lo que esto significa, poco a poco.

      Bien, nuestro programa no va a tener interfaz gráfica. Aun es demasiado temprano para meterse en eso, aunque más adelante sería un buen ejercicio hacerle interfaz a este programa.
      Va a funcionar por consola de comandos.

      En qué va a consistir? Será una especie de "juego", donde el usuario tendrá que adivinar un número del 1 al 10. Sin duda de lo más divertido y adictivo :icon_mrgreen: (qué esperabas, un metin2 en java? jejeje)

      Así que el programa sacará un número aleatorio, y el usuario tendrá 3 intentos para adivinarlo. Sencillo, como todo ejemplo para principiantes. Algo así:

      Vamos a ello!


      hr
      Nuestro programa constará de dos clases: Main.java y AdivinaAleatorio.java
      En la clase Main, meteremos únicamente nuestro método main(). Todo programa debe tener este método, es por donde comienza la ejecución. Si no hay main, el programa da error, y no se ejecuta.
      Bien, pues nuestro main se encargará de decirle "bienvenido" al usuario, y de arrancar el juego.
      Pero toda la funcionalidad del juego estará en la clase AdivinaAleatorio.

      Vamos al código:

      AdivinaAleatorio.java
      Esta clase nos permitirá jugar a esta especie de juego un tanto estúpido. Como toda clase en java, empezamos escribiendo:

      public class AdivinaAleatorio {
      }
      

      Va a necesitar un par de atributos, que son el número máximo de intentos que permitiremos al usuario, y el número aleatorio que genera el programa. Con esas dos cosas el programa tendrá lo básico para funcionar. Lo añadimos a la clase, así:

      public class AdivinaAleatorio {
      	
      	public int intentos;
      	public int aleatorio;
      }
      

      Ya tenemos la clase y sus dos atributos. Ahora vamos a escribir el método constructor. Un constructor debe llamarse igual que la clase, en este caso debe llamarse AdivinaAleatorio, y va a hacer lo siguiente:

      	public AdivinaAleatorio() {
      		intentos = 3;
      		aleatorio = (int) (Math.random() * 10) + 1;
      	}
      

      Inicializa el número de intentos y "sortea" el número aleatorio que debe adivinar el usuario.
      El constructor nos permitirá crear objetos de la clase AdivinaAleatorio, es decir, nos permitirá hacer new AdivinaAleatorio(). Lo veremos después.

      Ok, tenemos la clase, sus atributos, y su constructor de objetos "AdivinaAleatorio". Ahora nos hacen falta un par de métodos, para que el juego haga algo jeje. Empecemos con un método facilote:

      	public void reiniciar()
      	{
      		intentos = 3;
      		aleatorio = (int) (Math.random() * 10) + 1;
      	}
      

      Este método vuelve a poner el atributo "intentos" a 3, y sortea un nuevo número aleatorio. Esto lo usaremos cada vez que el usuario acierte un número o agote sus intentos y empiece una nueva partida. Reiniciaremos los atributos para empezar un nuevo turno.

      Vamos a necesitar otro pequeño método que pida un número al usuario, lo llamaremos "leerNúmero" y tendrá esta pinta (es un poco feo el pobre, así que no os asustéis):

      	public int leerNumero()
      	{
      		BufferedReader linea = new BufferedReader( new InputStreamReader( System.in ) );
      		int num = -1;
      		System.out.println( "Introduzca un numero: ");
      		try
      		{
      			num = Integer.parseInt( linea.readLine( ) ) ;
      		}
      		catch (NumberFormatException e) {
      			System.err.println( "Error al convertir a entero" );
      		} catch (IOException e) {
      			System.err.println( "Error al leer entrada de datos" );
      		}
      		return num;
      	}
      

      Os dije que era feo, no se asuste nadie. En realidad esa mierda de código simplemente nos da el número que escribe el usuario. No hace más, sin embargo queda bastante feo porque leer un número no es tan sencillo como suena: ¿y si el usuario, muy cabroncete él, mete una letra? ¿y si ocurre algún error con la entrada de datos? Es delicado, por eso el código queda tan feo. Pero da igual, de momento sólo os importa que eso pide un número y lo devuelve, así que ahora cuando queramos un número del usuario, escribiremos tan solo: numero = leerNumero(); Y quedará guardado en la variable "numero" el valor introducido por el usuario. Así no volveremos a ver ese horrible pedazo de código.

      Ya casi está, tenemos la clase, los atributos, el constructor, un método que resetea el juego, y otro que lee un número del usuario. Nos falta juntarlo todo en un método principal.
      Ese método principal simplemente pedirá un número al usuario hasta que acierte o se agoten los intentos. Vamos a llamarlo jugarPartida y quedará así:

      	public void jugarPartida()
      	{
      		int usuario;
      		System.out.println( "Se ha generado un numero del 1 al 10, adivinelo =)" );
      
      		do
      		{
      			usuario = this.leerNumero(); //pedimos un número al usuario
      			if ( usuario == aleatorio ) 
      			{
      				System.out.println( "Enhorabuena, ha acertado! El numero es el: " + aleatorio );
      			}
      			else 
      			{
      				intentos = intentos - 1 ;
      				System.out.println( "Lo siento, no es correcto, le quedan " + intentos + " intentos." );
      			}
      		} while (intentos>0 && usuario != aleatorio);
      		
      		if (intentos==0)
      			System.out.println("Game Over! El numero era: " + aleatorio );
      	}
      

      Vamos línea a línea:
      1- public void jugarPartida()
      Esto declara un método público (otras clases podrán usarlo), que no nos devuelve nada (void) a diferencia del leer número que nos devolvía int, y que se llama jugarPartida.
      2- int usuario;
      Declara una variable llamada usuario, de tipo int (integer, o entero en español).
      3- System.out.println( "Se ha generado un numero del 1 al 10, adivinelo =)" );
      Muestra por pantalla esa frase "Se ha generado...".

      Ahora viene lo bueno, tenemos un do while. Es un bucle, que se repite mientras al usuario le queden intentos (intentos>0) y no haya acertado el número todavía (usuario != aleatorio). != significa distinto de.
      Dentro de ese bucle haremos una y otra vez lo mismo:
      leer un número, y comprobar si es el correcto o no.
      Si es el correcto, felicitamos al usuario.
      Si no es correcto, restamos uno al número de intentos restantes, y le decimos al usuario que no es correcto.
      Así hasta que acaben los intentos o el usuario acierte.
      Fin de la clase AdivinaAleatorio. Os dejo el código al completo. Las 3 primeras líneas son librerías necesarias para algunas órdenes que he usado, no tienen más importancia.
      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;

      public class AdivinaAleatorio {

      /* Atributos */
      public int intentos; //aquí almacenaremos el número máx. de intentos que permitiremos al usuario
      public int aleatorio; //aquí guardaremos el número generado por el programa, que debe adivinar el usuario

      /* Constructor */
      public AdivinaAleatorio() {
      /* Inicializamos atributos */
      intentos = 3;
      aleatorio = (int) (Math.random() * 10);
      }

      /* Llamaremos a este método cuando queramos resetear
      * los valores del programa, por ejemplo cada vez que el usuario
      * adivine el número y quiera jugar de nuevo
      * */
      public void reiniciar()
      {
      intentos = 3;
      aleatorio = (int) (Math.random() * 10);
      }

      /* Este método se encarga de comparar el número que introduce el usuario
      * con el número generado aleatoriamente durante el máximo de intentos permitidos
      * */
      public void jugarPartida()
      {
      int usuario;
      System.out.println( "Se ha generado un numero del 1 al 10, adivinelo =)" );

      do
      {
      usuario = this.leerNumero(); //pedimos un número al usuario
      if ( usuario == aleatorio )
      {
      System.out.println( "Enhorabuena, ha acertado! El numero es el: " + aleatorio );
      }
      else
      {
      intentos = intentos - 1 ;
      System.out.println( "Lo siento, no es correcto, le quedan " + intentos + " intentos." );
      }
      } while (intentos>0 && usuario != aleatorio);

      if (intentos==0)
      System.out.println("Game Over! El numero era: " + aleatorio );
      }

      public int leerNumero()
      {
      BufferedReader linea = new BufferedReader( new InputStreamReader( System.in ) );
      int num = -1;
      System.out.println( "Introduzca un numero: ");
      try
      {
      num = Integer.parseInt( linea.readLine( ) ) ;
      }
      catch (NumberFormatException e) {
      System.err.println( "Error al convertir a entero" );
      } catch (IOException e) {
      System.err.println( "Error al leer entrada de datos" );
      }
      return num;
      }
      }

      Main.java
      Vamos con el remate final, hacer un main que cree un objeto de la clase AdivinaAleatorio y lo use. Como siempre que hacemos una clase, el código básico:

      public class Main {
      }
      

      Bien, atributos vamos a ponerle solamente uno. Esta vez no va a ser un "int", ni nada de eso. Va a ser una variable de tipo AdivinarAleatorio. Como ya hemos creado la clase con su constructor, podemos crear objetos de ese tipo. Similar a cuando creas un int, o un string... así de fácil. Veamos la línea exacta:

      public class Main {
      
      	static AdivinaAleatorio miJuego = new AdivinaAleatorio();
      }
      

      Crea un atributo, de tipo AdivinaAleatorio, llamado miJuego. La palabra reservada "new" es la que hace uso del constructor. Vamos, que al escribir esa línea, el programa "entra" en la clase AdivinaAleatorio, busca el método constructor, y ejecuta ese código. En nuestro caso inicializa el número de intentos y el aleatorio.

      Vale, por último creamos un método main dentro de la clase Main. Como dije al principio, el método main es el que se ejecuta. Si no hay método main, el programa no hace nada. Vale, añadimos un método main y quedará así:

      public class Main {
      
      	static AdivinaAleatorio miJuego = new AdivinaAleatorio();
      
      	public static void main(String[] args) {
      	}
      
      }
      

      Ya tenemos clase Main, atributo de tipo AdivinaAleatorio, y método main (vacío pero ahí está).
      Solo falta rellenarlo, vamos a ir metiendo cosas:

      		System.out.println( "----- Bienvenido al programa -----" );
      		System.out.println( "" );
      		System.out.println( "Pulse 1 para empezar una partida o 0 para salir" );
      

      Eso se entiende no? La segunda línea simplemente deja un "intro" adicional entre las dos frases.
      Ahora el usuario va a meter un número. Nos sirve la función que hicimos en la otra clase, la de "leerNumero". Así que vamos a usarla que no me apetece meter otra vez el tocho horrible de código aquel:

      int opcion = miJuego.leerNumero();
      

      Hay que poner "miJuego." delante, ya que ese método está en el objeto miJuego, no en nuestra clase Main.

      Y ahora, un bucle. ¿Para qué? Para que mientras el usuario no introduzca un 0, el programa siga permitiendo jugar. Ahí va el código:

      		while (opcion == 1)
      		{
      			miJuego.reiniciar();
      			miJuego.jugarPartida();
      			System.out.println( "Para jugar otra partida escriba 1. Si no, escriba 0" );
      			opcion = miJuego.leerNumero();
      		}
      

      Mientras el usuario siga poniendo la opción 1, reiniciamos el juego (para que se genere otro número aleatorio y los intentos restantes se reseteen a 3), y usamos el método de jugarPartida. Cuando termine la partida, le preguntamos al usuario si quiere jugar de nuevo y leemos el número que escriba. Si mete un 1, el bucle se repetirá. Si mete un cero, saldremos del bucle.

      Y ya está, le vamos a añadir una despedida cuando el programa termine:

      		System.out.println( "----- Gracias por usar el programa -----" );
      		System.out.println( "Que pase un buen dia!" );
      

      Ahora sí, hemos terminado.
      public class Main {

      static AdivinaAleatorio miJuego = new AdivinaAleatorio();

      public static void main(String[] args) {
      System.out.println( "----- Bienvenido al programa -----" );
      System.out.println( "" );
      System.out.println( "Pulse 1 para empezar una partida o 0 para salir" );

      int opcion = miJuego.leerNumero();

      while (opcion == 1)
      {
      miJuego.reiniciar();
      miJuego.jugarPartida();
      System.out.println( "Para jugar otra partida escriba 1. Si no, escriba 0" );
      opcion = miJuego.leerNumero();
      }

      System.out.println( "----- Gracias por usar el programa -----" );
      System.out.println( "Que pase un buen dia!" );
      }

      }

      Hemos acabado, os dejo los dos archivos fuente:
      [attachment=3][attachment=2]

      Y esos dos archivos ya compilados, para que podáis ejecutarlos sin necesidad de compilador:
      [attachment=1][attachment=0]

      Recordad, para compilar "javac Main.java"
      Para ejecutar algo compilado: "java Main".
      No se ejecuta la clase AdivinaAleatorio, lo he dicho varias veces, se ejecuta la clase que contenga el método main. Probad a ejecutar la otra jeje, escribid "java AdivinaAleatorio" y os dirá que no encuentra el main:

      Exception in thread "main" java.lang.NoSuchMethodError: main

      Bueno espero que os haya gustado. En un futuro espero que no muy lejano añadiremos otro tipo de juegos a nuestro main, para que al ejecutar el programa se dé la opción al usuario de escoger el juego al que prefiera jugar 😃

      [licencia][/licencia]

      publicado en Aplicaciones de escritorio
    • TV y Videos - TrackMania is Dead??

      @-)
      creo que es la primera sección que nada más arrancar tiene ya segunda página :icon_mrgreen:
      gran trabajo mikikiller, me has ahorrado una cantidad de tiempo más que considerable ^:)^

      publicado en Ideas
    • Hasta aquí

      Ya comenté lo que me parecía el tema del rip en la despedida de Bask, y todos o casi todos piensan de la misma forma.
      Te diría lo mismo que a anghios, pero no me gusta repetirme. Confío en que como persona madura que eres, sepas distinguir entre algo puntual y algo habitual. No creo que algo puntual sea motivo suficiente para abandonar a gente que te apoya habitualmente.
      Tu sabrás.

      publicado en Despedidas
    • Es de buen nacido ser agradecido...

      Usad el botón de "Gracias" en vez de postear diciendo "gracias" jeje. Para eso se puso el botón, es más cómodo y evita mensajes de spam.
      Acostumbraos a usarlo!

      publicado en Informática
    • TV y Videos - TrackMania is Dead??

      con la nueva ley ya no será delito únicamente tener ese material alojado en nuestro servidor. Será ilegal enlazar a ese material. Es decir, poner links de megaupload convertirá a este foro en ilegal, y podrá ser cerrado en cuestión de días.
      Así que nada de links.

      Lo de material para adultos me refería a la pornografía, las películas para mayores de edad la verdad es que no me preocupan, porque contar de qué va la película no creo que sea tan terrible o traumático xD De todas formas se puede avisar y listo.

      publicado en Ideas
    • TV y Videos - TrackMania is Dead??

      sí, lo de los vídeos, cine, televisión y todo junto ya lo han comentado varias personas. Irá una sección dentro de Charla para que se hable de todo eso. Pero ojo, nada de postear películas ni series, como sabéis eso es material que infringe derechos de autor y está prohibido por la ley.

      publicado en Ideas
    • SuperNotepad (Mejor que el de Windows)

      @Anghios said:

      Por ejemplo, ara adivinar el ping:

      Dim Nombredevariablequequieras As String
      Nombredevariablequequieras = "ping "
      Shell("cmd.exe /k") + textbox1.text
      

      Quiere decir, que tu al darle al botón, te hará eso, y en la caja de texto, tendrás que poner la URL.
      Si no pones url en el barra de texto CMD te abrirá una ventana y "escribirá" esto: "ping "
      Pero si le pones el "+textbox1.text" escribirá: "ping +"lo que hay en la barra de texto""

      O dicho técnicamente, concatena dos strings. Por un lado el string literal (literal es porque va entre comillas):
      "cmd.exe /k"
      Y por otro el string contenido en un formulario, o un campo de texto:
      textbox1.text
      Como digo, el operador + concatena strings.
      Lo que me suena extraño son los paréntesis de la orden shell, no irá el cierre al final de la línea en vez de encerrando el primer string? Es igual, no conozco visual basic, así que simplemente es que me ha resultado raro comparado con lo que conozco.

      publicado en Utilidades
    • Hasta la vista baby xD

      No lo entiendo, si haces un tutorial es para que la gente lo siga, o dicho de otra forma "te copien".
      Yo cuando publico tutoriales de programación es para que la gente los haga. Quiero que hagan esos programas, porque haciendo se aprende.

      Lo único que me parece mal es que alguien que sigue tu tutorial luego diga que el programa es suyo. En mi caso me importa un carajo, porque los programas son tan sencillos que no tienen importancia. En el caso de firmas o cosas similares entiendo que no es honesto atribuirse todo el mérito. Si haces una firma siguiendo un tutorial de otro, pues dilo claramente "mirad mi firma! la he hecho a partir de este tutorial: link".

      No sé qué es lo que molestó a Bask, si que siguiesen su tutorial, o que no le atribuyesen parte del mérito. Ya digo que lo primero, no tendría sentido.

      publicado en Despedidas
    • 1
    • 2
    • 170
    • 171
    • 172
    • 173
    • 174
    • 269
    • 270
    • 172 / 270