Tetromino.java :  » Graphics-3D-2D-OpenGL » tretris » com » google » code » tretris » common » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » tretris 
tretris » com » google » code » tretris » common » Tetromino.java
package com.google.code.tretris.common;

import java.util.HashMap;

public class Tetromino {
  public final char letter;
  public final int code ;
  public final int width ;
  public final int[][][] rotationmasks ;
  
  public static Tetromino getFromChar(char ch) {
    if (ch == 'I') return I ;
    if (ch == 'J') return J ;
    if (ch == 'L') return L ;
    if (ch == 'O') return O ;
    if (ch == 'S') return S ;
    if (ch == 'T') return T ;
    if (ch == 'Z') return Z ;
    throw new IllegalArgumentException("No tetromino matches character: " + ch ) ;
  }
  
  private Tetromino(final char letter, final int code, final int width, final int[][][] rotationmasks) {
    this.letter = letter;
    this.code = code ;
    this.width = width ;
    this.rotationmasks = rotationmasks ;
  }
  
  @Override
  public String toString() {
    StringBuffer buffer = new StringBuffer("Tetromino ") ;
    buffer.append(letter) ;
    buffer.append("\n") ;
    for (int n=0; n<4; n++) {
      for (int y=0; y<width; y++) {
        for (int x=0; x<width; x++) {
          buffer.append(rotationmasks[n][x][y]) ;
        }
        buffer.append("\n") ;
      }
      buffer.append("\n") ;
    }
    return buffer.toString() ;
  }

  public static final Tetromino I = new Tetromino('I', 0, 4, new int[][][]
    {
      {
        {0,0,0,0},
        {1,1,1,1},
        {0,0,0,0},
        {0,0,0,0},
      },
      {
        {0,0,1,0},
        {0,0,1,0},
        {0,0,1,0},
        {0,0,1,0},
      },
      {
        {0,0,0,0},
        {0,0,0,0},
        {1,1,1,1},
        {0,0,0,0},
      },
      {
        {0,1,0,0},
        {0,1,0,0},
        {0,1,0,0},
        {0,1,0,0}
      }
    }
  ) ;

  public static final Tetromino J = new Tetromino('J', 1, 3, new int[][][]
    {
      {
        {1,0,0},
        {1,1,1},
        {0,0,0}
      },
      {
        {0,1,1},
        {0,1,0},
        {0,1,0}
      },
      {
        {0,0,0},
        {1,1,1},
        {0,0,1}
      },
      {
        {0,1,0},
        {0,1,0},
        {1,1,0}
      }
    }
  ) ;

  public static final Tetromino L = new Tetromino('L', 2, 3, new int[][][]
    {
      {
        {0,0,1},
        {1,1,1},
        {0,0,0}
      },
      {
        {0,1,0},
        {0,1,0},
        {0,1,1}
      },
      {
        {0,0,0},
        {1,1,1},
        {1,0,0}
      },
      {
        {1,1,0},
        {0,1,0},
        {0,1,0}
      }
    }
  ) ;

  public static final Tetromino O = new Tetromino('O', 3, 2, new int[][][]
    {
      {
        {1,1},
        {1,1}
      },
      {
        {1,1},
        {1,1}
      },
      {
        {1,1},
        {1,1}
      },
      {
        {1,1},
        {1,1}
      }
    }
  ) ;

  public static final Tetromino S = new Tetromino('S', 4, 3, new int[][][]
    {
      {
        {0,1,1},
        {1,1,0},
        {0,0,0}
      },
      {
        {0,1,0},
        {0,1,1},
        {0,0,1}
      },
      {
        {0,0,0},
        {0,1,1},
        {1,1,0}
      },
      {
        {1,0,0},
        {1,1,0},
        {0,1,0}
      }
    }
  ) ;

  public static final Tetromino T = new Tetromino('T', 5, 3, new int[][][]
    {
      {
        {0,1,0},
        {1,1,1},
        {0,0,0}
      },
      {
        {0,1,0},
        {0,1,1},
        {0,1,0}
      },
      {
        {0,0,0},
        {1,1,1},
        {0,1,0}
      },
      {
        {0,1,0},
        {1,1,0},
        {0,1,0}
      }
    }
  ) ;

  public static final Tetromino Z = new Tetromino('Z', 6, 3, new int[][][]
    {
      {
        {1,1,0},
        {0,1,1},
        {0,0,0}
      },
      {
        {0,0,1},
        {0,1,1},
        {0,1,0}
      },
      {
        {0,0,0},
        {1,1,0},
        {0,1,1}
      },
      {
        {0,1,0},
        {1,1,0},
        {1,0,0}
      }
    }
  ) ;
  
  public static final HashMap<Integer, float[]> COLORS = new HashMap<Integer, float[]>() {
    private static final long serialVersionUID = 1L;
    {
      put(I.code, new float[] {0f, 1.0f, 1.0f, 1f});
      put(J.code, new float[] {0f, 0f, 1.0f, 1f});
      put(L.code, new float[] {1f, 165f/255f, 0f, 1f});
      put(O.code, new float[] {1.0f, 1.0f, 0f, 1f});
      put(S.code, new float[] {127f/255f, 1.0f, 0.0f, 1f});
      put(T.code, new float[] {160f/255f, 32f/255f, 240f/255f, 1f});
      put(Z.code, new float[] {1.0f, 0f, 0f, 1f});
    }
  };
}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.