Bonjour
Pour info, la 3D et Delphi c'est avec les versions XE et plus et l'environnement FMX. Cela ne veut pas dire que ce n'était pas possible avant mais c'est quand même beaucoup plus facile depuis.
Je n'ai pas encore accroché ce wagon
Pas du tout, je suis juste quelqu'un qui a pour habitude de faire le moins de calcul possible pour éviter les erreurs.
Juste par défi intellectuel, je me suis fait le plateau localisable (pour peu de mettre les textes en variable ressource), sensible à l'échelle et au DPI de l'écran (difficile de le montre sans vidéo)
mon seul regret : le centre du plateau (toujours à cause du problème de l'étoile prise dans un fichier SVG, mais c'est un détail)
Pas un seul appel au canvas ou calculs de positions Par contre une utilisation à fond de la possibilité d'ajouter des composants enfants à d'autres composants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 procedure TForm1.FillGridClick(Sender: TObject); var l,c : integer; aRect : TRectangle; procedure MotTriple(r : TRectangle); begin R.Fill.Color:=Talphacolors.Red; with TText.Create(Self) do begin Parent:=R; Align:=TalignLayout.Contents; Text:='mot triple'; // localisable TextSettings.Font.Size:=8; end; end; procedure MotDouble(r : TRectangle); begin R.Fill.Color:=Talphacolors.Pink; with TText.Create(Self) do begin Parent:=R; Align:=TalignLayout.Contents; Text:='mot double'; // localisable TextSettings.Font.Size:=8; end; end; procedure LettreTriple(r : TRectangle); begin R.Fill.Color:=Talphacolors.Royalblue; with TText.Create(Self) do begin Parent:=R; Align:=TalignLayout.Contents; Text:='lettre triple'; // localisable TextSettings.Font.Size:=8; end; end; procedure LettreDouble(r : TRectangle); begin R.Fill.Color:=Talphacolors.Lightseagreen; with TText.Create(Self) do begin Parent:=R; Align:=TalignLayout.Contents; Text:='lettre double'; // localisable TextSettings.Font.Size:=8; end; end; procedure Star(R : TRectangle); begin with TText.Create(Self) do begin Parent:=R; Align:=TalignLayout.Contents; Text:=#1046; TextSettings.Font.Size:=8; TextSettings.Font.Style:=[TFontStyle.fsBold]; end; end; begin for l := 0 to 14 do for c := 0 to 14 do begin aRect:=TRectangle.Create(Self); aRect.Fill.Color:=TAlphaColors.Cream; aRect.Stroke.color:=TAlphaColors.Lightgreen; aRect.Parent:=Plateau; case ValeurCase[c,l] of -3 : MotTriple(ARect); -2 : MotDouble(ARect); 3 : LettreTriple(ARect); 2 : LettreDouble(ARect); end; if (l=7) AND (c=7) then Star(aRect); end; end;
Où je suis moins content, c'est dans ma manière de définir le plateau (initialisation d'un tableau) mais le but de l'exercice était de "voir" quel serait le meilleur moyen de faire le plateau
un TGridPanelLayout (défini au design) a été mon choix.
Les lettres (du moins le style du "pion") ce n'est pas encore fait mais ne saurait tarder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 for var l := 0 to 14 do for var c := 0 to 14 do ValeurCase[c,l]:=1; // mots triples valeurcase[0,0]:=-3; valeurcase[0,7]:=-3; valeurcase[0,14]:=-3; valeurcase[7,0]:=-3; valeurcase[7,14]:=-3; valeurcase[14,0]:=-3; valeurcase[14,7]:=-3; valeurcase[14,14]:=-3; // mots doubles valeurcase[1,1]:=-2; valeurcase[1,13]:=-2; valeurcase[2,2]:=-2; valeurcase[2,12]:=-2; valeurcase[3,3]:=-2; valeurcase[3,11]:=-2; valeurcase[4,4]:=-2; valeurcase[4,10]:=-2; valeurcase[13,1]:=-2; valeurcase[13,13]:=-2; valeurcase[12,2]:=-2; valeurcase[12,12]:=-2; valeurcase[11,3]:=-2; valeurcase[11,11]:=-2; valeurcase[10,4]:=-2; valeurcase[10,10]:=-2; // lettres triple valeurcase[5,1]:=3; valeurcase[9,1]:=3; valeurcase[5,13]:=3; valeurcase[9,13]:=3; valeurcase[1,5]:=3; valeurcase[5,5]:=3; valeurcase[9,5]:=3; valeurcase[13,5]:=3; valeurcase[1,9]:=3; valeurcase[5,9]:=3; valeurcase[9,9]:=3; valeurcase[13,9]:=3; // Lettres Doubles valeurcase[3,0]:=2; valeurcase[11,0]:=2; valeurcase[3,14]:=2; valeurcase[11,14]:=2; valeurcase[6,2]:=2; valeurcase[8,2]:=2; valeurcase[6,12]:=2; valeurcase[8,12]:=2; valeurcase[0,3]:=2; valeurcase[7,3]:=2; valeurcase[14,3]:=2; valeurcase[0,11]:=2; valeurcase[7,11]:=2; valeurcase[14,11]:=2; valeurcase[2,6]:=2; valeurcase[6,6]:=2; valeurcase[8,6]:=2; valeurcase[12,6]:=2; valeurcase[2,8]:=2; valeurcase[6,8]:=2; valeurcase[8,8]:=2; valeurcase[12,8]:=2; valeurcase[3,7]:=2; valeurcase[11,7]:=2;
20mn plus tard voilà un premier jus
pas totalement satisfaisant, j'aurais voulu mettre un effet relief sur la lettre et la valeur.
Idem j'ai utilisé un SpeedButton (ce qui en soit n'est pas mal) pour la lettrine mais du coup je suis obligé de coder ainsi
j'eusse préféré Pion.detail:='1'; du coup autant renommer en "valeur"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // à tranformer en fonction, result TSpeedButton procedure unPion(Lettre : String; valeur : word); begin Pion.text:=Lettre; Pion.tag:=valeur; TText(Pion.FindStyleResource('detail')).text:=valeur.toString; end;
Partager