Ver Mensaje Individual
  #12 (permalink)  
Antiguo 01/05/2015, 15:42
LuisChavezB
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: Problema java principante

Como ya comentaron no tiene nada de malo utilizar datos primitivos para cosas tan simples como una ficha de domino, aqui te dejo una implementacion algo mas sencilla.
Código Java:
Ver original
  1. package com.github.luischavez.snippet;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.Stack;
  6.  
  7. /**
  8.  *
  9.  * @author Luis Chávez <https://github.com/luischavez>
  10.  */
  11. public class Dominoes {
  12.  
  13.     public static final Float[] PIECES = {
  14.         0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f,
  15.         1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f,
  16.         2.2f, 2.3f, 2.4f, 2.5f, 2.6f,
  17.         3.3f, 3.4f, 3.5f, 3.6f,
  18.         4.4f, 4.5f, 4.6f,
  19.         5.5f, 5.6f,
  20.         6.6f
  21.     };
  22.  
  23.     private final Stack<Float> deck;
  24.  
  25.     public Dominoes() {
  26.         this.deck = new Stack<>();
  27.     }
  28.  
  29.     public void init() {
  30.         this.deck.addAll(Arrays.asList(Dominoes.PIECES));
  31.     }
  32.  
  33.     public void shuffle() {
  34.         Collections.shuffle(this.deck);
  35.     }
  36.  
  37.     public int count() {
  38.         return this.deck.size();
  39.     }
  40.  
  41.     public float pop() {
  42.         return this.deck.pop();
  43.     }
  44.  
  45.     public static int spots1(float value) {
  46.         int spots = Float.valueOf(value).intValue();
  47.         if (0 > spots || 6 < spots) {
  48.             throw new RuntimeException("Invalid spots number: " + value);
  49.         }
  50.         return spots;
  51.     }
  52.  
  53.     public static int spots2(float value) {
  54.         int spots = Math.round((value - Dominoes.spots1(value)) * 10);
  55.         if (0 > spots || 6 < spots) {
  56.             throw new RuntimeException("Invalid spots number: " + value);
  57.         }
  58.         return spots;
  59.     }
  60.  
  61.     public static void main(String[] args) {
  62.         Dominoes dominoes = new Dominoes();
  63.         dominoes.init();
  64.         dominoes.shuffle();
  65.         while (0 < dominoes.count()) {
  66.             float piece = dominoes.pop();
  67.             System.out.printf("%.1f = [%d|%d]\n", piece, Dominoes.spots1(piece), Dominoes.spots2(piece));
  68.         }
  69.     }
  70. }

Para asignar las fichas a cada jugador puedes crear un mapa donde almacenes el numero del jugador y el arreglo con las fichas de ese jugador, por ejemplo:
Código Java:
Ver original
  1. Map<Integer, Float> players = ...;
  2. float[] pieces = ...;
  3. players.put(1, pieces);