- Offizieller Beitrag
Heyho,
Ich bins nochmal, wieder mit dem Spiel "Schäfchen ins Trockene bringen" (aka. "Fang den Hut")
Ich versuche grade folgendes: Wie kommt mein Schaf möglichst schnell von dem Platz wo es grade ist auf ein anderen Platz.
Das Spiel gibt mir immer 3 Würfel (wovon mindestens zwei verschieden sind). Die Möglichen Züge, die mein Schaf gehen kann, habe ich in einem Array und die Felder + die Nachbarsfelder ebenfalls in einem Array
(z.B. für Feld 0: [0][1] = 5 [0][2] = 10 [0][3] = 15 [0][4] = 20 - Feld 0 hat also 4 Nachbars Felder: 5,10,15 und 20)
Hier mal die beiden Arrays:
$SC_ARR_PLACES (alle Felder)
Spoiler anzeigen
Global $SC_ARR_PLACES[65][5]
$SC_ARR_PLACES[0][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[0][1] = 5; 1. Nachbar von Feld 0
$SC_ARR_PLACES[0][2] = 20; 2. Nachbar von Feld 0
$SC_ARR_PLACES[0][3] = 10; 3. Nachbar von Feld 0
$SC_ARR_PLACES[0][4] = 15; 4. Nachbar von Feld 0
$SC_ARR_PLACES[1][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[1][1] = 51; 1. Nachbar von Feld 1
$SC_ARR_PLACES[1][2] = 64; 2. Nachbar von Feld 1
$SC_ARR_PLACES[1][3] = 52; 3. Nachbar von Feld 1
$SC_ARR_PLACES[1][4] = 9; 4. Nachbar von Feld 1
$SC_ARR_PLACES[2][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[2][1] = 34; 1. Nachbar von Feld 2
$SC_ARR_PLACES[2][2] = 33; 2. Nachbar von Feld 2
$SC_ARR_PLACES[2][3] = 62; 3. Nachbar von Feld 2
$SC_ARR_PLACES[2][4] = 14; 4. Nachbar von Feld 2
$SC_ARR_PLACES[3][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[3][1] = 19; 1. Nachbar von Feld 3
$SC_ARR_PLACES[3][2] = 42; 2. Nachbar von Feld 3
$SC_ARR_PLACES[3][3] = 43; 3. Nachbar von Feld 3
$SC_ARR_PLACES[3][4] = 63; 4. Nachbar von Feld 3
$SC_ARR_PLACES[4][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[4][1] = 25; 1. Nachbar von Feld 4
$SC_ARR_PLACES[4][2] = 24; 2. Nachbar von Feld 4
$SC_ARR_PLACES[4][3] = 61; 3. Nachbar von Feld 4
$SC_ARR_PLACES[4][4] = 60; 4. Nachbar von Feld 4
$SC_ARR_PLACES[5][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[5][1] = 0; 1. Nachbar von Feld 5
$SC_ARR_PLACES[5][2] = 6; 2. Nachbar von Feld 5
$SC_ARR_PLACES[6][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[6][1] = 5; 1. Nachbar von Feld 6
$SC_ARR_PLACES[6][2] = 7; 2. Nachbar von Feld 6
$SC_ARR_PLACES[7][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[7][1] = 6; 1. Nachbar von Feld 7
$SC_ARR_PLACES[7][2] = 8; 2. Nachbar von Feld 7
$SC_ARR_PLACES[8][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[8][1] = 7; 1. Nachbar von Feld 8
$SC_ARR_PLACES[8][2] = 9; 2. Nachbar von Feld 8
$SC_ARR_PLACES[9][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[9][1] = 1; 1. Nachbar von Feld 9
$SC_ARR_PLACES[9][2] = 8; 2. Nachbar von Feld 9
$SC_ARR_PLACES[10][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[10][1] = 0; 1. Nachbar von Feld 10
$SC_ARR_PLACES[10][2] = 11; 2. Nachbar von Feld 10
$SC_ARR_PLACES[11][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[11][1] = 10; 1. Nachbar von Feld 11
$SC_ARR_PLACES[11][2] = 12; 2. Nachbar von Feld 11
$SC_ARR_PLACES[12][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[12][1] = 11; 1. Nachbar von Feld 12
$SC_ARR_PLACES[12][2] = 13; 2. Nachbar von Feld 12
$SC_ARR_PLACES[13][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[13][1] = 12; 1. Nachbar von Feld 13
$SC_ARR_PLACES[13][2] = 14; 2. Nachbar von Feld 13
$SC_ARR_PLACES[14][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[14][1] = 2; 1. Nachbar von Feld 14
$SC_ARR_PLACES[14][2] = 13; 2. Nachbar von Feld 14
$SC_ARR_PLACES[15][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[15][1] = 0; 1. Nachbar von Feld 15
$SC_ARR_PLACES[15][2] = 16; 2. Nachbar von Feld 15
$SC_ARR_PLACES[16][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[16][1] = 17; 1. Nachbar von Feld 16
$SC_ARR_PLACES[16][2] = 15; 2. Nachbar von Feld 16
$SC_ARR_PLACES[17][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[17][1] = 16; 1. Nachbar von Feld 17
$SC_ARR_PLACES[17][2] = 18; 2. Nachbar von Feld 17
$SC_ARR_PLACES[18][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[18][1] = 17; 1. Nachbar von Feld 18
$SC_ARR_PLACES[18][2] = 19; 2. Nachbar von Feld 18
$SC_ARR_PLACES[19][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[19][1] = 18; 1. Nachbar von Feld 19
$SC_ARR_PLACES[19][2] = 3; 2. Nachbar von Feld 19
$SC_ARR_PLACES[20][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[20][1] = 0; 1. Nachbar von Feld 20
$SC_ARR_PLACES[20][2] = 21; 2. Nachbar von Feld 20
$SC_ARR_PLACES[21][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[21][1] = 20; 1. Nachbar von Feld 21
$SC_ARR_PLACES[21][2] = 22; 2. Nachbar von Feld 21
$SC_ARR_PLACES[22][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[22][1] = 21; 1. Nachbar von Feld 22
$SC_ARR_PLACES[22][2] = 23; 2. Nachbar von Feld 22
$SC_ARR_PLACES[23][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[23][1] = 22; 1. Nachbar von Feld 23
$SC_ARR_PLACES[23][2] = 24; 2. Nachbar von Feld 23
$SC_ARR_PLACES[24][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[24][1] = 4; 1. Nachbar von Feld 24
$SC_ARR_PLACES[24][2] = 23; 2. Nachbar von Feld 24
$SC_ARR_PLACES[25][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[25][1] = 4; 1. Nachbar von Feld 25
$SC_ARR_PLACES[25][2] = 26; 2. Nachbar von Feld 25
$SC_ARR_PLACES[26][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[26][1] = 25; 1. Nachbar von Feld 26
$SC_ARR_PLACES[26][2] = 27; 2. Nachbar von Feld 26
$SC_ARR_PLACES[27][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[27][1] = 26; 1. Nachbar von Feld 27
$SC_ARR_PLACES[27][2] = 28; 2. Nachbar von Feld 27
$SC_ARR_PLACES[28][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[28][1] = 27; 1. Nachbar von Feld 28
$SC_ARR_PLACES[28][2] = 29; 2. Nachbar von Feld 28
$SC_ARR_PLACES[29][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[29][1] = 28; 1. Nachbar von Feld 29
$SC_ARR_PLACES[29][2] = 30; 2. Nachbar von Feld 29
$SC_ARR_PLACES[30][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[30][1] = 29; 1. Nachbar von Feld 30
$SC_ARR_PLACES[30][2] = 31; 2. Nachbar von Feld 30
$SC_ARR_PLACES[31][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[31][1] = 32; 1. Nachbar von Feld 31
$SC_ARR_PLACES[31][2] = 30; 2. Nachbar von Feld 31
$SC_ARR_PLACES[32][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[32][1] = 33; 1. Nachbar von Feld 32
$SC_ARR_PLACES[32][2] = 31; 2. Nachbar von Feld 32
$SC_ARR_PLACES[33][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[33][1] = 32; 1. Nachbar von Feld 33
$SC_ARR_PLACES[33][2] = 2; 2. Nachbar von Feld 33
$SC_ARR_PLACES[34][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[34][1] = 35; 1. Nachbar von Feld 34
$SC_ARR_PLACES[34][2] = 2; 2. Nachbar von Feld 34
$SC_ARR_PLACES[35][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[35][1] = 34; 1. Nachbar von Feld 35
$SC_ARR_PLACES[35][2] = 36; 2. Nachbar von Feld 35
$SC_ARR_PLACES[36][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[36][1] = 35; 1. Nachbar von Feld 36
$SC_ARR_PLACES[36][2] = 37; 2. Nachbar von Feld 36
$SC_ARR_PLACES[37][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[37][1] = 38; 1. Nachbar von Feld 37
$SC_ARR_PLACES[37][2] = 36; 2. Nachbar von Feld 37
$SC_ARR_PLACES[38][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[38][1] = 39; 1. Nachbar von Feld 38
$SC_ARR_PLACES[38][2] = 37; 2. Nachbar von Feld 38
$SC_ARR_PLACES[39][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[39][1] = 38; 1. Nachbar von Feld 39
$SC_ARR_PLACES[39][2] = 40; 2. Nachbar von Feld 39
$SC_ARR_PLACES[40][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[40][1] = 39; 1. Nachbar von Feld 40
$SC_ARR_PLACES[40][2] = 41; 2. Nachbar von Feld 40
$SC_ARR_PLACES[41][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[41][1] = 42; 1. Nachbar von Feld 41
$SC_ARR_PLACES[41][2] = 40; 2. Nachbar von Feld 41
$SC_ARR_PLACES[42][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[42][1] = 3; 1. Nachbar von Feld 42
$SC_ARR_PLACES[42][2] = 41; 2. Nachbar von Feld 42
$SC_ARR_PLACES[43][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[43][1] = 3; 1. Nachbar von Feld 43
$SC_ARR_PLACES[43][2] = 44; 2. Nachbar von Feld 43
$SC_ARR_PLACES[44][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[44][1] = 43; 1. Nachbar von Feld 44
$SC_ARR_PLACES[44][2] = 45; 2. Nachbar von Feld 44
$SC_ARR_PLACES[45][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[45][1] = 46; 1. Nachbar von Feld 45
$SC_ARR_PLACES[45][2] = 44; 2. Nachbar von Feld 45
$SC_ARR_PLACES[46][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[46][1] = 47; 1. Nachbar von Feld 46
$SC_ARR_PLACES[46][2] = 45; 2. Nachbar von Feld 46
$SC_ARR_PLACES[47][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[47][1] = 48; 1. Nachbar von Feld 47
$SC_ARR_PLACES[47][2] = 46; 2. Nachbar von Feld 47
$SC_ARR_PLACES[48][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[48][1] = 49; 1. Nachbar von Feld 48
$SC_ARR_PLACES[48][2] = 47; 2. Nachbar von Feld 48
$SC_ARR_PLACES[49][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[49][1] = 50; 1. Nachbar von Feld 49
$SC_ARR_PLACES[49][2] = 48; 2. Nachbar von Feld 49
$SC_ARR_PLACES[50][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[50][1] = 51; 1. Nachbar von Feld 50
$SC_ARR_PLACES[50][2] = 49; 2. Nachbar von Feld 50
$SC_ARR_PLACES[51][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[51][1] = 50; 1. Nachbar von Feld 51
$SC_ARR_PLACES[51][2] = 1; 2. Nachbar von Feld 51
$SC_ARR_PLACES[52][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[52][1] = 1; 1. Nachbar von Feld 52
$SC_ARR_PLACES[52][2] = 53; 2. Nachbar von Feld 52
$SC_ARR_PLACES[53][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[53][1] = 54; 1. Nachbar von Feld 53
$SC_ARR_PLACES[53][2] = 52; 2. Nachbar von Feld 53
$SC_ARR_PLACES[54][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[54][1] = 55; 1. Nachbar von Feld 54
$SC_ARR_PLACES[54][2] = 53; 2. Nachbar von Feld 54
$SC_ARR_PLACES[55][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[55][1] = 54; 1. Nachbar von Feld 55
$SC_ARR_PLACES[55][2] = 56; 2. Nachbar von Feld 55
$SC_ARR_PLACES[56][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[56][1] = 55; 1. Nachbar von Feld 56
$SC_ARR_PLACES[56][2] = 57; 2. Nachbar von Feld 56
$SC_ARR_PLACES[57][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[57][1] = 58; 1. Nachbar von Feld 57
$SC_ARR_PLACES[57][2] = 56; 2. Nachbar von Feld 57
$SC_ARR_PLACES[58][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[58][1] = 59; 1. Nachbar von Feld 58
$SC_ARR_PLACES[58][2] = 57; 2. Nachbar von Feld 58
$SC_ARR_PLACES[59][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[59][1] = 58; 1. Nachbar von Feld 59
$SC_ARR_PLACES[59][2] = 60; 2. Nachbar von Feld 59
$SC_ARR_PLACES[60][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[60][1] = 4; 1. Nachbar von Feld 60
$SC_ARR_PLACES[60][2] = 59; 2. Nachbar von Feld 60
$SC_ARR_PLACES[61][0] = "HOME2"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[61][1] = 4; 1. Nachbar von Feld 61
$SC_ARR_PLACES[62][0] = "HOME1"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[62][1] = 2; 1. Nachbar von Feld 62
$SC_ARR_PLACES[63][0] = "HOME2"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[63][1] = 3; 1. Nachbar von Feld 63
$SC_ARR_PLACES[64][0] = "HOME1"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[64][1] = 1; 1. Nachbar von Feld 64
Und die Möglichen Züge könnten so Aussehen:
$SC_ARR_POSSIBLEMOVES
Spoiler anzeigen
;Gewürfelt wurde eine Vier eine Zwei und eine Eins
;Dies gilt nur für den Blauen Spieler (Schaf 1,2,3 und 7,8,9)
;Alle Schafe sind noch in ihren Heimatfeldern
Global $SC_ARR_POSSIBLEMOVES[43][2]
$SC_ARR_POSSIBLEMOVES[0][0] = 42;Mögliche Züge
;Schaf 1 kann auf Feld 4
$SC_ARR_POSSIBLEMOVES[1][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[1][1] = 4; Platz
;Schaf 1 kann auf Feld 25
$SC_ARR_POSSIBLEMOVES[2][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[2][1] = 25; Platz
;Schaf 1 kann auf Feld 24
$SC_ARR_POSSIBLEMOVES[3][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[3][1] = 24; Platz
;Schaf 1 kann auf Feld 60
$SC_ARR_POSSIBLEMOVES[4][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[4][1] = 60; Platz
;Schaf 1 kann auf Feld 27
$SC_ARR_POSSIBLEMOVES[5][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[5][1] = 27; Platz
;Schaf 1 kann auf Feld 22
$SC_ARR_POSSIBLEMOVES[6][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[6][1] = 22; Platz
;Schaf 1 kann auf Feld 58
$SC_ARR_POSSIBLEMOVES[7][0] = 1; Schaf
$SC_ARR_POSSIBLEMOVES[7][1] = 58; Platz
;Schaf 2 kann auf Feld 4
$SC_ARR_POSSIBLEMOVES[8][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[8][1] = 4; Platz
;Schaf 2 kann auf Feld 25
$SC_ARR_POSSIBLEMOVES[9][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[9][1] = 25; Platz
;Schaf 2 kann auf Feld 24
$SC_ARR_POSSIBLEMOVES[10][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[10][1] = 24; Platz
;Schaf 2 kann auf Feld 60
$SC_ARR_POSSIBLEMOVES[11][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[11][1] = 60; Platz
;Schaf 2 kann auf Feld 27
$SC_ARR_POSSIBLEMOVES[12][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[12][1] = 27; Platz
;Schaf 2 kann auf Feld 22
$SC_ARR_POSSIBLEMOVES[13][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[13][1] = 22; Platz
;Schaf 2 kann auf Feld 58
$SC_ARR_POSSIBLEMOVES[14][0] = 2; Schaf
$SC_ARR_POSSIBLEMOVES[14][1] = 58; Platz
;Schaf 3 kann auf Feld 4
$SC_ARR_POSSIBLEMOVES[15][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[15][1] = 4; Platz
;Schaf 3 kann auf Feld 25
$SC_ARR_POSSIBLEMOVES[16][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[16][1] = 25; Platz
;Schaf 3 kann auf Feld 24
$SC_ARR_POSSIBLEMOVES[17][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[17][1] = 24; Platz
;Schaf 3 kann auf Feld 60
$SC_ARR_POSSIBLEMOVES[18][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[18][1] = 60; Platz
;Schaf 3 kann auf Feld 27
$SC_ARR_POSSIBLEMOVES[19][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[19][1] = 27; Platz
;Schaf 3 kann auf Feld 22
$SC_ARR_POSSIBLEMOVES[20][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[20][1] = 22; Platz
;Schaf 3 kann auf Feld 58
$SC_ARR_POSSIBLEMOVES[21][0] = 3; Schaf
$SC_ARR_POSSIBLEMOVES[21][1] = 58; Platz
;Schaf 7 kann auf Feld 3
$SC_ARR_POSSIBLEMOVES[22][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[22][1] = 3; Platz
;Schaf 7 kann auf Feld 19
$SC_ARR_POSSIBLEMOVES[23][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[23][1] = 19; Platz
;Schaf 7 kann auf Feld 42
$SC_ARR_POSSIBLEMOVES[24][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[24][1] = 42; Platz
;Schaf 7 kann auf Feld 43
$SC_ARR_POSSIBLEMOVES[25][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[25][1] = 43; Platz
;Schaf 7 kann auf Feld 17
$SC_ARR_POSSIBLEMOVES[26][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[26][1] = 17; Platz
;Schaf 7 kann auf Feld 40
$SC_ARR_POSSIBLEMOVES[27][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[27][1] = 40; Platz
;Schaf 7 kann auf Feld 45
$SC_ARR_POSSIBLEMOVES[28][0] = 7; Schaf
$SC_ARR_POSSIBLEMOVES[28][1] = 45; Platz
;Schaf 8 kann auf Feld 3
$SC_ARR_POSSIBLEMOVES[29][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[29][1] = 3; Platz
;Schaf 8 kann auf Feld 19
$SC_ARR_POSSIBLEMOVES[30][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[30][1] = 19; Platz
;Schaf 8 kann auf Feld 42
$SC_ARR_POSSIBLEMOVES[31][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[31][1] = 42; Platz
;Schaf 8 kann auf Feld 43
$SC_ARR_POSSIBLEMOVES[32][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[32][1] = 43; Platz
;Schaf 8 kann auf Feld 17
$SC_ARR_POSSIBLEMOVES[33][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[33][1] = 17; Platz
;Schaf 8 kann auf Feld 40
$SC_ARR_POSSIBLEMOVES[34][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[34][1] = 40; Platz
;Schaf 8 kann auf Feld 45
$SC_ARR_POSSIBLEMOVES[35][0] = 8; Schaf
$SC_ARR_POSSIBLEMOVES[35][1] = 45; Platz
;Schaf 9 kann auf Feld 3
$SC_ARR_POSSIBLEMOVES[36][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[36][1] = 3; Platz
;Schaf 9 kann auf Feld 19
$SC_ARR_POSSIBLEMOVES[37][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[37][1] = 19; Platz
;Schaf 9 kann auf Feld 42
$SC_ARR_POSSIBLEMOVES[38][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[38][1] = 42; Platz
;Schaf 9 kann auf Feld 43
$SC_ARR_POSSIBLEMOVES[39][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[39][1] = 43; Platz
;Schaf 9 kann auf Feld 17
$SC_ARR_POSSIBLEMOVES[40][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[40][1] = 17; Platz
;Schaf 9 kann auf Feld 40
$SC_ARR_POSSIBLEMOVES[41][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[41][1] = 40; Platz
;Schaf 9 kann auf Feld 45
$SC_ARR_POSSIBLEMOVES[42][0] = 9; Schaf
$SC_ARR_POSSIBLEMOVES[42][1] = 45; Platz
Nun will ich zum Beispiel Schaf 2 sagen, er soll möglichst schnell zu Feld 11. (Siehe Bild im Anhang)
Wie mache ich das am besten? Der A* Algorithmus (A stern bzw A star) hört sich da genau richtig an, leider weiß ich nicht, wie ich den mit Feldern anstelle von Koordinaten füttern kann.
Hat sonst jemand noch eine andere Idee? Ich habe mir vielleicht überlegt meine Funktion zum herausfinden der möglichen Züge zu modifizieren, leider komme ich da nicht weiter, da die Züge nicht "Spinnenartig" vom Feld aus gehen, sondern ich mit einer Rekursiven funktion gearbeitet habe. (Er checkt z.B. NICHT so: Start: Feld 63 -> 3 -> 42 -> 3 -> 19 -> 3 -> 43 sonder so: 63 -> 3 -> 42 -> 41 -> 40 -> ...)
Spoiler anzeigen
Func _SC_RefreshPossibleMoves()
Global $SC_ARR_POSSIBLEMOVES[1][2];Setze die Globale Varialbe GetPossible (== Mögliche Züge) zurück
Local $n, $m
Local $aMySheeps = _SC_GetMySheeps()
For $n = 0 To 5
For $m = 1 To 6
If _SC_SheepExists($aMySheeps[$n]) Then;wenn das schaf überhaupt noch existiert (falls es gefressen wird, kanns auch nicht mehr gehen)
If _ArraySearch($SC_ARR_DIE,$m) > -1 Then;damit die möglichen Züge nach Größe sortiert werden
ConsoleWrite($m & @CRLF)
Local $iPlace = $SC_ARR_SHEEP[$aMySheeps[$n]][6];Der momentane Platz des Schaafes, z.B. 61
Local $aAlready[1] = [$iPlace];Die, die schon geprüft wurden
$aAlready = __SC_Recursive_GetPossible($iPlace, $aAlready, $aMySheeps[$n], 1, $m);SC_ARR_DIE[0] gibt den ersten würfel zurück, z.B. 5
EndIf
EndIf
Next
Next
$SC_ARR_POSSIBLEMOVES[0][0] = UBound($SC_ARR_POSSIBLEMOVES) - 1
;Gibt die globale variable zurück
Return $SC_ARR_POSSIBLEMOVES
EndFunc ;==>_SC_RefreshPossibleMoves
Func __SC_Recursive_GetPossible($iPlace, $aAlready, $iSheep, $zaehler = 0, $iTo = 6)
Local $i2, $z
$aNeighbour = _SC_GetNeighbourPlaces($iPlace);gibt die nachbarsplätze eines platzes aus in einem array (array[0] = anz)
For $i2 = 1 To $aNeighbour[0];schleife
If $zaehler = $iTo Then;wenn zaehler = wuerfel dann schreibe in das global array (SC_ARR_GETPOSSIBLE)
If _ArraySearch($aAlready, $aNeighbour[$i2]) = -1 And $aNeighbour[$i2] <> '' Then
If _SC_IsValidTurn($iSheep, $aNeighbour[$i2]) Then
Local $iUb = UBound($SC_ARR_POSSIBLEMOVES)
ReDim $SC_ARR_POSSIBLEMOVES[$iUb + 1][2]
$SC_ARR_POSSIBLEMOVES[$iUb][0] = $iSheep
$SC_ARR_POSSIBLEMOVES[$iUb][1] = $aNeighbour[$i2]
EndIf
EndIf
Else;wenn zaehler < wuerfel dann schreibe das momentane feld in ein array und finde davon wieder die nachbars felder (rekursion)
If _ArraySearch($aAlready, $aNeighbour[$i2]) = -1 Then
Local $iUb = UBound($aAlready)
ReDim $aAlready[$iUb + 1]
$aAlready[$iUb] = $aNeighbour[$i2]
__SC_Recursive_GetPossible($aNeighbour[$i2], $aAlready, $iSheep, $zaehler + 1, $iTo);zaehler +=1
EndIf
EndIf
Next
Return $aAlready;gibt aalready zurück für _test2
EndFunc ;==>__SC_Recursive_GetPossible
Im Anhang ist sonst auch noch mal ein funktionstüchtiges Beispiel (zum Herausfinden der Möglichen Züge)
Vielen Dank schonmal
Gruß
Spider