-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJeu.java
117 lines (113 loc) · 3.41 KB
/
Jeu.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.util.Random;
import java.io.*;
/**
* classe jeu modelise des
* tirages de triomino
*/
public class Jeu{
// attributs
private int largeur;
private Triomino[] pieces=null;
private boolean[] utilises=null;
/**
* constructeur general
* @param largeur
* largeur du plateau destine a recevoir les triominos
* @param base
* nombre de valeurs possibles par face avant de la tirer au sort (2 si binaire, 16 si hexa)
*/
Jeu(int largeur,int base){
this.largeur=largeur;
pieces=new Triomino[largeur*largeur];
utilises=new boolean[largeur*largeur];
Random generator = new Random();
for (int i=0;i<largeur*largeur;i++) {
pieces[i]=new Triomino(Math.abs(generator.nextInt()%base), Math.abs(generator.nextInt()%base), Math.abs(generator.nextInt()%base));
}
for (int i=0;i<largeur*largeur;i++) {
utilises[i]=false;
}
}
/**
* methode ajouter remet un triomino dans la pioche
* apres avoir essaye en vain de le placer
* @param i
* rang du triomino dans la pioche de depart
*/
public void ajouter(int i) {
utilises[i] = false;
}
/**
* methode enlever prend un triomino dans la pioche
* @param i
* rang du triomino dans la pioche
* @return
* triomino de rang i dans la pioche de depart
*/
public Triomino enlever(int i) {
utilises[i] = true;
return pieces[i];
}
/**
* methode utilise teste si un triomino est toujours dans la pioche
* ou au contraire est place ou en cours de placement
* @param i
* rang du triomino dans la pioche
* @return
* true si le triomino est toujours dans la pioche, false autrement
*/
public boolean utilise(int i) {
if (this.utilises[i])
return true;
else
return false;
}
/**
* methode ecrit
* ecrit le tirage de triominos dans un fichier texte
*/
void ecrit(PrintWriter pw) {
String l1 = new String();
String l2 = new String();
String l3 = new String();
for(int i=0; i<largeur*largeur;i++)
l1 += " ^ ";
pw.println(l1);
for(int i=0; i<largeur*largeur;i++)
l2 += " "+Triominos.onechar(pieces[i].getDroite()) + " "+Triominos.onechar(pieces[i].getGauche())+ " ";
pw.println(l2);
for(int i=0; i<largeur*largeur;i++)
l3 += " /_" + Triominos.onechar(pieces[i].getBase()) + "_\\";
pw.println(l3);
}
/**
* methode affiche
* affiche le tirage sous forme textuelle
* affichage des triominos cote a cote sur les 3 memes lignes
* retour a la ligne tous les 12 triominos
*/
public void affiche() {
for(int i=0; i<largeur*largeur;i+=12){
int j1,j2,j3;
for(j1 = i ; (j1 < largeur*largeur) && (j1 < i+12) ; j1++)
System.out.print(" ^ ");
System.out.println("");
for(j2 = i ; (j2 < largeur*largeur) && (j2 < i+12) ; j2++)
System.out.print(" "+Triominos.onechar(pieces[j2].getGauche()) + " "+Triominos.onechar(pieces[j2].getDroite())+ " ");
System.out.println("");
for(j3 = i ; (j3 < largeur*largeur) && (j3 < i+12) ; j3++)
System.out.print(" /_" + Triominos.onechar(pieces[j3].getBase()) + "_\\");
System.out.println("");
}
}
/**
* methode d acces au triomino d un tirage
* @param i
* rang du triomino dans le tirage
* @return
* triomino
*/
public Triomino get(int i) {
return pieces[i];
}
}