gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Hash, primeri, doterivanja Java kodova
[spa2-materijali.git] / Hash / primeri / XO.java
1 import org.svetovid.io.SvetovidReader;
3 /**
4 * Igra XO
5 *
6 * Prosiruje InfoTip samo zbog jednostavnosti u TestHash, nema razloga inace.
7 */
8 public class XO extends InfoTip {
9 public static final int DIM = 3;
10 private final int[][] tabla = new int[DIM][DIM];
12 public XO() {
13 }
15 @Override
16 public InfoTip ucitaj(SvetovidReader r) {
17 XO rez = new XO();
18 for (int i = 0; i < DIM; i++) {
19 for (int j = 0; j < DIM; j++) {
20 rez.tabla[i][j] = r.readInt();
21 }
22 }
23 return rez;
24 }
26 public boolean equals(Object o) {
27 // Objekat je identican
28 if (this == o) {
29 return true;
30 }
31 // Null je uvek razlicit
32 if (o == null) {
33 return false;
34 }
35 // Ako su klase razlicite, objekti ne mogu bili jednaki
36 if (getClass() != o.getClass()) {
37 return false;
38 }
40 // menjamo tip da mozemo da poredimo
41 XO o2 = (XO) o;
42 // posto je u ovoj klasi uvek inicijalizovano polje table
43 // i uvek je DIM x DIM ne moramo proveravati null
44 // niti da li su iste dimenzije
45 for (int i = 0; i < DIM; i++) {
46 for (int j = 0; j < DIM; j++) {
47 if (o2.tabla[i][j] != tabla[i][j]) {
48 return false;
49 }
50 }
51 }
52 return true;
53 }
55 @Override
56 public int hashCode() {
57 int rez = 0;
58 int koef = 3;
59 for (int i = 0; i < DIM; i++) {
60 for (int j = 0; j < DIM; j++) {
61 rez = koef * (rez + (tabla[i][j] + 2));
62 }
63 }
64 return rez;
65 }
67 // pomocni metod za lakse testiranje
68 public static void main(String[] args) {
69 new TestHash(new XO(), "xo").run();
70 }
71 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner