Package pdp.scrabble.game.impl

Source Code of pdp.scrabble.game.impl.RackImplNew

package pdp.scrabble.game.impl;
import java.util.Iterator;
import org.jdom.Element;
import org.jdom.Attribute;

import pdp.scrabble.game.GameEnvironment;
import pdp.scrabble.game.Letter;
import pdp.scrabble.game.Rack;
import pdp.scrabble.game.Bag;
import pdp.scrabble.Factory;
import java.util.ArrayList;

public class RackImplNew implements Rack{

  private ArrayList<Letter> lettres;
  private Bag sac = null;
 
  public RackImplNew(Bag s){
    lettres = new ArrayList<Letter>();
    this.sac= s;
  }
 
 
  /* Old version
   *
   * @Override
    public void save(Element root) {
  Element element = new Element("Rack");
  root.addContent(element);

  for (int i = 0; i < MAX_RACK_LETTERS; i++) {
      if (this.letters[i] != null) {
    this.letters[i].save(element);
      }
  }
    }

    @Override
    public void load(Element root) {
  for (int i = 0; i < MAX_RACK_LETTERS; i++) {
      this.letters[i] = null;
  }

  Element element = root.getChild("Rack");
  @SuppressWarnings("unchecked")
  Iterator<Element> Eletters = element.getChildren().iterator();

  int i = 0;
  while (Eletters.hasNext()) {
      Element Eletter = Eletters.next();
      Letter letter = FACTORY.createLetter(' ', 0, 0);
      letter.load(Eletter);
      this.letters[i] = letter;
      i++;
  }
    }
    */
 
 
  @Override
  public void save(Element root) {

    Element e = new Element("Rack");
    root.addContent(e);
    for(int i = 0; i<getNumberOfLetters();i++)
      lettres.get(i).save(e);
  }

  @Override
  public void load(Element root) {
    Element element = root.getChild("Rack");
    @SuppressWarnings("unchecked")
    Iterator<Element> Eletters = element.getChildren().iterator();

    while (Eletters.hasNext()) {
      Element Eletter = Eletters.next();
      Letter letter = Factory.FACTORY.createLetter(' ', 0, 0);
      letter.load(Eletter);
      lettres.add(letter);
    }
  }

  @Override
  public void addLetter(Letter letter) {
    if(this.getNumberOfLetters()<MAX_RACK_LETTERS)
      lettres.add(letter);
  }

  @Override
  public Letter removeLetter(Letter letter) {
    lettres.remove(letter);
    return letter;
  }

  @Override
  public void fill() {
    while(!this.sac.isEmpty() && this.getNumberOfLetters()<MAX_RACK_LETTERS)
      this.addLetter(sac.getRandomLetter());
  }

  @Override
  public void clear() {
    for(int i=0; i<getNumberOfLetters(); i++) {
        this.sac.addLetter(lettres.remove(i));
    }
  }

  @Override
  public Letter getLetter(int i) {
    return lettres.get(i);
  }

  @Override
  public int getNumberOfLetters() {
    return lettres.size();
  }

  @Override
  public int getLetterAmount(char c) {
    int a= 0;
    for(int i=0; i<getNumberOfLetters(); i++)
      if(Character.toLowerCase(lettres.get(i).getName()) ==  Character.toLowerCase(c))
        a = a + 1;
    return a;
  }

  @Override
  public String getLetters() {
    String a= "";
    for(int i=0; i<getNumberOfLetters(); i++)
      a +=lettres.get(i).getName();
    return a;
  }

  @Override
  public int getSize() {
    return MAX_RACK_LETTERS;
  }

  @Override
  public Iterator<Letter> iterator() {
    return lettres.iterator();
  }

  @Override
  public Rack clone() {
      Rack clone = new RackImplNew(sac);
      for (Letter l : this)
    clone.addLetter(l.clone());
      return clone;
  }


  @Override
  public Letter getLetter(char c) {
      for(Letter l : this)
    if (l.getName() == c)
        return l;
      return null;
  }


  @Override
  public void changeEnvironment(GameEnvironment env) {
      this.sac = env.bag();
  }
}
TOP

Related Classes of pdp.scrabble.game.impl.RackImplNew

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.