...
Her er fullstendig kode for klasser Memory-klassen:
Code Block | ||||
---|---|---|---|---|
| ||||
public class Memory<T> { private List<T> possibleItems; private List<T> expectedItems; private int acceptedCount; public Memory(Collection<T> possibleItems) { this.possibleItems = new ArrayList<>(possibleItems); expectedItems = new ArrayList<T>(); acceptedCount = 0; } public Memory(T... possibleItems) { this(Arrays.asList(possibleItems)); } public T nextItem() { int index = (int) (Math.random() * possibleItems.size()); // generate random index T nextItem = possibleItems.get(index); // look up value expectedItems.add(nextItem); // add to sequence acceptedCount = 0; // reset accepted counter return nextItem; // return new item } public Collection<T> nextItems(int count) { Collection<T> items = new ArrayList<T>(); while (count > 0) { items.add(nextItem()); } return items; } public int getItemCount() { return expectedItems.size(); } public int getItemsLeft() { return expectedItems.size() - acceptedCount; } public Boolean acceptItem(T item) { // is acceptItem called after sequence is completed if (acceptedCount >= expectedItems.size()) { return false; } // is the number input by the user correct if (! expectedItems.get(acceptedCount).equals(item)) { // if they are not the same, we indicate this by returning false object return Boolean.FALSE; } acceptedCount++; // correct number, so increment counter // is this the last number if (acceptedCount == expectedItems.size()) { // return true object return Boolean.TRUE; } // otherwise return null, indicating correct value, but not finished return null; } } |
...
- nextItems(int)-metoden gir muligheten til å utvide sekvensen med flere elementer om gangen
- konstruktøren Memory(T...) bruker såkalte varargs og gjør det enklere å lage et Memory-objekt med et spesifikt sett mulige verdier
I versjon 3 brukes denne Memory-klassen i et hukommelsesspill med grafisk grensesnitt basert på JavaFX.