Cette fois-ci, le code n'est pas aussi "naïf" que le précédent. Il est beaucoup moins cool car il est bien plus long. Il se sert des labels "comme de Hashtable" et ça marche plutôt bien !
| > Appeler Script : L[:black_tile] = 1536 |
| > Commentaire : Iteration sur toutes les cases de la carte |
| > Opération : Variable [0002:y] = 0 |
| > Opération : Variable [0003:map_width] = map_width |
| > Opération : Variable [0004:map_height] = map_height |
| > Boucle |
| >| > Condition : Variable [0002:y] == Variable [0004:map_height] |
| >| >| > Commentaire : Obligé d'utiliser une étiquette sinon... ça plante :O |
| >| >| > Aller à l'Étiquette : end_loop |
| >| >| > |
| >| > Fin - Condition |
| >| > Opération : Variable [0001:x] = 0 |
| >| > Boucle |
| >| >| > Condition : Variable [0001:x] == Variable [0003:map_width] |
| >| >| >| > Sortir de la Boucle |
| >| >| >| > |
| >| >| > Fin - Condition |
| >| >| > Commentaire : On stock les données de la case courante dans un HASH ! |
| >| >| > Commentaire : Via les labels !!! |
| >| >| > Appeler Script : offset = "#{V[1]}-#{V[2]}-" |
| >| >| > Appeler Script : L["#{offset}0"] = tile_id(V[1], V[2], 0) |
| >| >| > Appeler Script : L["#{offset}1"] = tile_id(V[1], V[2], 1) |
| >| >| > Appeler Script : L["#{offset}2"] = tile_id(V[1], V[2], 2) |
| >| >| > Commentaire : On rend la case courante noire |
| >| >| > Appeler Script : set_tile(L[:black_tile], V[1], V[2], 0) |
| >| >| > Appeler Script : set_tile(0, V[1], V[2], 1) |
| >| >| > Appeler Script : set_tile(0, V[1], V[2], 2) |
| >| >| > Opération : Variable [0001:x] += 1 |
| >| >| > |
| >| > Fin - Boucle |
| >| > Opération : Variable [0002:y] += 1 |
| >| > |
| > Fin - Boucle |
| > Étiquette : end_loop |
| > Boucle |
| >| > Attendre : 1 Frames |
| >| > Commentaire : On parcours toutes les cases voisines |
| >| > Opération : Variable [0002:y] = -1 |
| >| > Boucle |
| >| >| > Commentaire : Petite attente pour un peu plus de swagg |
| >| >| > Attendre : 1 Frames |
| >| >| > Condition : Variable [0002:y] > 1 |
| >| >| >| > Aller à l'Étiquette : end_loop2 |
| >| >| >| > |
| >| >| > Fin - Condition |
| >| >| > Opération : Variable [0001:x] = -1 |
| >| >| > Boucle |
| >| >| >| > Commentaire : Petite attente pour un peu plus de swagg |
| >| >| >| > Attendre : 1 Frames |
| >| >| >| > Condition : Variable [0001:x] > 1 |
| >| >| >| >| > Sortir de la Boucle |
| >| >| >| >| > |
| >| >| >| > Fin - Condition |
| >| >| >| > Appeler Script : L[:s_x] = player_x + V[1] |
| >| >| >| > Appeler Script : L[:s_y] = player_y + V[2] |
| >| >| >| > Commentaire : Si la case existe |
| >| >| >| > Condition : Script : L[:s_x] >= 0 and L[:s_x] < map_width and L[:s_y] >= 0 and L[:s_y] < map_height |
| >| >| >| >| > Commentaire : Remplacer la case si elle n'a pas déjà été modifiée |
| >| >| >| >| > Appeler Script : offset = "#{L[:s_x]}-#{L[:s_y]}-" |
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 0) != L["#{offset}0"] |
| >| >| >| >| > Appeler Script : set_tile(L["#{offset}0"], L[:s_x], L[:s_y], 0) |
| >| >| >| >| > Appeler Script : end |
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 1) != L["#{offset}1"] |
| >| >| >| >| > Appeler Script : set_tile(L["#{offset}1"], L[:s_x], L[:s_y], 1) |
| >| >| >| >| > Appeler Script : end |
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 2) != L["#{offset}2"] |
| >| >| >| >| > Appeler Script : set_tile(L["#{offset}2"], L[:s_x], L[:s_y], 2) |
| >| >| >| >| > Appeler Script : end |
| >| >| >| >| > |
| >| >| >| > Fin - Condition |
| >| >| >| > Opération : Variable [0001:x] += 1 |
| >| >| >| > |
| >| >| > Fin - Boucle |
| >| >| > Opération : Variable [0002:y] += 1 |
| >| >| > |
| >| > Fin - Boucle |
| >| > Étiquette : end_loop2 |
| >| > |
| > Fin - Boucle |
| > |