Pereiti prie turinio

Python programos


Rekomenduojami pranešimai

A dalis

 

Parsisiųsti veidelio piešimo programėlę ir panagrinėti (galima su programos sekimo priemone - ją parsisiuntus į tą pačią direktoriją).

 

1) pabandykite, kas keičiasi, jei galvos spindulį R padidinat ar pamažinat

visus parametrus (kintamuosius, pagal kuriuos paišo: nuotaiką, akiu_spalvą, plaukų kiekį, ...) sukelti į programos pradžią (šalia komentaro "PARAMETRAI").

 

2) "sutvarkyti" akis - kad jų dydis ir atstumas būtų proporcingi galvos spinduliui R.

 

3) akims nupiešti po baltą vyzdį (pusė akies dydžio). (O kaip padaryt, kad atrodytų žvairas?)

 

4) nupiešti nosį (kaip 3/4 apskritimo, o dydis - kaip 1/5 galvos spindulio R).

 

 

5) Sukurti burnos piešimo alternatyvas:

kai nuotaika == False: ": (" liūdna

kai nuotaika == None: ": |" apatiška

 

6.1) nupiešti ausis (kaip apskritimus - maždaug kaip pas "Čeburašką") - ausų spindulys - 1/4 galvos spindulio.

Ausies vietą patogu nustatyti nuo veido apačios (arba viršaus) judant dalį galvos apskritimo (pvz, 100 laipsnių).

 

Patarimas: ausų piešimą organizuoti iš kart nupiešus tik veido kontūrą (prieš plaukų ir kt piešimus) - tada testuojant reiks mažiau laukti, kol veiksmas iki jų nueis.

 

6.2) Sukurti ir naudoti parametrą ausu_aukstis , kuris reikštų kampą (dalį apskritimo), kiek reikia paeiti galvos kraštu nuo apačios, kad pradėt piešti ausį.

 

6.3) programos pradžioje (po reset()) sukurti funkciją ausys(..) - kuri pasirūpina visais ausų piešimo reikalais, startuodama iš galvos apačios. Ir ją naudoti.

 

def ausys(galvos_spindulys, ausu_aukstis):

# galvos spinduli reikia perduoti, nes bendru atveju gali buti piesiamos skirtingo dydzio galvos

# parametras ausu_aukstis "persikrausto" į funkciją, ir bus nurodomas ją iškviečiant, kitur jo saugoti nebereik.

....

.....

 

6.4) Papildyti ausų piešimą, kad būtų galima nurodyti papildomai ausų dydį:

 

def ausys(galvos_spindulys, ausu_aukstis, ausies_spindulys):

....

 

7.1) nupiešti barzdą - analogiškai, kaip plaukus,

ir barzdos plaukų tegu būna tiek pat, kiek galvos, tik jie perpus trumpesni šypsena.

 

7.2) plaukų piešimą "supakuoti" į funkciją "plaukai(..)" ir ją naudoti viršugalviui bei barzdai.

 

def plaukai(kiekis, ilgis):

.....

 

8) sukurti "nešukuotų" plaukų piešimo funkciją:

 

def susiveles( plauku_sarasas ):

....

 

pvz, susiveles( [10, 5, 15, 27, 5, 15] ) iš eilės nupieš šešis atitinkamo ilgio plaukus.

 

 

B dalis

 

1) Sukurti galvos piešimo funkciją:

 

def veidas( dydis, nuotaika, akiu_spalva ):

...

 

dydis -- veido spindulys, visur pakeisti vietoj R..

nuotaika nurodoma tekstu "šypsena", ":|" arba "liūdnas" # vietoj True None False

akiu_spalva -- tekstas, pvz, 'red', 'green', 'blue'

ausų ir plaukų/barzdos paišymą galima užkomentuoti - jie jau paruošti - atskirose funkcijose.

 

1.1) funkcija turi baigti piešimą toje pačioje vietoje, kur ir pradėjo

jei kitaip nesugalvosite/nepavyks, naudokite kažką pan:

 

startX, startY = position() # isidemime pradine vieta

startAngle = heading() # pradine kryptis, jei reikia

....

.... # piesimo eiga..

....

goto( startX, startY ) # nueina i pradine vieta

setheading( startAngle ) # pasisuka pradine kryptimi

 

2) turtle modulis leidžia reaguoti į pelės paspaudimus: pvz, mini žaidimas (pagauk rodyklę), bei pavyzdys iš python-turtle-demo rinkinio.

Padaryti, kad paspaustoje ekrano vietoje būtų nupaišomas veidelis

 

onscreenclick(veiksmas) # susieja funkciją veiksmas(x, y) su kairiu pelės mygtuku

Pavyzdyje yra funkcija jump(x, y) (41 eilutėj), kuri susieta su pelės paspaudimu (65 eilutėj).

 

Susiejama funkcija turi priimti 2 argumentus (atitinkančius x ir y koordinates)

Susiejant funkcijos pavadinimas nurodomas be skliaustelių.

 

Sukurti funkciją ufonautas(x, y), kuri nueitų į paspaudimo vietą ir ten iškviestų veido ir ausų piešimą.

Veido parametrai nustatomi pagal koordinates:

- spindulys = abs(x) # x reikšmė be ženklo - absoliuti reikšmė

- nuotaika : jeigu ir x ir y teigiami - "šypsena", jeigu x ir y neigiami - "liūdnas", kitais atvejais - ":|"

- akių spalva kokia norit... galite atsitiktinę: random.choice("red green blue".split() )

- ausų aukštis = abs(x/2)

- ausies spindulys = abs(y/4)

 

def ufonautas(x, y):

....

 

veidas( abs(x), .... ) # veidas( dydis, nuotaika, akiu_spalva )

....

ausys( abs(x), .... ) # ausys (galvos_spindulys, kokiam_aukstyje, ausies_spindulys)

 

3.1) nupiešti veidų seriją (vieną šalia kito): didelį (200) žaliaakį liūdną, mažą (50) raudonakį linksmą, vidutinio dydžio (100) oranžiniaakį apatišką.

 

3.2) nupiešti eilę veidų pagal akių spalvų sąrašą (visų dydžiai yra 100, o nuotaika "šypsena" ).

for spalva in ["orange", "green", "blue", "white", "red"]:

....

 

3.3) papildyti praitą punktą, kad nuotaiką nustatytų ir pateiktų funkcijai pagal akių spalvą:

Funkcijos aprašo čia keisti nevalia.

 

jeigu spalvos pavadinimo ilgis == 5: ":|"

jeigu spalvos pavadinimo ilgis > 5: "šypsena"

jeigu spalvos pavadinimo ilgis < 5: "liūdnas"

 

3.4) nupiešti eilę galvų pagal turimus sąrašus (naudojant vieną ciklą):

 

ak_spalvos = ["orange", "green", "blue", "white", "red"]

dydziai = [70, 200, 100, 15, 70]

nuotaikos = "liūdnas šypsena :| šypsena liūdnas".split(" ") # teksta suskaido ir gauna sarasa

 

Sąrašai yra vienodo ilgio, juos "sinchronizuoti" paprasta naudojant indeksavimą

pvz, veidas( dydziai[4], nuotaikos[4], ak_spalvos[4] ) pieš paskutinį veidelį.

 

4.1) Naujų metų proga, sukurti naują failą "ziema.py"

ir jame nupiešti besmegenį.

 

(jo galvai naudoti funkciją veidas() iš failo Pavardenis_Vardzius_veidelis.py.

tam reikia ziemos failo pradžioj parašyti:

from Pavardenis_Vardzius_veidelis import veidas

 

4.2) artėjančios sesijos proga sukurti funkciją "besmegenis(..)"

 

def besmegenis( akiu_spalva, aukstu_dydziai ):

....

 

aukstu_dydziai yra besmegenio rutulių spindulių sąrašas.

paskutinis -- galvos spindulys, o kiti piešiami tiesiog kaip apskritimai

akiu_spalva perduodama veido piešimui

visi besmegeniai yra geros nuotaikos šypsena

nupiešus besmegenį reikia sugrįžti į jo apačią (pradinį tašką)

 

5) naudojant funkciją "besmegenis", nupiešti besmegenių gvardiją (eilę) pagal sąrašus:

(besmegenio plotį geriausia nustatyti pagal apatinio rutulio/aukšto spindulį)

 

ak_spalvos = ["orange", "green", "blue", "magenta"]

besmegeniu_aukstai = [ # atrodo kaip matrica ;)

[100, 50, 25],

[120, 80, 100],

[50, 50, 50],

[200, 100], # nebutinai visi sarasai vienodo ilgio

 

# kaip pakeisti burnos piešimo spalvą,

# jei ufo y neigiamas, piešti žemyn galva...

 

Iš anksto dėkui. :)

 

P.S. Man reikia tik programų sprendimų.

Redagavo Gabriuxz
Nuoroda į pranešimą
Dalintis kituose puslapiuose
Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...