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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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