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
|
/**
* Cette méthode crée une scène 3D pour le damier.
* Nous y définissons un ensemble de transformations pour un positionnement du damier dans l'univers 3D.
* Nous y ajoutons ensuite par un système de boucle une collection de cases et de pions.
* @return
*/
public BranchGroup createSceneDamier() {
BranchGroup parent = new BranchGroup();
parent.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
parent.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
parent.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
// Nous donnons une couleur gris clair au fond
Background background = new Background(new Color3f(0.94f, 0.93f, 0.92f));
background.setApplicationBounds(new BoundingBox());
parent.addChild(background);
// Nous appliquons une rotation de l'ensemble des cases du damier
Transform3D myRotation = new Transform3D();
myRotation.rotX(-1.0f);
TransformGroup myTGRotation = new TransformGroup();
myTGRotation.setTransform(myRotation);
parent.addChild(myTGRotation);
// Nous pla�ons dans l'espace le damier pour une meilleure visibilit�
Transform3D placement = new Transform3D();
placement.setTranslation(new Vector3d(X,Y,Z));
placement.setScale(zoom);
TGplacementcases.setTransform(placement);
myTGRotation.addChild(TGplacementcases);
// Création par lignes
for(i=0;i<10;i++) {
// Création par colonnes
for(j=0;j<10;j++) {
if (b1==b2){
cases[i][j] = new CaseDamier(CaseDamier.CASE_BLANCHE,i,j);
cases[i][j].setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);
cases[i][j].setCapability(Appearance.ALLOW_RENDERING_ATTRIBUTES_WRITE);
}
else{
cases[i][j] = new CaseDamier(CaseDamier.CASE_NOIRE,i,j);
cases[i][j].setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);
cases[i][j].setCapability(Appearance.ALLOW_RENDERING_ATTRIBUTES_WRITE);
}
// Nous disposons les cases dans l'espace
Transform3D myT = new Transform3D();
myT.setTranslation(new Vector3d(i*2*Damier.TAILLE_CASE-(2*Damier.TAILLE_CASE*5), j*2*Damier.TAILLE_CASE-(2*Damier.TAILLE_CASE*5), 0));
TransformGroup myTG = new TransformGroup();
myTG.setTransform(myT);
myTG.addChild(cases[i][j].getShape3D());
TGplacementcases.addChild(myTG);
b2=!b2;
}
b1=!b1;
}
return parent;
} |
Partager