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 - Usuario Invitado

#441
No es que sean habilidades incompatibles es solo que a la mayoría de programadores no les interesa el diseño.

Yo soy programador y no me considero malo. Hago mis propios diseños para mis aplicaciones, webs o sistemas, como lo pueden ver en el reproductor HTML5 que publiqué en esta sección y el chat Java con WebSockets que publiqué en Java.

Diseñar no es para nada difícil, solo es cosa de aprender como funciona CSS y un poco de ingenio.

Saludos.

#442
Java / Re: Meter un Set en un Map
2 Marzo 2015, 11:40 AM
Te explico. Map.Entry simula una entrada de un Map, en este caso del Map provinces. El método entrySet() lo que haces es deolver un set con pares tipo Entry. Entonces, cuál es la entrada del Map provinces? Llave: String, Valor: HashSet, porque de esos valores está compuesto el Map provinces.

Ese método recibe como parámetro el nombre de la provincia. Recorre el mapa entrada por entrada y compara el nombre de la provincia actual que se esta recorriendo con el nombre de la provincia pasada por parámetro. Si coinciden se devuelve el HashSet que contiene laa poblaciones asociadas a dicha provincia.

La logica es sencilla:

1) Obtiene la poblacion de la provincia.
2) Si el HashSet asociado a dicha provincia es Null se crea un HashSet, se le asignan valores y se agrega al Map asociándose con la provincia.
3) Si el HashSet asociado a la provincia no es Null quiere decir que ya hay poblacion para dicha provincia, por lo que se recupera el HashSet y se le agrega otra poblacion.

Espero se haya entendido. Cualquier duda la comentas. Saludos.
#443
Programación General / Re: App juego online
1 Marzo 2015, 23:26 PM
En el desarrollo de todo software, sea aplicación, sistema o juego, se deben seguir unas pautas antes de proceder con la programación. De hecho, la programación es una de las últimas fases del desarrollo de software.

Primero debes de analizar la problemática objeto de la implementación del posible software. En ésta etapa reúnes mucha información y la analizas obteniendo información refinada sobre el problema que se está tratando como por ejemplo, requerimientos funcionales/no funcionales, costos, factibilidad económica, diagramas de flujos, etc.

A partir del resultado del análisis, se procede a diseñar tu software. Aquí viene el diseño de BBDD, de arquitectura, de interfaces, etc. Todo lo que respecta al software. Casos de uso, diagramas de clases, diagramas de secuencia, diagramas de comportamiento, diagramas de colaboración, etc.

Al finalizar el diseño ya tienes reunida mucha información y además ya tienes el diseño de cada aspecto del software, por lo que solo basta empezar a programar el software.

En tu caso, si el resultado de tu análisis te indica que se deben persistir datos de los jugadores, debes usar BBDD.

Saludos.
#444
Java / Re: Clase Rectangulo
1 Marzo 2015, 23:06 PM
1) Es para ilustrar, en este caso no tiene sentido. Lo puse para ilustrar por qué debe ser una constante estática. Esto aplica si COLORS fuese una propiedad. Los colores se suponen que están pre-establecidos es decir que se puede crear uno, por lo que solo me interesa que:

  • Sea estático (static)
  • Sea constante (final)

    Cuando declaras una variable u objeto como static, estás indicando que dicha variable/objeto solo tendrá una instancia que será compartida por todo aquel objeto del que sea propiedad. Si creas 5 objetos de dicha clase los 5 objetos compartirán dicha variable, ya no será una variable que pertenezca al objeto si no que dicha variable pertenece a la clase. Por eso, si el objeto 3 actualiza la variable y el objeto 5 accede a ella, el valor será el que actualizó el objeto 3.

    Cuando declaras una variable/objeto como final, estás indicando que dicha variable/objeto es una constante cuyo valor no cambiará.

    Por lo que static + final = Constante de la que solo habrá una instancia.

    2) Declaro la variable de control como byte porque la lista a recorrer será muy pequeña (5). Si utilizo int estaría usando 4 bytes mientras que con byte solo 1. Es por cuestión de rendimiento aunque no afecte casi nada xD. Pero si un tipo de dato es mejor para X operación, debes usarlo.

    3) Si, me equivoqué ^^, pero ya lo corregí.

    Ejecutando lo anterior, se obtiene:

    Rectángulo 1: Este rectángulo es de color Blue y tiene 50px de ancho y 50px de alto
    Rectángulo 2: Este rectángulo es de color Blue y tiene 100px de ancho y 100px de alto
    Rectángulo 3: Este rectángulo es de color Gray y tiene 150px de ancho y 150px de alto
    Rectángulo 4: Este rectángulo es de color Orange red y tiene 200px de ancho y 200px de alto
    Rectángulo 5: Este rectángulo es de color Green y tiene 250px de ancho y 250px de alto
#445
Java / Re: Insertar letra en Scanner.nextInt
1 Marzo 2015, 22:56 PM
Crea una clase y un método que pida los números y si se ingresa una letra que se vuelva a llamar él mismo. Esto se llama recursividad.

HighestNumberFinder:

Código (java) [Seleccionar]
import java.util.Scanner;
import java.util.InputMismatchException;

public class HighestNumberFinder {
 private static byte exceptionCounter = 0;
 
 public Double askForNumber() {
   final Scanner READER = new Scanner(System.in);
   Double number = null;
   try {
     number = READER.nextDouble();
   
   } catch(InputMismatchException ex) {
     System.out.println("Ha introducido una letra. Ingrese un número");
     exceptionCounter++;
     number = askForNumber();
   }
   return number;
 }
 
 public byte getExceptionCounter() { return exceptionCounter; }
 
}


Main:

Código (java) [Seleccionar]
public class Main {
 public static void main(String[] args) {
   double highestNumber = 0d;
   final HighestNumberFinder highestNumberFinder = new HighestNumberFinder();
   Double number;
   do {
     System.out.println("Introduce un número: ");
     number = highestNumberFinder.askForNumber();
     highestNumber = number > highestNumber ? number : highestNumber;
   } while(number != -1);
   System.out.println("Usted ha introducido "+highestNumberFinder.getExceptionCounter()+" veces letras");
   System.out.println("El número más alto fue: "+highestNumber);
 }
 
}


Resultado de ejecución:


Introduce un número:
45
Introduce un número:
78
Introduce un número:
c
Ha introducido una letra. Ingrese un número
v
Ha introducido una letra. Ingrese un número
48
Introduce un número:
-56
Introduce un número:
-1
Usted ha introducido 2 veces letras
El número más alto fue: 78.0




RECOMENDACIONES



1) Usar nombres apropiados. Por ejemplo:

num puede llamarse number/numero.
cont puede llamarse counter/contador.
aux, éste es el peor. Puede llamarse highestNumber/numeroMayor.
s, puede llamarse reader/lector/entrada.

2) Empezar a usar programación orientada a objetos como lo hice yo. Lee algún tutorial al respecto.
#446
Java / Re: Clase Rectangulo
1 Marzo 2015, 22:07 PM
Código (java) [Seleccionar]
public class Rectangle {
private String color;
private int width;
private int height;

public Rectangle() {}

public Rectangle(String color, int width, int height) {
 this.color = color;
 this.width = width;
 this.height = height;
}

public String getColor() { return color; }

public void setColor(String color) { this.color = color; }

public int getWidth() { return width; }

public void setWidth(int width) { this.width = width; }

public int getHeight() { return height; }

public void setHeight(int height) { this.height = height; }

@Override
public String toString() {
 String data = "Este rectángulo es de color "+color+
  " y tiene "+width+"px de ancho y "+height+"px de alto";
 return data;
}

}


Código (java) [Seleccionar]
import java.util.List;
import java.util.ArrayList;
import java.util.Random;

public class RectangleTest {
public static void main(String[] args) {
 List<Rectangle> rectangleList = new ArrayList<>();
 final String[] COLORS = {"Blue", "Coral", "Orange red", "Green", "Gray"};
 final int RECTANGLE_SIZE = 50;
 for(byte i=1; i<=5; i++) {
  Rectangle rectangle = new Rectangle();
  String color = COLORS[new Random().nextInt(COLORS.length)];
  rectangle.setColor(color);
  rectangle.setWidth(i * RECTANGLE_SIZE);
  rectangle.setHeight(i * RECTANGLE_SIZE);
  rectangleList.add(rectangle);
 }
 for(byte i=0; i<rectangleList.size(); i++) {
  System.out.println("Rectángulo "+ (i+1)+": "+rectangleList.get(i));
 }
 
}
}


Código limpio = fácil de entender + fácil de mantener.
#447
Programación General / Re: App juego online
1 Marzo 2015, 17:30 PM
javascript es imprescindible en el desarrollo web, sea éste desarrollo de aplicaciones o de juegos. Por ejemplo, Drag and Drop, LocalStorage, IndexedDB, Canvas y otros son funcionalidades HTML5 que utilizan JS para realizarlas.

Con Canvas puedes hacer juegos, gráficos, etc, con Three.js juegos 3D muy buenos para abstraerte de WebGL.

Aprender javascript ahora es casi obligatorio.
#448
Programación General / Re: App juego online
1 Marzo 2015, 15:52 PM
Te he visto en el foro de Java, así que supongo que conoces el lenguaje. Java, C# y javascript, al menos en sus estructuras básicas son muy parecidos, pero en otros son también muy distintos, como en la POO.

javascript no es difícil de aprender. Si no conoces nada respecto a JS, puedes empezar con éste tutorial básico: JavaScriptYa
#449
En el 2005 se descubrió que el número de combinaciones de un sudoku estándar (9x9) es 6,670,903,752,021,072,936,960. Si se toman en cuenta simetrías el número se reduce a 5,472,730,538.

Más info: http://en.wikipedia.org/wiki/Mathematics_of_Sudoku
#450
Programación General / Re: App juego online
1 Marzo 2015, 13:09 PM
Estás en fase aprendizaje y no en producción profesional. Si quieres aprender de verdad te recomiendo que lo hagas a pelo, tratar de no usar frameworks que te facilitan la vida. Esto dejalo para  cuando sepas como funcionan las cosas y no necesites reinventar la rueda.

Por ejemplo puedes hacer tu juego con javascript y WebGL y así a medida que se te presentan inconvenientes buscas y solucionas. Aprender a base prueba/error es bueno, te hara buen programador. Cuando hayas aprendido lo suficiente ya puedes usar un motor o generador para javascript para ahorrarte trabajo y ser más productivo.

Saludos.