{"id":235,"date":"2011-02-17T16:28:43","date_gmt":"2011-02-17T13:28:43","guid":{"rendered":"http:\/\/python.pingviinitiivul.ee\/?p=235"},"modified":"2011-02-17T18:01:46","modified_gmt":"2011-02-17T15:01:46","slug":"uheksateist","status":"publish","type":"post","link":"https:\/\/python.pingviinitiivul.ee\/?p=235","title":{"rendered":"\u00dcheksateist"},"content":{"rendered":"<p>T\u00e4na v\u00f5tame ette taas pooleli j\u00e4\u00e4nud galaktikaprogrammi viimise PyGame moodulile. V\u00f5tame aluseks <a href=\"http:\/\/python.pingviinitiivul.ee\/wp-content\/uploads\/2011\/02\/galaktika3.zip\">eelmise korra tulemuse<\/a>.<\/p>\n<p>Enne veel v\u00f5ime lihtsustada t\u00e4hekeste joonistamise meetodi:<\/p>\n<p><code>def taheke(x,  y,  s):<br \/>\nn=int((1+s)\/3)<br \/>\nreturn ((x-s, y),(x-n, y-n), (x, y-s), (x+n,  y-n),  (x+s, y),  (x+n, y+n),  (x, y+s),  (x-n, y+n))<br \/>\n<\/code><\/p>\n<p>Sedasi hoiame kokku arvuti &#8220;v\u00f5hma&#8221; puhtal arvutamisel &#8211; muidu peaks iga numbri n (v\u00e4iksem haarake) kasutamise juhul v\u00e4ljakirjutama valemi ja jooksma neli-viis operatsiooni, n\u00fc\u00fcd haaratakse t\u00e4hte joonistades see kaasa vaid \u00fcks kord ja numbrit tarvitades pole vaja lisaks arvutada.<\/p>\n<p>Et pilti p\u00f5nevamaks teha, siis saame k\u00fcllalt lihtsalt lisada v\u00f5imaluse kasutada mitut erinevat suurust t\u00e4hti. Siin toodud t\u00e4he joonistaja sobib selleks suurep\u00e4raselt, aga lisada tuleks galaktika moodulisse t\u00e4he objekti alla suuruse v\u00e4li, samasugune t\u00e4isarvuline muutuja kui v\u00e4rv. Lisaks luua v\u00f5i muuta t\u00e4he loomismeetodit (__init__) nii, et ka selles suurus m\u00e4\u00e4rataks ja suuruse parameetrit kasutada saaks. Viimaks peab t\u00e4htede kuvamisel, taheke(x, y, s) meetodit v\u00e4ljakutsudes praegune ettekirjutatud suurus asendada t\u00e4he enda omaga.<\/p>\n<p>Edasi lisame programmile nupud.<br \/>\nSelleks tuleks uue muutujana kaasata m\u00f5ni ristk\u00fclik.<\/p>\n<p>N\u00e4iteks:<br \/>\n<code>nupp1 = Rect(10, 560, 90, 30)<\/code><\/p>\n<p>Joonistada see koos muude asjadega.<br \/>\nViimaks tuleb lisada s\u00fcndmuste haldusesse kontroll hiire kohta, n\u00e4iteks umbes nii saaks j\u00e4tkata olemasolevat if lauset:<br \/>\n<code>elif event.type == MOUSEBUTTONUP:<br \/>\nif (nupp1.collidepoint(pygame.mouse.get_pos())) :<\/code><\/p>\n<p>Teksti lisamine:<br \/>\n<code>kiri = pygame.font.Font(None, 24)<br \/>\ntekst = kiri.render(\"niinii\", 1, (110, 210, 10))<br \/>\nekraan.blit(tekst, ristkylik)<\/code><\/p>\n<p>Nuppude tegemise moodul:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\n# nupud.py<\/p>\n<p>import pygame, sys<br \/>\nfrom pygame.locals import *<\/p>\n<p>class Nupp():<\/p>\n<p>&nbsp;&nbsp;&nbsp;    ristkylik = Rect(1, 1, 10, 10)<br \/>\n&nbsp;&nbsp;&nbsp;     tekst = u\"\"<br \/>\n&nbsp;&nbsp;&nbsp;     varv = (0,  0,  0)<\/p>\n<p>&nbsp;&nbsp;&nbsp;     def __init__(self, koordX,  koordY,  mootX,  mootY,  tekst,  (r,  g,  b)) :<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         self.ristkylik = Rect(koordX,  koordY, mootX,  mootY)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         self.tekst=tekst<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         self.varv=(r,  g,  b)<\/p>\n<p>&nbsp;&nbsp;&nbsp;     def pihtas(self):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         if self.ristkylik.collidepoint(pygame.mouse.get_pos()):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             return true<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         else:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             return false<\/code><\/p>\n<p> Faili koos seda kasutama muudetud programmiga <a href='http:\/\/python.pingviinitiivul.ee\/wp-content\/uploads\/2011\/02\/galaktika41.zip'>saab siit<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4na v\u00f5tame ette taas pooleli j\u00e4\u00e4nud galaktikaprogrammi viimise PyGame moodulile. V\u00f5tame aluseks eelmise korra tulemuse. Enne veel v\u00f5ime lihtsustada t\u00e4hekeste joonistamise meetodi: def taheke(x, y, s): n=int((1+s)\/3) return ((x-s, y),(x-n, y-n), (x, y-s), (x+n, y-n), (x+s, y), (x+n, y+n), (x, &hellip; <a href=\"https:\/\/python.pingviinitiivul.ee\/?p=235\">J\u00e4tka lugemist <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-235","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=235"}],"version-history":[{"count":15,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":253,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions\/253"}],"wp:attachment":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}