Ik ben bezig met een simpel spelletje. Ik heb een array die er zo uitziet:
De array veld moet dan omgezet worden in een array met kleuren.
Dat heb ik zo gedaan:
Ik wil nu dat ik de procedure vulkleuren kan aanvullen door er
van te maken.
Die dan deze omzetten doet dus onafhankelijk van wat er staat voor kleurgrid of veld als arrays. Nu dacht ik dat ik dat wel kon, maar het lukt niet.
maar bij regel:
krijg ik: [Error] Unit1.pas(98): Array type required
En
geeft:
[Error] Unit1.pas(155): Incompatible types: 'Tkleur' and 'Array'
Het probleem is dat gedoe met tkleur, want als ik er gewoon alleen vulkleuren(arraymetcijfers: tveld) van maak doet hij het wel. Hrm.
P.S. Kan iemand ook uitleggen waarom een record gebruikt wordt voor kleur? Ik snap dit namelijk niet. Ja ik ben beginner.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| type Tkleur = Record //array van kleuren kleur : TColor; end; tveld = array [0..6,0..6] of integer; //array met cijfers var kleurgrid : array [0..6,0..6] of Tkleur; veld : tveld = //voorbeeld van de array ( ( 1,1,1,1,1,1,1), ( 1,0,0,3,0,2,1), ( 1,0,1,0,1,0,1), ( 1,0,0,0,0,0,1), ( 1,0,1,0,1,0,1), ( 1,0,0,0,0,0,1), ( 1,1,1,1,1,1,1)); |
De array veld moet dan omgezet worden in een array met kleuren.
Dat heb ik zo gedaan:
Delphi:
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
| procedure vulkleuren; //leest waarden van veld array in en zet die om in kleuren //in de kleurgrid array var i,j: integer; begin for i:=0 to 6 do begin for j:=0 to 6 do begin if veld[i,j] = 1 then begin kleurgrid[i,j].kleur:=clblack; //muurkleur end else if veld[i,j] = 2 then begin kleurgrid[i,j].kleur:=clblue; //player kleur end else if veld[i,j] = 3 then begin kleurgrid[i,j].kleur:=clred; //cpu kleur end else begin kleurgrid[i,j].kleur := clwhite; //toegankelijk vakje end; end; end; end; |
Ik wil nu dat ik de procedure vulkleuren kan aanvullen door er
Delphi:
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
| procedure vulkleuren(arraymetcijfers: tveld;arraymetkleuren: tkleur); var i,j: integer; begin for i:=0 to 6 do begin for j:=0 to 6 do begin if arraymetcijfers[i,j] = 1 then begin arraymetkleuren[i,j].kleur:=clblack; end else if arraymetcijfers[i,j] = 2 then begin arraymetkleuren[i,j].kleur:=clblue; //player kleur end else if arraymetcijfers[i,j] = 3 then begin arraymetkleuren[i,j].kleur:=clred; //pc kleur end else begin arraymetkleuren[i,j].kleur := clwhite; //toegankelijk vakje end; end; end; end; |
van te maken.
Die dan deze omzetten doet dus onafhankelijk van wat er staat voor kleurgrid of veld als arrays. Nu dacht ik dat ik dat wel kon, maar het lukt niet.
maar bij regel:
Delphi:
1
| arraymetkleuren[i,j].kleur:=clblack; |
krijg ik: [Error] Unit1.pas(98): Array type required
En
Delphi:
1
| vulkleuren(veld,kleurgrid); |
geeft:
[Error] Unit1.pas(155): Incompatible types: 'Tkleur' and 'Array'
Het probleem is dat gedoe met tkleur, want als ik er gewoon alleen vulkleuren(arraymetcijfers: tveld) van maak doet hij het wel. Hrm.
P.S. Kan iemand ook uitleggen waarom een record gebruikt wordt voor kleur? Ik snap dit namelijk niet. Ja ik ben beginner.