Páginas

domingo, 3 de março de 2013

skribu-kun-python-cxap08

fonto: http://inventwithpython.com/chapter8.html

Temoj Kovritaj en tiu ĉapitro:

  • Kiel ludi Pendumiton.
  • ASCII-Arto 
  • Desegni nian ludon por desegni fluon antaü programado.
En ĉi tiu ĉapitro, ni faros la dezajno por Pendumito ludo. Ĉi tiu ludo estas pli komplika ol nia antaŭa ludo, sed estas ankaŭ multe pli amuza. Ĉar la ludo estas antaŭita, ni devus unue zorge plani ĝin kreante diagramon nomata fluo abako (klarigis poste). En la sekvanta ĉapitro, ni reale skribi el la kodon por Pendumito.
En kazo vi neniam ludis Pendumito antaŭe, ni unue lernas la regulojn por Pendumito.

Kiel Play "Hangman"

En kazo vi ne scias, Pendumito estas ludo por du personoj ke tio kutime ludis uzante papero kaj krajono. Unu ludanto pensas de vorto kaj poste desegnas malplenan en la paĝo por ĉiu litero en la vorto. Tiam la dua ludanto provas diveni literoj kiuj povus esti en la vorto. Se ili diveni ĝuste, la unua ludanto skribas la leteron en la taŭgan malplenan. Se ili diveni malĝuste, la unua ludanto desegnas sola korpo parton de la pendanta viro. Se la dua ludanto povas diveni ĉiuj literoj en la vorto antaŭ la ekzekutisto estis tute desegnita, ili gajnas. Sed se ili ne povas diveni ĝin en la tempo, la viro estas trapikitaj kaj ili perdas la ludon!

Specimeno Run de "Hangman"

Jen ekzemplo de kio la ludanto povas vidi kiam ili kuras la Pendumito programo ni skribos poste. La teksto kiu la ludanto eniras en montrita en kuraĝa.
Pendumito

+ --- +
| |
|
|
|
|
=========
Missed literoj:
___
Divenu leteron.
oni

+ --- +
| |
|
|
|
|
=========
Missed literoj:
_ A _
Divenu leteron.
o

+ --- +
| |
Ho |
|
|
|
=========

Missed literoj: o
_ A _
Divenu leteron.
r

+ --- +
| |
Ho |
| |
|
|
=========

Missed literoj: aŭ
_ A _
Divenu leteron.
t

+ --- +
| |
Ho |
| |
|
|
=========
Missed literoj: aŭ
_ Ĉe
Divenu leteron.
oni
Vi jam divenis, ke letero. Elektu denove.
Divenu leteron.
c
Jes! La sekreta vorto estas "kato"! Vi gajnis!
Ĉu vi volas ludi denove? (Jes aŭ ne)
neniu

ASCII Arto

La grafikaĵoj por ekzekutisto estas ĉiuj faritaj el klavaro gravuloj presita sur la ekrano. Ĉi tiu tipo de grafiko nomita Arto ASCII (prononcata "demandi-ee"), ĉar klavaro karakteroj (kiel literoj, numeroj, kaj ankaŭ ĉiuj aliaj signoj sur la klavaro) estas nomitaj ASCII signojn. ASCII staras por American Standard Code for Information Interchange (ni lernos pli pri tio en la Cezaro Cipher ĉapitro). Jen kelkaj katojn farita en ASCII arto:
                                      __________________
                                _____ / Xx xxx \ _____
                              _ / Xxx xx xxx xxx \ __
                           __ / Xxx xxx xxx xx \ __
                          / Xxxxxxxxx xx xx xx xx xxx \
  ^ ___ ^ / Xx / \ xx xx \
  |) / / \ X xx \
  |.  .  ) | / \ | \ Xx x \
 (V) | | \ | \ ____ Z x \
  \ ____ | | | \ ____ / \ Z xxx |
   | \ | | \ Z |
   | | \ / \ \
   | \ / ____ / | |
   | | | __ | \ ____ | Xxx |
   | | | \ / | ______ ------- __ / X |
   | | | | -.  / | | | ___________ / |
   | | | ____ / | | O \ -------- \ _ / _ / ___ / xx /
  ((((() (______ / | Oo \ _____ / _ / ______ / xx /
                    \ \ ____ / Xx /
                     \ \ ______________ / X_ /
                       \ ___________ /
                            \ _______________________________ /

Desegni Programo kun Flowchart

Ĉi tiu ludo estas iom pli komplika ol tiuj ni vidis ĝis nun, do ni preni momenton por pensi pri kiel ĝi estas kunmetita. Unue ni krei fluo abako (kiel la fine de la Drako Reĝlando ĉapitro) por helpi nin bildigi kio tiu programo faros. Ĉi tiu ĉapitro iros kio fluas lertaj estas kaj kial ili estas utilaj. La venonta ĉapitro iros super la fontkodon de la Pendumito ludo. Fluo letero estas diagramo kiu montras serion de paŝoj kiel nombro de skatoloj konektita kun sagoj. Ĉiu skatolo reprezentas unu paŝon, kaj la sagoj montri kiel unu paŝo gvidas al aliaj paŝoj. Vi povas streki tra la fluo abako metante fingron sur la "Starto" skatolo de la fluo lerta kaj post la sagojn por aliaj skatoloj ĝis vi atingos la "Fino" skatolo. Vi povas nur movi de unu skatolo al alia en la direkto de la sago. Vi neniam povas iri malantaŭen (krom se tie estas dua sago iranta dorso, kiel en la "Ludanto jam divenis ĉi litero" suba skatolo.) Jen la kompleta fluo abako por la Pendumito ludo (Figuro 8-1).

Figuro 8-1: La kompleta fluo abako por kio okazas en la Pendumito ludo.
Kompreneble, ni ne devas fari fluo abako. Ni povus simple komencu skribi kodon. Sed ofte, kiam ni komencos programado, ni pensu pri aĵoj kiuj bezonas esti aldonita aŭ ŝanĝita, ke ni ne konsideris antaŭe. Ni povas fini devi ŝanĝi aŭ forviŝi multe da kodo, ke ni jam skribis, ke estus malŝparo de penado. Por eviti tion, ĝi estas ĉiam bona pensi zorge, kaj plano, ke la programo funkcios antaŭ ol ni komencos skribi ĝin.
La jenaj fluo abako estas provizita kiel ekzemplo de kio fluas lertaj aspekti kaj kiel fari ilin. Por la momento, kiam vi ĝuste uzi la fontkodon de tiu libro, vi ne bezonas por desegni fluo abako antaŭ skribi kodon. La programo estas jam skribita, do vi ne devas plani ion eksteren. Sed kiam vi faras vian propran ludoj, fluo abako povas esti tre utila.

Kreante la Flow Chart

Konsideru, via fluo lertaj ne ĉiam devas aspekti ĝuste kiel ĉi tiu. Tiel longe, kiel vi komprenas la fluo abako vi faris, estos helpema kiam vi komencos kodigo. Ni komencu per fluo abako ke nur havas "Starto" kaj "End" skatolo, kiel montrita en la figuro 8-2:

Figuro 8-2: Begin vian fluo abako kun Komenco kaj fino skatolo.
Nun ni pensas pri kio okazas kiam ni ludas Pendumito. Unue, oni ludanto (la komputilo en ĉi tiu kazo) pensas de sekreta vorto. Tiam la dua ludanto (la persono kurante la programo) estos diveni literoj. Ni aldonu skatoloj por tiuj eventoj, kiel montrita en la figuro 8-3. (La skatoloj kiuj estas novaj al ĉiu fluo abako havas strekitan konturon ĉirkaŭ ili.) La sagoj montri la ordo, ke la programo devus movi. Tio estas, unue la programon venu kun sekreta vorto, kaj post ke ĝi devus peti la ludanto diveni leteron.

Figuro 8-3: CXerpu la du unuaj paŝoj de Pendumito kiel skatoloj kun priskriboj.
Sed la ludo ne finas post la ludanto divenas unu litero. Ĝi bezonas por kontroli por vidi se tiu litero estas en la sekreta vorto aŭ ne.

Branĉantaj de Flowchart Skatolo

Estas du ebloj: la letero ĉu esti en la vorto aŭ ĝi ne estos. Tiu signifas ke ni bezonas aldoni du novajn skatoloj al nia flowchart. El la "Demandu ludanto diveni leteron" skatolo, ni povas nur kopii al la "Letero estas en sekretaj vorto" skatolo la "Letero ne estas en sekretaj vorto" skatolo. Tiu kreos branĉo (tio estas, escisión) en la fluo abako, kiel show en Figuro 8-4:

Figuro 8-4: Estas du malsamaj aĵoj kiuj povus okazi post
la ludanto divenas, do ili du sagoj tuj apartajn skatolojn.
Se la letero estas en la sekreta vorto, ni bezonas kontroli por vidi se la ludanto divenis ĉiuj literoj, kio signifus ke ili jam gajnis la ludon. Sed, se la litero estas ne en la sekreta vorto, alia korpo parto estas aldonita al la pendanta viro.
Ni povas aldoni skatoloj por tiuj kazoj ankaŭ. Ni ne bezonas sago de la "Letero estas en sekretaj vorto" skatolo por la "Ludanto kuris el partoj de la korpo kaj ĝi perdas" skatolo, ĉar ĝi estas neebla perdi tiom longe kiom vi nur diveni ĝentila literoj. Ankaŭ, ĝi estas neebla por gajni tiom longe kiom vi diveni nur malĝusta literoj, do ni ne bezonas por desegni ke sago ĉu. Nia fluo abako nun aspektas kiel Figuro 8-5.

Figuro 8-5: Post la branĉo, la paŝoj daŭrigi sur iliaj apartaj vojoj.

Ending aŭ restartigi la Game

Iam la ludanto gajnis aŭ perdis, ni petas ilin se ili volas ludi denove kun nova sekreta vorto. Se la ludanto ne volas ludi denove, la programo finos. Se la programo ne fino, ni pensu pri nova sekreta vorto, kiel montrita en la figuro 8-6:

Figuro 8-6: La ludo finas, se la ludanto ne volas ludi denove, aŭ la ludon superas al la komenco.

Diveni Denove

Tiu fluo abako povus aspekti kiel ĝi estas finita, sed estas io ni forgesante: la ludanto ne diveni leteron nur unufoje. Ili devas subteni diveni literoj super kaj super ĝis ili aŭ gajni aŭ perdi. Ni bezonas por desegni du novajn sagojn do la fluo abako montras tion, kiel montrita en la figuro 8-7.

Figuro 8-7: La ludo ne ĉiam finas post diveni. La nova sagojn (konturita) montras ke la ludanto povas diveni denove.
Ni forgesas ion alian, tiel. Kio se la ludanto divenas letero, ke ili jam divenis antaux? Anstataŭ havi ilin gajni aŭ perdi en ĉi tiu kazo, ni ilin permesas diveni alian leteron anstataŭ, kiel montrita en la figuro 8-8.

Figuro 8-8: Adding paŝo en kazo la ludanto divenas letero jam divenis.

Proponante rimarkojn al la Ludanto

Ni ankaŭ bezonas iel montri la ludanto kiel faras. Por fari tion, ni montros al ili la ekzekutisto tabulo, tiel kiel la sekretan vorton (kun spacoj por la literoj ili ne divenis ankoraŭ). Tiuj vidaj lasos ilin vidi kiel proksima estas gajni aŭ perdi la partion.
Ni bezonas ĝisdatigi ĉi tiun informon ĉiufoje la ludanto divenas leteron. Ni povas aldoni "Montru la estraro kaj spacoj por la ludanto." skatolo por la fluo abako inter la "Iru kun sekreta vorto" skatolo kaj la "Demandu ludanto diveni leteron" skatolo, kiel montrita en la figuro 8-9. Tiu skatolo estos memorigas al ni ke ni bezonas por montri la ludanto ĝisdatigita ekzekutisto estraro do ili povas vidi kion literojn ili divenis ĝuste kaj kio literoj estas ne en la sekreta vorto.

Figuro 8-9: Adding "Montru la estraro kaj spacoj por la ludanto." doni la ludanto sugestoj.
Tio aspektas bona! Tiu fluo abako tute mapas el ĉio, kio povas eble okazi en Pendumito, kaj en kiu ordo. Kompreneble ĉi fluo letero estas nur ekzemplo-vi ne vere bezonas uzi ĝin, ĉar vi ĵus uzis la fontkodo ke tio donis ĉi tie. Sed kiam vi desegni vian propran ludoj, fluo abako povas helpi vi memoras ĉion, kion vi bezonas programi.

Resumo: La Graveco de Planizado El la Game

Ĝi povas ŝajni kiel multe da laboro por skizi ekster fluo abako pri la programo unue. Post ĉiu, popolo volas ludi ludojn, ne rigardu flowcharts! Sed estas multe pli facila por fari ŝanĝojn kaj avizo problemoj de pensante pri kiel la programo funkcias antaŭ skribi la kodon por ĝi.
Se vi saltas en skribi la kodon unue, vi povas malkovri problemojn kiuj postulas, ke vi ŝanĝu la kodon, kiun vi jam skribis. Ĉiufoje kiam vi ŝanĝos vian kodon, vi prenas ŝancon kiun vi kreas erarojn ŝanĝante tro malmulte aŭ tro multe. Estas multe pli bone scias, kion vi volas konstrui antaux vi konstruos ĝin.

Nenhum comentário:

Postar um comentário