fonto: http://inventwithpython.com/chapter13.html
Temoj Kovritaj dum tiu ĉapitro:
- Datumstrukturoj.
- La forigi() listaj metodoj.
- La isdigit() kordaj metodoj.
- La sys.exit() funkcio.
Soni estas teknologio kiu ŝipoj uzi por lokalizi celojn sub la maro. En ĉi tiu ĉapitro estas ludo, la ludanto metas soni mekanismoj ĉe diversaj lokoj en la oceano por lokalizi subakvigita trezoro brustojn. La soni mekanismoj (en nia ludo) povas diri la ludanto kiom malproksime trezoron brusto estas el la soni mekanismo, sed ne en kiu direkto. Sed metante multnombraj soni mekanismoj sube, la ludanto povas diveni kie ĝuste la trezorkesto estas.
Estas tri kestoj por kolekti, sed la ludanto havas nur dek ses soni mekanismoj uzi por trovi ilin. Imagu, ke ni ne povis vidi la trezorkesto en la sekvaj bildoj. Ĉar ĉiu soni mekanismo povas nur trovi la distanco sed ne direkto, la ebla lokoj la trezoro povus esti estas ie en ringo ĉirkaŭ la soni aparato (vidu Figuron 13-1).
Figuro 13-1: La unua soni aparato montras ringo
de eblaj lokoj la trezoro povus loki.
Figuro 13-2: Kombinante la ringoj de la tri soni
mekanismoj montras nur unu ebla loko por la trezoro.
Specimeno Run
Soni!
Ĉu vi volas vidi la instrukciojn? (Jes / ne)
neniu
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ '~ ~` ~ ~ `` `~ ~' ~ ~ ~` ~ ~ ~ ` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ `` `` ~ ~` ~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~ `~ ~' ~ ~ `` ~ ~ ~ ~` ~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Vi havas 16 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
10 10
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ '~ ~` ~ ~ `` `~ ~' ~ ~ ~` ~ ~ ~ ` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ 5` ~ `` ~ `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 5 de la soni mekanismo.
Vi havas 15 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
15 6
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ 4 ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ 5` ~ `` ~ `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 4 de la soni mekanismo.
Vi havas 14 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
15 10
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ ho ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ ho` ~ `` Ho `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Vi trovis subakvigita trezorkesto!
Vi havas 13 soni aparatoj restis. 2 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
... Saltis super por mallongeco ....
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ ho ~ `~ ~' ~ '~ ~ ~ ~ ~ ~` ~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ho ~ ~ ~ ~ ~ ho` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ 3 ~ ~ `` 8 `~ `` ~` ~ `~` ~ ~ '~' ~ ~ `~` ~ `` ~ ~ ~ `~` ho ~ `` `` `` `` ~ `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ ho `~ ~ ho `` ~ ~ ``` ~ `~ ~` ~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ ho ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `Ho` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ho `` `0` ~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ ~ ho `` ~ ~ ~ ~ `~ '~' ~ ~ ~` ~ '~' ~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ ho` ~ `` Ho `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 4 de la soni mekanismo.
Ni ne plu havas soni aparatoj! Nun ni devas turni la ŝipon ĉirkaŭe kaj estras
por domo kun trezoron brustojn ankoraŭ tie! Ludo finita.
La ceteraj kestoj estis tie:
0, 4
Ĉu vi volas ludi denove? (Jes aŭ ne)
neniu
Ĉu vi volas vidi la instrukciojn? (Jes / ne)
neniu
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ '~ ~` ~ ~ `` `~ ~' ~ ~ ~` ~ ~ ~ ` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ `` `` ~ ~` ~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~ `~ ~' ~ ~ `` ~ ~ ~ ~` ~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Vi havas 16 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
10 10
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ '~ ~` ~ ~ `` `~ ~' ~ ~ ~` ~ ~ ~ ` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ 5` ~ `` ~ `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 5 de la soni mekanismo.
Vi havas 15 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
15 6
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ 4 ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ 5` ~ `` ~ `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 4 de la soni mekanismo.
Vi havas 14 soni aparatoj restis. 3 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
15 10
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ `~` ~ ~' ~ '~ ~ ~ ~ ~ ~ `~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ `~ ~ ~ ``` ~ `` ~ `~` ~ `~ ~ '~' ~ ~` ~ `~ `` ~ ~ ~` ~ `` `` `` ~ ~ `` `` `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ `` ~ ~ ~ ~ ~ `` `` `~` ~ ~ `~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ ho ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `~` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ~ `` `` `~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ '~ `` ~ ~ ~ ~ `~' ~ '~ ~ ~` ~' ~ '~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ ho` ~ `` Ho `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Vi trovis subakvigita trezorkesto!
Vi havas 13 soni aparatoj restis. 2 trezoro brustojn restanton.
Kie vi deziras forlasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo Quit)
... Saltis super por mallongeco ....
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 `~ ~ ~` ~ ~ ~ `~` ~ ~ '~ ~ ~ ~ ~ `~ `` ~ ~ ~ ~` ~ `~ ~ ~` ~ `` `` ~ ~ ~ `` `` ~ `~ `` `~` ~ ~ ~ ~ `` 0
1 ~ `~ ~ ~ ``` ~ ~ ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ``` ~ ho ~ `~ ~' ~ '~ ~ ~ ~ ~ ~` ~ `` `` `~` ~ ~ '~ ~ ~ ~ `1
2 `~ `` `` ~ ~ ~ ~` ~ `` ~ `~` ~ `` ~ `` `` `~ ~ ho ~ ~ ~ ~ ~ ho` ~ `~ ~ '~ `` ~ ~ ~ ~ ~ `` `~ ~ '~ ``` 2
3 `` ~ 3 ~ ~ `` 8 `~ `` ~` ~ `~` ~ ~ '~' ~ ~ `~` ~ `` ~ ~ ~ `~` ho ~ `` `` `` `` ~ `` ~ ~ ~ ~ ~ `` `` 3
4 `` ~ ~ `~ ~ ~ ~ `` `` ~ ~ `` `` ~` ~ '~' ~ ho `~ ~ ho `` ~ ~ ``` ~ `~ ~` ~ ~ '~' ~ `~ ~ '~ ~ ~ ~ ``` 4
5 ~ ~ `` `~ ~ ~` ~ `~ ~ ~ ``` ~ `` `` `~ ~ '~ ~` ~ ~ ~ ~ ~ `~ ~ ~ ``` ~ `~ ~ ~` ~ ~ `~ '~' ~ '~ ~ ~` 5
6 `` ~ ~ `` `` `~ ~ ~ ~` ~ ho ~ ~ ~ `` `~ ~ ~ ~` ~ ~ '~ ~ `~ ~ ``` ~ ~' ~ ~ ~ `~ ~ ~` `Ho` ~ ~ ~ `` ~ ~ ~ 6
7 `~ `` `` `` ``` ~ `` `~ `` `` ~ ~ ~` ~ ~ ~ ~ `~ ~ ~ `` `` ~ ~ ~ ``` ~ `~ ~ '~' `~ `` ~ ~ ``` ~ ~ 7
8 `~ `` `` ``` ~ ~ `~ ~ '~ ~ ~` ~ ~ `` ~ ~ ~ ~ `` `~ `` ~ ~ ~ ~ ``` ho `` `0` ~' ~ ~ `` `~` ~ ~ ~ ~ `8
9 ~ `` `~ ~ '~' ~ `` `` ~ ~ ~ ~ `` `` ``` ~ ~ ~ ho `` ~ ~ ~ ~ `~ '~' ~ ~ ~` ~ '~' ~ `~ ~ ~ ~ ~ `` ``` 9
10 `` `~` ~ `` `~ ho` ~ `` Ho `~ ~ '~ `` `` `` ~ ~ `` ~ ~ ~` ~ ~' ~ ~ `` ~ ~ ~ ~ `~ ~ ~ `~` ~ ~ `` `` ~ 10
11 `` `~ ``` ~ ~ ~ `~ ``` ~ ~ '~ ~ ~ `~ `` ``` ~ `~ ~' ~ '~ ~` ~ ~' ~ '~ ~ `~ ~ ~ `` `` `` `` ~ ~ `11
12 ~ ~ ~ `~` ~ ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ~` ~ `` `~ ~ ~ ``` ~ ~ '~ ~ `~ `` `` ~ ~` ~ 12
13 `~ ~ `` `` ~ ~ ~ `` ``` ~ ~ ~ `~ ``` ~ `~ ~ ~ ~ ~ ~ ~ ~ ~` ~ ~ ~ ~ ~ `` ~ ~ `` `` ` ~ `~` ~ `` ~ ~ ~ ~ 13
14 `~ ~ '~' ~ `` `` ``` ~ ~ '~' ~ `` `~ ~ '~ ~ ~ ~` ~ `` `~ `` `` ~ ~ `` ~ ~ ~ `` `` ~ ~ `` `` `` ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Trezoro detektita je distanco de 4 de la soni mekanismo.
Ni ne plu havas soni aparatoj! Nun ni devas turni la ŝipon ĉirkaŭe kaj estras
por domo kun trezoron brustojn ankoraŭ tie! Ludo finita.
La ceteraj kestoj estis tie:
0, 4
Ĉu vi volas ludi denove? (Jes aŭ ne)
neniu
Soni la Fonta Kodo
Sciante pri karteziaj koordinatoj, nombro linioj, negativaj nombroj, kaj absolutaj valoroj helpos nin kun niaj Soni ludo. Se vi ne opinias, ke vi komprenu tiujn konceptojn, reiru al la ĉapitro 12. Sube estas la fontkodon por la ludo. Tajpu ĝin en novan dosieron, tiam konservi la dosieron kiel sonar.py kaj ruli ĝin premante la F5 ŝlosilo. Vi ne bezonas kompreni la kodo por tajpi ĝin en aŭ ludi la ludon, la fonta kodo estos klarigita poste.Ankaŭ, vi povas elŝuti la fontkodon de la libro de afiŝinto ĉe la URL http://inventwithpython.com/chapter13 .
sonar.py
Tiu kodo estas elŝutebla el http://inventwithpython.com/sonar.py
Se vi ricevas erarojn post tajpi tiun kodon en, kompari ĝin al la libro kodo kun la linio malsamoj ilo en http://inventwithpython.com/diff aŭ retpoŝtu la aŭtoro en al@inventwithpython.com
Tiu kodo estas elŝutebla el http://inventwithpython.com/sonar.py
Se vi ricevas erarojn post tajpi tiun kodon en, kompari ĝin al la libro kodo kun la linio malsamoj ilo en http://inventwithpython.com/diff aŭ retpoŝtu la aŭtoro en al@inventwithpython.com
- # Soni
- importi hazarda
- importado sys
- def drawBoard (tabulo):
- # Eltiru la estraro datumstrukturo.
- hline = '' # komenca spaco por la nombroj laŭ la maldekstra flanko de la tabulo
- por i en gamo (1, 6):
- hline + = ('' * 9) + str (i)
- # Presi la numeroj trans la supron
- print (hline)
- print ('' + ('0123456789 '* 6))
- print ()
- # Presi ĉiun el la 15 vicoj
- por i en gamo (15):
- # Sola-ciferaj nombroj bezonas esti vatita kun ekstra spaco
- se i <10:
- extraSpace = ''
- alie:
- extraSpace =''
- print ('% s% s% s% s'% (extraSpace, i, getRow (tabulo, i), i))
- # Presi la numeroj tra la fundo
- print ()
- print ('' + ('0123456789 '* 6))
- print (hline)
- def getRow (tabulo, vico):
- # Reveno ĉenon de la tabulo datumstrukturo en certa vico.
- boardRow =''
- por i en gamo (60):
- boardRow + = tabulo [i] [vico]
- revenu boardRow
- def getNewBoard ():
- # Kreu novan 60x15 tabulo datumstrukturo.
- estraro = []
- por x en gamo (60): # la ĉefa listo estas listo de 60 lertaj
- board.append ([])
- por y en gamo (15): # ĉiu lerta en la ĉefa listo havas 15 simpla karaktero ŝnuroj
- # Uzas malsamajn karakterojn por la oceano por fari ĝin pli legebla.
- se random.randint (0, 1) == 0:
- estraro [x]. append ('~')
- alie:
- estraro [x]. append ('`')
- revenu tabulo
- def getRandomChests (numChests):
- # Krei liston de brusto datumstrukturoj (du-ero lertaj de x, y int koordinatoj)
- brustojn = []
- por i en gamo (numChests):
- chests.append ([random.randint (0, 59), random.randint (0, 14)])
- reveno brustojn
- def isValidMove (x, y):
- # Reveno True se la koordinatoj estas sur la tabulo, alie False.
- reveno x> = 0 kaj x <= 59 kaj y> = 0 kaj y <= 14
- def makeMove (tabulo, brustoj, x, y):
- # Ŝanĝi la estraro datumstrukturo kun soni mekanismo karaktero. Forigi trezoro brustojn
- # El la brustojn listo kiel ili estas trovitaj. Reveno Falsa se ĉi tiu estas nevalida movado.
- # Alie, redoni la kordoj de la rezulto de ĉi tiu movo.
- se ne isValidMove (x, y):
- revenu Falsaj
- smallestDistance = 100 # ajna brusto estos pli ol 100.
- por cx, cy en brustojn:
- se abs (cx - x)> abs (cy - y):
- distanco = abs (cx - x)
- alie:
- distanco = abs (cy - y)
- se distanco <smallestDistance: # Ni volas ke la plej proksimaj trezorkesto.
- smallestDistance = distanco
- se smallestDistance == 0:
- # Xy estas rekte sur trezorkesto!
- chests.remove ([x, y])
- revenu 'Vi trovis subakvigita trezorkesto!
- alie:
- se smallestDistance <10:
- estraro [x] [y] = str (smallestDistance)
- reveno 'Trezoro detektita je distanco de% s el la soni mekanismo.' % (SmallestDistance)
- alie:
- estraro [x] [y] = 'O'
- reveno 'Soni ne detektis nenion. Ĉiuj trezoro brustojn el gamo.
- def enterPlayerMove ():
- # Lasu la ludanto tipo en ŝia movado. Reveno de du ero listo de int xy koordinatoj.
- print ('Kie vi volas lasi la sekvanta soni artefakto? (0-59 0-14) (aŭ tipo quit)')
- dum Vera:
- movi = input ()
- se move.lower () == 'quit':
- print ('Dankon pro ludi!')
- sys.exit ()
- movi = move.split ()
- se len (move) == 2 kaj movado [0]. isdigit () kaj movado [1]. isdigit () kaj isValidMove (_int_ (movi [0]), int (movi [1])):
- reveno [int (movi [0]), int (movi [1])]
- print ('Tajpu numeron de 0 al 59, spaco, tiam nombro de 0 al 14.')
- def playAgain ():
- # Ĉi tiu funkcio redonas True se la ludanto volas ludi denove, alie False.
- presi ('Ĉu vi volas ludi denove? (jes aŭ ne)')
- revenu enigo (). malsupreniri (). startswith ('y')
- def showInstructions ():
- print ('' 'Instrukcioj:
- Vi estas la kapitano de la Simon, trezoron-ĉasado ŝipo. Viaj nunaj misio
- estas trovi la tri subakvigita trezoro brustojn kiuj kasxigxas en la parto de la
- oceano vi estas en kaj kolekti ilin.
- Ludi, eniri la koordinatojn de la punkto en la oceano vi deziras faligis
- soni mekanismo. La soni povas eltrovi kiel malproksime la plej proksima brusto estas al ĝi.
- Ekzemple, la d sube markas kie la aparato estis forigita, kaj la 2 de
- reprezenti distancoj de 2 for de la aparato. La 4 La reprezenti
- distancoj de 4 for de la aparato.
- 444444444
- 4 4
- 4 22222 4
- 4 2 2 4
- 4 2 d 2 4
- 4 2 2 4
- 4 22222 4
- 4 4
- 444444444
- Premu eniri por daŭrigi ...'' ')
- enigo ()
- print ('' 'Ekzemple, jen estas trezoro brusto (la c) lokita distanco de 2 for
- el la soni mekanismo (la d):
- 22222
- c 2
- 2 d 2
- 2 2
- 22222
- La punkto kie la aparato estis forigita estos markita kun 2.
- La trezoron brustojn ne movi. Soni aparatoj povas detekti trezoro
- brustojn ĝis distanco de 9. Se ĉiuj kestoj estas el teritorio, la punkto
- estos markita kun O
- Se mekanismo estas rekte falis sur trezoro brusto, vi trovis
- la situo de la brusto, kaj estos kolektitaj. La soni mekanismo volo
- resti tie.
- Kiam vi enspezi brusto, ĉiuj soni mekanismoj ĝisdatigos lokalizi la venonta
- plej proksima subakvigita trezorkesto.
- Premu eniri por daŭrigi ...'' ')
- enigo ()
- print ()
- print ('soni!')
- print ()
- presi ('Ĉu vi volas vidi la instrukciojn? (jes / ne)')
- se enigo (). malsupreniri (). startswith ('y'):
- showInstructions ()
- dum Vera:
- # Ludo instalinstrukciojn
- sonarDevices = 16
- theBoard = getNewBoard ()
- theChests = getRandomChests (3)
- drawBoard (theBoard)
- previousMoves = []
- dum sonarDevices> 0:
- # Komenco de turno:
- # Montri soni mekanismo / brusto stato
- se sonarDevices> 1: extraSsonar = 's'
- else: extraSsonar =''
- se len (theChests)> 1: extraSchest = 's'
- else: extraSchest =''
- print ("Vi havas% s soni aparato% s maldekstren.% s trezorkesto% s ceteraj. '% (sonarDevices, extraSsonar, len (theChests), extraSchest))
- x, y = enterPlayerMove ()
- previousMoves.append ([x, y]) # Ni devas spuri cxiujn movojn por ke soni aparatoj eblas ĝisdatigita.
- moveResult = makeMove (theBoard, theChests, x, y)
- se moveResult == Falsa:
- daŭrigi
- alie:
- se moveResult == 'Vi trovis subakvigita trezorkesto!':
- # Ĝisdatigi ĉiujn soni aparatoj nuntempe sur la mapo.
- por x, y en previousMoves:
- makeMove (theBoard, theChests, x, y)
- drawBoard (theBoard)
- print (moveResult)
- se len (theChests) == 0:
- print ('Vi trovis ĉiujn subakvigita trezoro brustojn! Congratulations kaj bona ludo!)
- rompi
- sonarDevices - = 1
- se sonarDevices == 0:
- print ("Ni \ 've elĉerpas de soni aparatoj! Nun ni devas turni la ŝipon ĉirkaŭ kaj kapo')
- print ('por domo kun trezoron brustojn ankoraŭ tie! Ludo finita.')
- print ('La ceteraj kestoj estis tie:')
- por x, y en theChests:
- print ('% s,% s'% (x, y))
- se ne playAgain ():
- sys.exit ()
Desegni la Programo
Soni estas speco de komplika, do ĝi povus esti pli bonaj por tajpi en la ludo kodo kaj ludi ĝin kelkajn fojojn unue kompreni kio okazas. Post vi ludis la ludon kelkaj tempoj, vi povas ia fari ideon de la sekvenco de okazaĵoj en ĉi tiu ludo.La Soni ludo uzas listoj de listoj kaj aliaj komplikaj variabloj. Tiuj komplika variabloj estas konataj kiel datumstrukturoj. Datumstrukturoj lasos nin stoki aranĝoj de valoroj en sola variablo por reprezenti ion (kiel la lokojn de la trezoro brustojn en Soni). Ni uzos datumstrukturoj por la lokoj de la trezoro brustoj kaj faligis soni mekanismoj. Unu ekzemplo de datumstrukturo estis la tabulo variablo en la Tic Tac Toe ĉapitro.
Ĝi estas ankaŭ utila por skribi el la aĵoj kiujn ni bezonas nian programon por fari, kaj supreniru kun iu funkcio nomoj kiuj manipuli tiujn agojn. Memoru nomi funkcioj post kio ili specife fari. Alie ni povus fini forgesante funkcio, aŭ tajpante en du malsamaj funkcioj, kiuj faras la samon.
Kion la kodo devas fari. | La funkcio kiu faros. |
---|---|
Presas la tabulo sur la ekrano bazita sur la tabulo datumstrukturo estas pasinta, inkludante la koordinatojn kune la supro, malsupro, kaj maldekstra kaj dekstra flankoj. | drawBoard () |
Krei novan tabulo datumstrukturo. | getNewBoard () |
Krei novan brustojn datumstrukturo kiun havas plurajn brustojn hazarde disĵetitaj tra la tabulo. | getRandomChests () |
Kontrolu ke la XY koordinatoj kiuj pasis al ĉi tiu funkcio estas situita sur la tabulo aŭ ne. | isValidMove () |
Lasu la ludanto tipo en la XY kunordigas de lia proksima movado kaj observados petante ĝis ili tajpu la koordinatojn ĝuste. | enterPlayerMove () |
Meti soni mekanismo sur la tabulo, kaj ĝisdatigi la estraro datumstrukturo tiam revenu ĉenon kiu priskribas kio okazis. | makeMove () |
Demandu la ludanto se ili volas ludi alia ludo de Soni. | playAgain () |
Presi instrukciojn por la ludo. | showInstructions () |
Kiel la Kodo Verkoj: Linioj 1 ĝis 38
- # Soni
- importi hazarda
- importado sys
Desegno La Ludo Estraro
- def drawBoard (tabulo):
La drawBoard () funkcio estas la unua funkcio ni difinos por nia programo. La soni ludo tabulo estas ASCII-arto oceano kun koordinatoj iranta laŭ la X-kaj Y-akso, kaj aspektas jene:
1 2 3 4 5
012345678901234567890123456789012345678901234567890123456789
0 ~ ~ ~ `~ `` ~ ~ ~ `` ~ ~ ~ ~ ~ ``` ~ '~' ~ '~ ~ `~ ~ ~` ~ ~' ~ `` `` `` ~ ~ `~ `` ~ `~ ~ ``` ~ '~' 0
1 `~` ~ `` `` ~ ~ ~ `` `~ ``` ~ `` `~ ``` ~ `~ ~ ~ ~ ~ ``` ~ ~ ~ `` `` `` ~ `~ ' `~ ~ ~ ~ ``` ~ ~ '1
2 `` `~ ~ ~ ~` ~ `~ ~ ``` ~ ~ ~ ~ `` `` `` ~ ~ `~` ~ ~ '~' ~ '~ `` `~ ~' ~ `` ~ ~ `~` ~ ~ ~ ~ ~ ~ `~ 2
3 ~ ~ ~ ~ `~ ~ ~ ~ `` ``` ~ `` ~ ~ `~` ~ ~ '~' ~ ~ ~ `` `` `` ~ `~ `` `` ``` ~ ~ ' ~ `~` ~ `` `` `~ 3
4 ~ `` `~ ~ ~ ~ ~` ~ ~ `` `` ~ ~ ~ ~ `` `~ ~ ~` ~ '~' ~ `` `` ~ `~ ~ '~' ~ ~ `` ~ ~ `~ `` ~` ~ `` ~ ~ 4
5 `~ ``` ~ `~` ~ ~ '~ ~ ~ `` `~ ~ ~ `` `` `` `` `` ~ ~ ~` ~ `~ ~ ~ ~` ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ``` ~ ~ `5
6 `` ~ ~ `~ ~ '~ `` ~ `` ``` ~ `` `` ~ ~ ~ `` `~ ~ ~ ~` ~ ~ `` `~ ~ ~ ~ ``` ~ `~ ~ `` ~ ~ ~ `` `~ ~ ~ 6
7 `` `` ~ ~ ~ ~ ~ ~ ~ `` `~` ~ `` `~ ~ ~ ~ ``` ~ `` ~ `~ ~ ~ ~ ~ ~ `` `` ``` ~ ~ ~ ` ~ ~ `~ ~ '~ ~` ~ ~ 7
8 ~ ~ `~` ~ ~ `` `~ `` ~ ~ `` ~ ~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ``` ~ `` `~ ~ ~ ``` ~ ~ ~ ~ ~ ~ `~` ~ ~ ~ ~ `8
9 `` `~ `` ~` ~ ~ ~ `~ ~ ``` ~ `` `` ~ ~ ~ ~ `` `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~ ~ ~` ~ `` ~ ~ ~ ~ ~ `` `9
10 `~ ~ ~ ~ ``` ~ `~ `` `` ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ `` `` ~ ~ ``` ~ ~ `` `` `` ` ~ `~ `` ~ `` ``` 10
11 ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ~ `` `` `` `` `` `` `` `` ~ ~ `` ``` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ ~` ~ ~ '~ 11
12 ~ ~ `~ ~ ~ ~ ``` ~ ~ ~ `` `` `~ ~ ~ ``` ~ `~ ~ `` `` `` ~` ~ ~ ~ `` `` `` `` `~ ~ `` ~ ~ ~ `~ ~ '~ 12
13 `~ `` `` `` `` ~ ~ ~` ~ ~ ~ `` `~ ~ ~ ~ ``` ~ ~ '~' ~ ~ ~ `~ `` `` ``` ~ ~ '~' `` `` ~ ~ `~ ~ ~ ~ 13
14 ~ ~ ~ ~ `` `` `~ `` ``` ~ ~ '~' ~ `` ~ ~ `~ `` ~` ~ ~ '~' ~ `` ~ `~ `` ~ ~ ~ `` `~ `` ``` ~ ~ ~ ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Ni disigas la desegno en la drawBoard () funkcio en kvar paŝoj.
Unue, ni kreas ĉenon variablo de la linio kun 1, 2, 3, 4, kaj 5
interspacigitaj evi larĝa breĉoj (por marki la koordinatojn por 10, 20,
30, 40, kaj 50). Due, ni uzas tiun ĉenon por montri la X-akso koordinatoj kune la supro de la ekrano. Trie, ni presi ĉiu vico de la oceano apud la Y-akso koordinatojn en ambaŭ flankoj de la ekrano. Kaj la kvara, ni presi la X-akso denove ĉe la malsupro.
Havante la koordinatojn en ĉiuj flankoj faciligas por la ludanto movi
siajn Finger kune la spacojn por vidi kie precize ili volas plani soni
mekanismo. 012345678901234567890123456789012345678901234567890123456789
0 ~ ~ ~ `~ `` ~ ~ ~ `` ~ ~ ~ ~ ~ ``` ~ '~' ~ '~ ~ `~ ~ ~` ~ ~' ~ `` `` `` ~ ~ `~ `` ~ `~ ~ ``` ~ '~' 0
1 `~` ~ `` `` ~ ~ ~ `` `~ ``` ~ `` `~ ``` ~ `~ ~ ~ ~ ~ ``` ~ ~ ~ `` `` `` ~ `~ ' `~ ~ ~ ~ ``` ~ ~ '1
2 `` `~ ~ ~ ~` ~ `~ ~ ``` ~ ~ ~ ~ `` `` `` ~ ~ `~` ~ ~ '~' ~ '~ `` `~ ~' ~ `` ~ ~ `~` ~ ~ ~ ~ ~ ~ `~ 2
3 ~ ~ ~ ~ `~ ~ ~ ~ `` ``` ~ `` ~ ~ `~` ~ ~ '~' ~ ~ ~ `` `` `` ~ `~ `` `` ``` ~ ~ ' ~ `~` ~ `` `` `~ 3
4 ~ `` `~ ~ ~ ~ ~` ~ ~ `` `` ~ ~ ~ ~ `` `~ ~ ~` ~ '~' ~ `` `` ~ `~ ~ '~' ~ ~ `` ~ ~ `~ `` ~` ~ `` ~ ~ 4
5 `~ ``` ~ `~` ~ ~ '~ ~ ~ `` `~ ~ ~ `` `` `` `` `` ~ ~ ~` ~ `~ ~ ~ ~` ~ ~ `` ~ ~ ~ ~ ~ ~ `~ ``` ~ ~ `5
6 `` ~ ~ `~ ~ '~ `` ~ `` ``` ~ `` `` ~ ~ ~ `` `~ ~ ~ ~` ~ ~ `` `~ ~ ~ ~ ``` ~ `~ ~ `` ~ ~ ~ `` `~ ~ ~ 6
7 `` `` ~ ~ ~ ~ ~ ~ ~ `` `~` ~ `` `~ ~ ~ ~ ``` ~ `` ~ `~ ~ ~ ~ ~ ~ `` `` ``` ~ ~ ~ ` ~ ~ `~ ~ '~ ~` ~ ~ 7
8 ~ ~ `~` ~ ~ `` `~ `` ~ ~ `` ~ ~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ``` ~ `` `~ ~ ~ ``` ~ ~ ~ ~ ~ ~ `~` ~ ~ ~ ~ `8
9 `` `~ `` ~` ~ ~ ~ `~ ~ ``` ~ `` `` ~ ~ ~ ~ `` `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~ ~ ~` ~ `` ~ ~ ~ ~ ~ `` `9
10 `~ ~ ~ ~ ``` ~ `~ `` `` ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ `` `` ~ ~ ``` ~ ~ `` `` `` ` ~ `~ `` ~ `` ``` 10
11 ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ~ `` `` `` `` `` `` `` `` ~ ~ `` ``` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ ~` ~ ~ '~ 11
12 ~ ~ `~ ~ ~ ~ ``` ~ ~ ~ `` `` `~ ~ ~ ``` ~ `~ ~ `` `` `` ~` ~ ~ ~ `` `` `` `` `~ ~ `` ~ ~ ~ `~ ~ '~ 12
13 `~ `` `` `` `` ~ ~ ~` ~ ~ ~ `` `~ ~ ~ ~ ``` ~ ~ '~' ~ ~ ~ `~ `` `` ``` ~ ~ '~' `` `` ~ ~ `~ ~ ~ ~ 13
14 ~ ~ ~ ~ `` `` `~ `` ``` ~ ~ '~' ~ `` ~ ~ `~ `` ~` ~ ~ '~' ~ `` ~ `~ `` ~ ~ ~ `` `~ `` ``` ~ ~ ~ ~ 14
012345678901234567890123456789012345678901234567890123456789
1 2 3 4 5
Desegno la X-koordinatojn Kune la Top
- # Eltiru la estraro datumstrukturo.
- hline = '' # komenca spaco por la nombroj laŭ la maldekstra flanko de la tabulo
- por i en gamo (1, 6):
- hline + = ('' * 9) + str (i)
Figuro 13-3: La Interspacigo ni uzas por presi la supro de la tabulo.
- # Presi la numeroj trans la supron
- print (hline)
- print ('' + ('0123456789 '* 6))
- print ()
Desegno la Linioj de Oceano
- # Presi ĉiun el la 15 vicoj
- por i en gamo (15):
- # Sola-ciferaj nombroj bezonas esti vatita kun ekstra spaco
- se i <10:
- extraSpace = ''
- alie:
- extraSpace =''
- print ('% s% s% s% s'% (extraSpace, i, getRow (tabulo, i), i))
Ni havas malgrandan problemon. Nombroj kun nur unu cifero (kiel 0, 1, 2, kaj tiel plu) nur prenu unu spaco kiam ni presas ilin, sed nombroj kun du ciferoj (kiel 10, 11, kaj 12) levu du spacoj. Tio signifas la vicoj eble ne laŭliniigi kaj devus aspekti jene:
8 ~ ~ `~` ~ ~ `` `~ `` ~ ~ `` ~ ~ ~ ~ ~ ``` ~ `~ ~ '~' ~ ``` ~ `` `~ ~ ~ ``` ~ ~ ~ ~ ~ ~ `~` ~ ~ ~ ~ `8
9 `` `~ `` ~` ~ ~ ~ `~ ~ ``` ~ `` `` ~ ~ ~ ~ `` `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~ ~ ~` ~ `` ~ ~ ~ ~ ~ `` `9
10 `~ ~ ~ ~ ``` ~ `~ `` `` ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ `` `` ~ ~ ``` ~ ~ `` `` `` ` ~ `~ `` ~ `` ``` 10
11 ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ~ `` `` `` `` `` `` `` `` ~ ~ `` ``` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ ~` ~ ~ '~ 11
La solvo estas facila. Ni nur aldonu spaco antaŭ ĉiuj la sola-ciferaj nombroj. La se - alia aserto ke komencas la linio 21 tion faras. Ni presas la variablo extraSpace kiam ni presi la vico, kaj se mi estas malpli ol 10 (kiu signifas ke ĝi havas nur unu cifero), ni atribui sola spaco ŝnuro al extraSpace. Alie, ni starigis extraSpace esti malplenan ĉenon. Tiel, ĉiuj niaj vicoj vicigas kiam ni presi ilin. 9 `` `~ `` ~` ~ ~ ~ `~ ~ ``` ~ `` `` ~ ~ ~ ~ `` `~ `` `` ``` ~ ~ '~ ~ `~ ~ ~ ~ ~` ~ `` ~ ~ ~ ~ ~ `` `9
10 `~ ~ ~ ~ ``` ~ `~ `` `` ~` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ `` `` ~ ~ ``` ~ ~ `` `` `` ` ~ `~ `` ~ `` ``` 10
11 ~ ~ `~` ~ ~ '~ `` ~ `~ ~ ~ `` `` `` `` `` `` `` `` ~ ~ `` ``` ~ `~ ~ ~ ``` ~ ~ ~ ~ `~ ~ ~` ~ ~ '~ 11
La getRow () funkcio estos redoni ĉeno reprezentas la vico numeron ni pasi ĝin. Liaj du parametroj estas la tabulo datumstrukturo stokita en la tabulo ŝanĝiĝema kaj vico nombro. Ni rigardu tiun funkcion poste.
Desegno la X-koordinatojn Kune la Fundo
- # Presi la numeroj tra la fundo
- print ()
- print ('' + ('0123456789 '* 6))
- print (hline)
Havigo de la ŝtato de Vico en la Oceano
- def getRow (tabulo, vico):
- # Reveno ĉenon de la tabulo datumstrukturo en certa vico.
- boardRow =''
- por i en gamo (60):
- boardRow + = tabulo [i] [vico]
- revenu boardRow
La por buklo iterates de entjeroj 0 al 59. Sur ĉiu ripeto la venonta signo en la tabulo datumstrukturo estas kopiita al la fino de boardRow. Por la momento la buklo estas farita, boardRow estas plene formita, do ni redoni ĝin.
Kiel la Kodo Verkoj: Linioj 40 al 62
Nun ke ni havas funkcion por presi donita tabulo datumstrukturo al la ĉeno, ni turnas nin al la aliaj funkcioj, ke ni bezonas. Je la komenco de la ludo, ni bezonos por krei novan ludon tabulo datumstrukturo (ia kiel malplenan Tic Tac Toe tabulo) kaj ankaŭ meti trezoro brustojn hazarde ĉirkaŭ la tabulo. Ni devas ankaŭ krei funkcio kiu povas diri se la koordinatojn eniris por la ludanto estas valida movado aŭ ne.Krei Nova Ludo Estraro
- def getNewBoard ():
- # Kreu novan 60x15 tabulo datumstrukturo.
- estraro = []
- por x en gamo (60): # la ĉefa listo estas listo de 60 lertaj
- board.append ([])
- por y en gamo (15): # ĉiu lerta en la ĉefa listo havas 15 simpla karaktero ŝnuroj
- # Uzas malsamajn karakterojn por la oceano por fari ĝin pli legebla.
- se random.randint (0, 1) == 0:
- estraro [x]. append ('~')
- alie:
- estraro [x]. append ('`')
Ĉi tio estas kiel decidi kiu karaktero de uzi por ĵetanta monero. Kaj ĉar la reveno valoro de random.randint () estos 0 proksimume duono de la tempo, la duono de la oceano gravuloj estos '~' kaj la alia duono estos '`'. Ĉi donos niajn oceano hazarda, choppy rigardon al ĝi.
Memoru ke la estraro variablo estas listo de 60 lertaj kiu havas 15 kordojn. Tio signifas atingi la kordo en koordinata 26, 12, ni devus havi aliron estraro [26] [12], kaj ne estraro [12] [26]. La X koordinato estas unua, tiam la Y koordinato.
Figuro 13-4 estas la portreto por pruvi la indeksoj de listo de lertaj nomata x. La ruĝa sagoj indikas indeksas de la interna lertaj mem. La bildo estas ankaŭ spegulita sur lia flanko por plifaciligi legi:
Figuro 13-4: La indicoj de listo de listoj.
- revenu tabulo
Kreante la Trezoro Hazarda brustojn
- def getRandomChests (numChests):
- # Krei liston de brusto datumstrukturoj (du-ero lertaj de x, y int koordinatoj)
- brustojn = []
- por i en gamo (numChests):
- chests.append ([random.randint (0, 59), random.randint (0, 14)])
- reveno brustojn
Ni pasos la numChests parametro diri la funkcio kiom trezoro brustojn ni volas ke ĝi generas. Ni starigis por buklo persisti tiu nombro de fojoj, kaj sur ĉiu ripeto ni aldonas liston de du hazardaj entjeroj. La X koordinato povas esti ie ajn de 0 al 59, kaj la Y koordinato povas esti ie ajn inter 0 kaj 14. La esprimo [random.randint (0, 59), random.randint (0, 14)] kiu estas pasita al la append metodo taksos al iu kiel [2, 2] aŭ [2, 4] aŭ [10, 0] . Ĉi datumstrukturo estas poste revenis.
Determini se Move estas Valida
- def isValidMove (x, y):
- # Reveno True se la koordinatoj estas sur la tabulo, alie False.
- reveno x> = 0 kaj x <= 59 kaj y> = 0 kaj y <= 14
Kiel la Kodo Verkoj: Linioj 64 al 91
Metante Movi en la Estraro
- def makeMove (tabulo, brustoj, x, y):
- # Ŝanĝi la estraro datumstrukturo kun soni mekanismo karaktero. Forigi trezoro brustojn
- # El la brustojn listo kiel ili estas trovitaj. Reveno Falsa se ĉi tiu estas nevalida movado.
- # Alie, redoni la kordoj de la rezulto de ĉi tiu movo.
- se ne isValidMove (x, y):
- revenu Falsaj
Ĉi tiu funkcio estos redoni la Falsa Bulea valoro se la X kaj Y koordinatoj se estis aprobita ne ekzistas sur la tabulo. Se isValidMove () False, tiam makeMove () revenos False.
Se la koordinatojn landon rekte sur la trezoron, makeMove () redonos la ĉenon 'Vi trovis subakvigita trezorkesto!'. Se la XY koordinatoj estas ene de distanco de 9 aŭ malpli de trezoro brusto, ni revenas al la ĉeno 'Trezoro detektita je distanco de% s el la soni mekanismo.' (Kie% s estas la distanco). Alie, makeMove () redonos la ĉenon 'Soni ne detektis nenion. Ĉiuj trezoro brustojn el gamo. '.
- smallestDistance = 100 # ajna brusto estos pli ol 100.
- por cx, cy en brustojn:
- se abs (cx - x)> abs (cy - y):
- distanco = abs (cx - x)
- alie:
- distanco = abs (cy - y)
- se distanco <smallestDistance: # Ni volas ke la plej proksimaj trezorkesto.
- smallestDistance = distanco
An algoritmo por trovi la Plej proksima Trezoro Brusto
Dum la x kaj y variabloj estas nur entjeroj (diri, 5 kaj 0), ili kune reprezentas la situo sur la tabulo (kiu estas kartezia koordinatsistemo) kie la ludanto divenis. La brustojn variablo povas havi valoron kiel [[5, 0], [0, 2], [4, 2]], tiun valoron reprezentas la lokojn de tri trezoro brustojn. Kvankam tiuj variabloj estas aro da nombroj, ni povas bildigi ĝin tiamaniere:Figuro 13-5: La lokojn sur la tabulo kiu [[5, 0], [0, 2], [4, 2]] reprezentas.
Nenhum comentário:
Postar um comentário