/ / Viacrozmerné pole pre textovú hru [closed] - python, polia, multidimenzionálne pole

Multidimenzionálne pole pre hru založenú na texte [closed] - python, array, multidimensional-array

Takže sa snažím vytvoriť textovú hru aniekto navrhol, aby som ukladal mapové dáta ako viacrozmerné pole Snažil som sa zistiť, ako som "d to alebo ako som" d dokonca navigovať cez viacrozmerné pole. Zdá sa mi, že by to bolo neuveriteľne ťažké, ale musím sa opýtať, pretože nebudem schopný prísť na to sám, ak je táto otázka príliš vágna, dajte mi vedieť, čo by malo byť konkrétnejšie.

odpovede:

1 pre odpoveď č. 1

Ručne vytvoriť viacrozmerné zoznam:

world_map = [["*", "*", "*", "*"],
["*", " ", "i", "*"],
["*", " ", " ", "*"],
["*", "*", "*", "*"]]

Kde * je stena a i môže byť hráč. Ak chcete prejsť cez túto mapu sveta, použite dve pre slučky:

for row in world_map:
for column in row:
print(column, end="")
print()

To by vytlačilo mapu sveta.

Ak potrebujete presunúť prehrávač doľava, môžete urobiť niečo ako:

for row in world_map:
for i, column in enumerate(row):
if column == "i":
if i > 0 and row[i - 1] == " ":
row[i - 1] = "i"
row[i] = " "

Môžete tiež pristupovať k prvkom priamo world_map[row][column] ak poznáte pozíciu svojho prvku.

Budete musieť urobiť zvyšok sami. Tiež to nemusí byť najlepší prístup, mali by ste použiť triedy pre hráčov, atď, ale to funguje dobre pre začiatočníkov :)


2 pre odpoveď č. 2

Viacrozmerné pole nie je nič viac ako pole, ktorého prvky mapujú iné pole, kde každá z týchto "čiastkových polí" má rovnakú veľkosť (ale nie striktne).

inner = [ "" ] * 10
outer = [ [].extend(inner) for x in inner ]

Tým sa vytvorí štvorcové mnohorozmerné pole 10 x 10 prvkov.

K týmto prvkom môžete pristupovať ako:

outer[outer_index][inner_index]

Jednoducho vizualizujte vonkajšie a vnútorné a indexy na mriežke, s vonkajším posuvom osi x a vnútorným posuvom osi y. Vyššie uvedené pole by vyzeralo trochu takto:

"" "" "" "" "" "" "" "" "" "" 0
"" "" "" "" "" "" "" "" "" "" 1
"" "" "" "" "" "" "" "" "" "" 2
"" "" "" "" "" "" "" "" "" "" 3
"" "" "" "" "" "" "" "" "" "" 4  (inner)
"" "" "" "" "" "" "" "" "" "" 5
"" "" "" "" "" "" "" "" "" "" 6
"" "" "" "" "" "" "" "" "" "" 7
"" "" "" "" "" "" "" "" "" "" 8
"" "" "" "" "" "" "" "" "" "" 9
0  1  2  3  4  5  6  7  8  9

(outer)

Ak aktualizujem hodnotu vonkajších prvkov na prvkoch 6 a 8, mriežka sa zmení:

outer[6][8] = "X" # marks the spot

"" "" "" "" "" "" "" "" "" ""  0
"" "" "" "" "" "" "" "" "" ""  1
"" "" "" "" "" "" "" "" "" ""  2
"" "" "" "" "" "" "" "" "" ""  3
"" "" "" "" "" "" "" "" "" ""  4  (inner)
"" "" "" "" "" "" "" "" "" ""  5
"" "" "" "" "" "" "" "" "" ""  6
"" "" "" "" "" "" "" "" "" ""  7
"" "" "" "" "" "" "X" "" "" "" 8
"" "" "" "" "" "" "" "" "" ""  9
0  1  2  3  4  5  6  7  8  9

(outer)

Dúfam, že to pomôže.