Садржај
1. Програмирање у пајтону - Увод у Pygame
15. Цртање уз помоћ петљи - обнављање
16. Завршни квиз

9.2. Домаћи задатак

Нацртај наранџасту главу робота квадратног облика, која има црне очи и уста правоугаоног облика.

Глава робота

Претходни програм приказује тражену главу робота. Желимо да глава буде центрирана унутар прозора. Такође, желимо да уста центрирамо хоризонтално унутар главе. Подсетимо се зато, за почетак, како можемо нацртати правоугаоник ако су му познате координате центра (овај пут помоћу релативних координата).

    Q-40: Ако желиш да нацрташ правоугаоник ширине a и висине b тако да му је центар у тачки cx и cy, коју наредбу можеш да употребиш за то?

  • pg.draw.rect(prozor, boja, (cx, cy, a, b))
  • Покушај поново
  • pg.draw.rect(prozor, boja, (cx, cy, 2*a, 2*b))
  • Покушај поново
  • pg.draw.rect(prozor, boja, (cx - a/2, cy - b/2, a, b))
  • Тачно
  • pg.draw.rect(prozor, boja, (cx - a, cy - b, 2*a, 2*b))
  • Покушај поново

Прикажимо математичке операције којима смо израчунали све потребне координате када смо цртеж задавали у апсолутним координатама. Прозор је димензија 300 пута 300 пиксела, а глава робота 200 пута 200 пиксела. То значи да на маргине одлази по 50 пиксела и стога се горње лево теме главе робота налази у тачки са координатама \((50, 50)\). Можемо приметити да су ширина два ока и ширина размака око очију (размаци од ивице главе до очију и размак између очију) једнаки. Дакле, укупно 5 ширина ока тј. размака испуњава ширину главе робота, одакле следи да су и ширина ока и ширина размака око очију једнаке петини ширине главе, тј. 40 пиксела. Претпоставићемо да је то уједно и висина ока (тј. да су очи квадратног облика), као и димензија размака од горње ивице главе робота до горње ивице очију, тако да ће се горње лево теме левог ока налазити у тачки са координатама \((90, 90)\) (величина размака је додата на обе координате горњег левог темена главе), а горње лево теме десног ока налазиће се у тачки са координатама \((170, 90)\) (на координату \(x\) горњег левог темена левог ока која је једнака 90 додата је ширина ока од 40 пиксела и ширина размака између очију која је такође 40 пиксела). Претпоставићемо да су уста исте висине као и око, али двоструко шира од њега, да је размак од дна уста до дна главе исти као размак између врха главе и врха очију и да су уста хоризонтално центрирана. Пошто је \(x\) координата вертикалне осе прозора једнака 150, координате горњег левог темена уста су \((110, 170)\) (прва је добијена тако што је од координате \(x\) средине прозора одузета половина ширине уста, а друга је добијена тако што је од координате \(y\) дна главе одузета величина размака и висина уста).

Програм можемо прилагодити тако да се све координате аутоматски рачунају на основу правила које смо применили у претходној рачуници, на основу сидра (cx, cy) постављеног у средиште прозора и на основу димензије прозора. Тиме ћемо постићи да цео цртеж робота може лако да мења своју величину и положај у прозору (величина ће зависити само од димензије главе, а положај само од координата центра главе тј. сидра које је за почетак постављено у центар прозора).

../_images/glava_robota.png

Допуни наредни програм, а затим мењај димензију главе и њен центар и посматрај како се мења слика на прозору.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+