{"id":3491,"date":"2026-04-29T09:54:30","date_gmt":"2026-04-29T06:54:30","guid":{"rendered":"https:\/\/blog.edu.turku.fi\/allu\/?page_id=3491"},"modified":"2026-05-22T15:58:04","modified_gmt":"2026-05-22T12:58:04","slug":"pygame","status":"publish","type":"page","link":"https:\/\/blog.edu.turku.fi\/allu\/sivu-2\/pygame\/","title":{"rendered":"Pygame"},"content":{"rendered":"\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-black-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/blog.edu.turku.fi\/allu\/sivu-2\/\" style=\"background-color:#e6f3b7\">Palaa takaisin<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:30px\"><strong>Peliohjelmointi &#8211; Pygame<\/strong><\/h2>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"863\" height=\"680\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/1.png\" alt=\"\" class=\"wp-image-3879\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/1.png 863w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/1-300x236.png 300w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/1-768x605.png 768w\" sizes=\"auto, (max-width: 863px) 100vw, 863px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"676\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/2-1024x676.png\" alt=\"\" class=\"wp-image-3880\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/2-1024x676.png 1024w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/2-300x198.png 300w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/2-768x507.png 768w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/2.png 1030w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"680\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/3.png\" alt=\"\" class=\"wp-image-3881\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/3.png 856w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/3-300x238.png 300w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/3-768x610.png 768w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"680\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/4-1.png\" alt=\"\" class=\"wp-image-3885\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/4-1.png 944w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/4-1-300x216.png 300w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/figure>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-1&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-1-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-1\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Ohje: Kurssin suorittaminen<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-1\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-1-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/Pygame_yleisohje-5.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Tiedoston Pygame_yleisohje upotus.\"><\/object><a id=\"wp-block-file--media-af832395-f72d-4da6-a455-e5cd72c9d858\" href=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/Pygame_yleisohje-5.pdf\">Pygame_yleisohje<\/a><a href=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/Pygame_yleisohje-5.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-af832395-f72d-4da6-a455-e5cd72c9d858\">Lataa<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:25px\"><strong>1. Perusteht\u00e4v\u00e4t<\/strong><\/h3>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Asennukset ja Pygame tutuksi<\/strong><\/h4>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Ensimm\u00e4inen Pygame-sovellus<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 .a.<\/strong> Aja annettu koodi ja seura, mit\u00e4 tapahtuu. Kirjoita lyhyt vastaus siit\u00e4, mit\u00e4 n\u00e4it ja miksi niin k\u00e4vi.<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((400, 300))\npygame.display.set_caption(\"Terve Pygame\")<\/code><\/pre>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-2&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-2-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-2\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-2\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-2-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ikkuna v\u00e4l\u00e4ht\u00e4\u00e4 ja sulkeutuu heti, koska ohjelmassasi ei ole pelisilmukkaa eik\u00e4 tapahtumank\u00e4sittely\u00e4. Kun Python suorittaa viimeisen rivin, ohjelma p\u00e4\u00e4ttyy v\u00e4litt\u00f6m\u00e4sti, koska Pygame-ikkuna pysyy \u201chengiss\u00e4\u201d vain kun ohjelma on k\u00e4ynniss\u00e4.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading has-black-color has-text-color has-link-color wp-elements-8375eba6d0dc4e5b9b1c1c9d43234e64\" style=\"font-size:16px\"><strong>b.<\/strong> Lis\u00e4\u00e4 annettuun koodiin toimiva pelisilmukka, joka pit\u00e4\u00e4 pelin toiminnassa. Muista huomioida my\u00f6s peli-ikkunan sulkeminen. <\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-3&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-3-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-3\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-3\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-3-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((400, 300))\npygame.display.set_caption(\"Terve Pygame\")\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n\n# Pygame lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>c.<\/strong> Muokkaa koodia niin, ett\u00e4 peli-ikkunan koko muuttuu ja vaihda peli-ikkunan otsikoksi oma nimi ja luokka. Kokeile useita eri kokoja peli-ikunalle. Tee muutokset muuttujien avulla \u00e4l\u00e4k\u00e4 korvaa pohjakoodia. <\/h5>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-bcc65b28c661c233b7922b7d9659cacf\" style=\"color:#4ba432\"><strong>HUOM! T\u00e4st\u00e4 teht\u00e4v\u00e4st\u00e4 eteenp\u00e4in muista aina muuttaa peli-ikkunan nimeksi oma nimi ja luokka.<\/strong><\/p>\n\n\n\n<p>Esimerkkiarvot:<\/p>\n\n\n\n<p>Peli-ikkunan otsikko: Maija Meik\u00e4l\u00e4inen 26A<\/p>\n\n\n\n<p>Peli-ikkunan koko: leveys = 800 ja korkeus = 600<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-4&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-4-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-4\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-4\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-4-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n\n# Pygame lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>d. <\/strong>Muuta peli-ikkunan taustan v\u00e4ri punaiseksi. <\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-5&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-5-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-5\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-5\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-5-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\nrgb = (255, 0, 0)#punainen\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    screen.fill(rgb)#taustan v\u00e4rin m\u00e4\u00e4ritys\n    pygame.display.flip()\n\n# Pygame lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Piirt\u00e4minen ja koordinaatisto<\/strong><\/h4>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-6&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b0\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-6-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-6\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Apuohje Pygamen dokumentaation k\u00e4ytt\u00f6\u00f6n<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-6\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-6-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p class=\"has-link-color wp-elements-7ef19d08bcf5afe6acd46adba7e497db\"><strong>Mist\u00e4 tiet\u00e4\u00e4, mit\u00e4 komentoja on ja miten niit\u00e4 voi k\u00e4ytt\u00e4\u00e4?<\/strong><br>Pygamen dokumentaatiossa (<a href=\"https:\/\/www.pygame.org\/docs\/ref\/font.html\" target=\"_blank\" rel=\"noreferrer noopener\">pygame.font \u2014 pygame v2.6.0 documentation<\/a>) kerrotaan, mit\u00e4 funktioita on ja miten niit\u00e4 k\u00e4ytet\u00e4\u00e4n. L\u00f6yd\u00e4tk\u00f6 piirt\u00e4miseen liittyv\u00e4 osion? Valitse yksi malli. Osaatko sanoa, mit\u00e4 muuttujia funktio tarvitsee ja mit\u00e4 se palauttaa?<\/p>\n\n\n\n<p><strong>Vastaus:<\/strong><br>Pygamen dokumentaatiosta l\u00f6ytyy Most useful stuff -kohta, jonka vierst\u00e4 l\u00f6ytyy draw-osio. Esimerkiksi funktio pygame.draw.line() toimii siten, ett\u00e4 ensimm\u00e4inen parametri on surface, eli pinta, johon piirret\u00e4\u00e4n. Esimerkkikoodissa se on screen. Seuraava parametri on v\u00e4ri, joka annetaan RGB-muodossa. T\u00e4m\u00e4n j\u00e4lkeen m\u00e4\u00e4ritet\u00e4\u00e4n viivan alku- ja loppupiste koordinaatteina, muodossa [alku x, alku y] ja [loppu x, loppu y]. Koordinaatit voidaan antaa joko hakasuluissa [] tai sulkeissa (). Viimeinen parametri on valinnainen ja m\u00e4\u00e4ritt\u00e4\u00e4 viivan paksuuden. Jos sit\u00e4 ei anneta, oletusarvona k\u00e4ytet\u00e4\u00e4n paksuutta 1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"324\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-9.png\" alt=\"\" class=\"wp-image-3797\" style=\"aspect-ratio:1.700651073064866;width:501px;height:auto\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-9.png 551w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-9-300x176.png 300w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/figure>\n\n\n\n<p>Sivustolla alempana on esimerkki funktion k\u00e4yt\u00f6st\u00e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"86\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-10.png\" alt=\"\" class=\"wp-image-3798\" style=\"aspect-ratio:6.989460294384881;width:499px;height:auto\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-10.png 601w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-10-300x43.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure>\n\n\n\n<p>Kun hiiri vied\u00e4\u00e4n funktion linen p\u00e4\u00e4lle Visual Studio Codessa, ohjelma n\u00e4ytt\u00e4\u00e4, mit\u00e4 parametreja funktio tarvitsee.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"241\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-12.png\" alt=\"\" class=\"wp-image-3800\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-12.png 500w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-12-300x145.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>Teht\u00e4v\u00e4ss\u00e4 k\u00e4ytett\u00e4v\u00e4n v\u00e4rin, fontin ja kuvion saa valita vapaasti. <\/p>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-b8ad58323a89c8014b4fd14138fa64cd\"><strong>Teht\u00e4v\u00e4 .<\/strong><\/p>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-04a2c42ba203fee0f53bd8cd9427849d\"><strong>a.<\/strong> Piirr\u00e4 haluamasi kuvio hy\u00f6dynt\u00e4m\u00e4ll\u00e4 Pygamen dokumentaatiota (<a href=\"https:\/\/www.pygame.org\/docs\/ref\/font.html\" target=\"_blank\" rel=\"noreferrer noopener\">pygame.font \u2014 pygame v2.6.0 documentation<\/a>). <\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-7&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-7-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-7\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-7\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-7-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"581\" height=\"456\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image.png\" alt=\"\" class=\"wp-image-3728\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image.png 581w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-300x235.png 300w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-8&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-8-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-8\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-8\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-8-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\nrgb = (255, 0, 0)#punainen\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    screen.fill((0,0,0)) #taustan v\u00e4rin m\u00e4\u00e4ritys\n    pygame.draw.circle(screen, rgb, &#091;600,300], 20) #pallon piirt\u00e4minen\n    pygame.display.flip()\n\n# Pygame lopetus\/sulku\npygame.quit()\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-88bbd50a949f25d3a44eabbadda01933\"><strong>b.<\/strong> Piirr\u00e4 kuvio origoon. Mit\u00e4 huomaat?<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-9&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-9-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-9\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-9\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-9-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"447\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-1.png\" alt=\"\" class=\"wp-image-3731\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-1.png 570w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-1-300x235.png 300w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-10&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-10-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-10\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-10\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-10-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>pygame.draw.circle(screen, rgb , &#091;0,0], 20) #pallon piirt\u00e4minen<\/code><\/pre>\n\n\n\n<p>Origo on ruudun vasemassa yl\u00e4kulmassa.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-6da40a0d740802c9d595132c2aed4838\"><strong>c. <\/strong>Piirr\u00e4 kuvio keskelle.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-11&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-11-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-11\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-11\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-11-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"481\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-4.png\" alt=\"\" class=\"wp-image-3735\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-4.png 608w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-4-300x237.png 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-12&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-12-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-12\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-12\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-12-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>pygame.draw.circle(screen,(255, 0, 0), &#091;leveys\/2,korkeus\/2], 20) #pallon piirt\u00e4minen<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-e0ea499b1b3155666ceb881d91a11378\"><strong>d. <\/strong>Piirr\u00e4 kuvio reunaan. Ota huomioon kuvion oma leveys ja pituus.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-13&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-13-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-13\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-13\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-13-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"475\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-3.png\" alt=\"\" class=\"wp-image-3734\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-3.png 606w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-3-300x235.png 300w\" sizes=\"auto, (max-width: 606px) 100vw, 606px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-14&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-14-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-14\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-14\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-14-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>pygame.draw.circle(screen,rgb, &#091;leveys-20,korkeus-20], 20) #pallon piirt\u00e4minen<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-daccc4b2b2fee412355eb319fa36e63a\"><strong>e.<\/strong> Onko mahdollista piirt\u00e4\u00e4 kuvio ruudun ulkopuolelle? Kokeile piirt\u00e4\u00e4 kuvio peli-ikkunan ulkopuolelle.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-15&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-15-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-15\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-15\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-15-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"442\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-5.png\" alt=\"\" class=\"wp-image-3736\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-5.png 561w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-5-300x236.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-16&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-16-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-16\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-16\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-16-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>pygame.draw.circle(screen,(255, 0, 0), &#091;leveys+10,korkeus-20],20) #pallon piirt\u00e4minen<\/code><\/pre>\n\n\n\n<p>On siis mahdollista.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-dd3214df2c6dff3a6a2277275b33a9bb\"><strong>f.<\/strong> Piirr\u00e4 jollekin korkeudelle yksi rivi kuviota. Katso apua rakenteelle linkist\u00e4 <a href=\"https:\/\/blog.edu.turku.fi\/allu\/sivu-1\/ohjelmoinnin_aiheet\/toisto-tasot\/\" target=\"_blank\" rel=\"noreferrer noopener\">Toisto \u2013 ALLU \u2013 Algoritmeja ja lukuteoriaa oppimassa<\/a>. Tallenna muuttujiin tarvittavia tietoja, kuten s\u00e4de, v\u00e4li ja haluttu korkeus. Lis\u00e4\u00e4 pelisilmukan loppuun <code>pygame.display.flip()<\/code><\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-17&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-17-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-17\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-17\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-17-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"408\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-6.png\" alt=\"\" class=\"wp-image-3737\" style=\"aspect-ratio:1.2696181685879515;width:517px;height:auto\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-6.png 518w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-6-300x236.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-18&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-18-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-18\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-18\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-18-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\nrgb = (255, 0, 0)#punainen\n\ns\u00e4de = 20 # pallon s\u00e4de\nv\u00e4li = 2 * s\u00e4de  # pallojen v\u00e4li\ny = korkeus \/ 2 # haluttu korkeus\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    screen.fill((0,0,0)) #taustan v\u00e4rin m\u00e4\u00e4ritys\n    \n    for x in range(s\u00e4de, leveys, v\u00e4li):\n        pygame.draw.circle(screen, rgb, &#091;x, y], s\u00e4de) #pallon piirt\u00e4minen\n    pygame.display.flip()\n\n# Pygame lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-83a644a1b02c029210b99f5533cae981\"><strong>g.<\/strong> T\u00e4yt\u00e4 peli-ikkuna kokonaisilla kuviolla. Katso apua rakenteelle linkist\u00e4 <a href=\"https:\/\/blog.edu.turku.fi\/allu\/sivu-1\/ohjelmoinnin_aiheet\/toisto-tasot\/toisto-vaikeat\/\" target=\"_blank\" rel=\"noreferrer noopener\">Toisto vaikeat \u2013 ALLU \u2013 Algoritmeja ja lukuteoriaa oppimassa<\/a><\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-19&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-19-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-19\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-19\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-19-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"739\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-8.png\" alt=\"\" class=\"wp-image-3739\" style=\"aspect-ratio:1.2719997907895082;width:514px;height:auto\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-8.png 940w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-8-300x236.png 300w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/image-8-768x604.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-20&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-20-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-20\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-20\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-20-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>#kutsutaan tarvittavat kirjastot\nimport pygame\n\n# Alustetaan Pygame\npygame.init()\n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\nrgb = (255, 0, 0)#punainen\n\ns\u00e4de = 20 # pallon s\u00e4de\nv\u00e4li = 2 * s\u00e4de  # pallojen v\u00e4li\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    screen.fill((0,0,0)) #taustan v\u00e4rin m\u00e4\u00e4ritys\n    \n    for x in range(s\u00e4de, leveys, v\u00e4li):\n        for y in range(s\u00e4de, korkeus, v\u00e4li):\n            pygame.draw.circle(screen, rgb, &#091;x, y], s\u00e4de) #pallon piirt\u00e4minen\n    pygame.display.flip()\n\n# Pygame lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-aa642a08eaf96df14d969c2766d7302e\"><strong>h.<\/strong> Aloita tilanteesta ennen a-kohtaa eli tyhj\u00e4st\u00e4 mustasta ruudusta ja rakenna ohjelma seuraavien ohjeiden mukaisesti. Varmista, ett\u00e4 kuva on samassa kansiossa kuin Python-tiedosto. Muussa tapauksessa lis\u00e4\u00e4 kuvan tiedostopolku. Apua saa alussa olevista ohjeista ja ongelmatilanteissa voi hy\u00f6dynt\u00e4\u00e4 teko\u00e4ly\u00e4. Lataa kuva alla olevasta linkist\u00e4. Ladataessa kuvan nimeksi tulee kaarme-1.png. Vaihda nimeksi kaarme.png.<\/p>\n\n\n\n<div class=\"wp-block-file has-white-background-color has-background has-link-color wp-elements-4adbc76eeb5d8810ddd0100da95f7e56\"><a id=\"wp-block-file--media-a4c6f8c0-8f6a-4dd8-b2b5-9d8527caf09b\" href=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/kaarme-1.png\">kaarme<\/a><a href=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/kaarme-1.png\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-a4c6f8c0-8f6a-4dd8-b2b5-9d8527caf09b\">Lataa<\/a><\/div>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Lis\u00e4\u00e4 muuttujiin <code>kuva = pygame.image.load(\"kaarme.png\") # kuvan lataaminen<\/code><\/li>\n\n\n\n<li>Lis\u00e4\u00e4 pelisilmukkaan toiminto <code>screen.blit(kuva, [x-koordinaatti, y-koordinaatti])<\/code>. Lis\u00e4\u00e4 haluamasi koordinaatit.<\/li>\n\n\n\n<li>Kun kuva toimii, lis\u00e4t\u00e4\u00e4n tekstit. Tuo fontit alussa <code>pygame.font.init()<\/code>-toiminnolla.<\/li>\n\n\n\n<li>Lis\u00e4\u00e4 muuttujiin <code>fontti = pygame.font.SysFont('Arial', 40) # fontin luonti<\/code><\/li>\n\n\n\n<li>Kun fontti on ladattu, lis\u00e4\u00e4 <code>teksti = fontti.render(\"Jokin teksti t\u00e4h\u00e4n\", True, rgb) # tekstin muodostus<\/code><\/li>\n\n\n\n<li>Kutsu teksti\u00e4 samalla tavalla pelisilmukassa kuin kuvaa.<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-21&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-21-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-21\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Kuva<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-21\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-21-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"810\" src=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/EED6F55D-DC91-4414-A5BB-EAA8D823677F.png\" alt=\"\" class=\"wp-image-3788\" style=\"aspect-ratio:1.2639675692531573;width:560px;height:auto\" srcset=\"https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/EED6F55D-DC91-4414-A5BB-EAA8D823677F.png 1024w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/EED6F55D-DC91-4414-A5BB-EAA8D823677F-300x237.png 300w, https:\/\/blog.edu.turku.fi\/allu\/files\/2026\/05\/EED6F55D-DC91-4414-A5BB-EAA8D823677F-768x608.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-22&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-22-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-22\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-22\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-22-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame\n\n# Alustetaan Pygame\npygame.init()\npygame.font.init() \n\n#muuttujat\nleveys = 800\nkorkeus = 600\nruudun_kuvaus = \"Testi-ikkuna\"\nrgb = (255, 0, 0)# punainen\n\nkuva = pygame.image.load(\"kaarme.png\")# kuvan lataaminen \nfontti = pygame.font.SysFont('Arial', 40) # fontin luonti\nteksti = fontti.render(\"Lis\u00e4\u00e4 t\u00e4h\u00e4n jokin teksti\", True, rgb) # tekstin muodostus\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(ruudun_kuvaus)\n\n\n# Pelisilmukan m\u00e4\u00e4ritys\nrunning = True\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    screen.fill((0,0,0)) #taustan v\u00e4rin m\u00e4\u00e4ritys\n\n    # Piirret\u00e4\u00e4n kuva ja teksti\n    screen.blit(kuva, &#091;100, 100])\n    screen.blit(teksti, &#091;300, 300])\n    pygame.display.flip()\n\n# Pygame lopetus\/sulku\npygame.quit()\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Liike ja aika<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 . <\/strong>T\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4 laitetaan neli\u00f6 liikkumaan yhteen suuntaan.<\/h5>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-9942ff5e3c66540d9d4683ff3ff11940\">a) Aloitetaan piirt\u00e4m\u00e4ll\u00e4 n\u00e4yt\u00f6lle keltainen neli\u00f6 kohtaan 20, 20. Neli\u00f6n sivun pituus on 50.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-23&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-23-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-23\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-23\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-23-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-214e06c5a00d6b2ccd41f47fa3fdf9b4\">b) Laitetaan nyt neli\u00f6 liukumaan kohti n\u00e4yt\u00f6n oikeaa reunaa.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-24&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-24-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-24\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-24\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-24-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\nneli\u00f6n_nopeus = 0.5\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    neli\u00f6.x += neli\u00f6n_nopeus\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-370a9a1fbe87e268191955ce6a5689f2\">c) Edellisess\u00e4 kohdassa neli\u00f6 j\u00e4tti &#8221;j\u00e4ljen&#8221;. T\u00e4m\u00e4 pit\u00e4isi korjata. Mieti, mit\u00e4 joka kierroksella tapahtuu ja mit\u00e4 ei tapahdu.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-25&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-25-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-25\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-25\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-25-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\nneli\u00f6n_nopeus = 0.5\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    neli\u00f6.x += neli\u00f6n_nopeus\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-99fcb00e5e05a7ee76d964510f4a25e8\">d) Nyt neli\u00f6st\u00e4 ei j\u00e4\u00e4 j\u00e4lke\u00e4, mutta se menee melko nopeasti pois n\u00e4kyvist\u00e4. Yrit\u00e4 s\u00e4\u00e4t\u00e4\u00e4 neli\u00f6n nopeutta. Mit\u00e4 huomaat?<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-26&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-26-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-26\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-26\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-26-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\nneli\u00f6n_nopeus = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    neli\u00f6.x += neli\u00f6n_nopeus\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n<\/code><\/pre>\n\n\n\n<p>Huomataan, ettei nopeus juuri muutu. Neli\u00f6 h\u00e4vi\u00e4\u00e4 edelleen melko nopeasti.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-e66c7fa4b24df7e65ee558cf6019ed1f\">e) Edellisess\u00e4 kohdassa huomattiin, ettei nopeusmuuttujan s\u00e4\u00e4t\u00e4minen juuri vaikuttanut nopeuteen. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 kuvataajuutta ei ole m\u00e4\u00e4ritetty, eli ohjelma suoritetaan jotakuinkin niin nopeasti kuin kone pystyy sen suorittamaan. Jos lukitsemme kuvataajuuden (eli p\u00e4ivitystaajuuden) esim. 60:een, voimme oikeasti s\u00e4\u00e4t\u00e4\u00e4 nopeutta.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-27&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-27-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-27\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vinkki<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-27\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-27-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>T\u00e4t\u00e4 varten tarvitaan kelloa, eli m\u00e4\u00e4rit\u00e4 pygame.time.Clock() Katso dokumentaatiosta apua.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-28&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-28-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-28\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-28\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-28-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\n# M\u00e4\u00e4ritet\u00e4\u00e4n kello\nkello = pygame.time.Clock()\n\nneli\u00f6n_nopeus = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    neli\u00f6.x += neli\u00f6n_nopeus\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n    kello.tick(60)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 . <\/strong>Edellisess\u00e4 teht\u00e4v\u00e4ss\u00e4 saimme neli\u00f6n liikkumaan kohtuullista vauhtia, mutta se karkaa n\u00e4yt\u00f6n ulkopuolelle. T\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4 pys\u00e4ytet\u00e4\u00e4n neli\u00f6, kun se kohtaa n\u00e4yt\u00f6n reunan. Rakenna ratkaisusi edellisen teht\u00e4v\u00e4n ratkaisun p\u00e4\u00e4lle.<\/h5>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-425ade812b5122dd5bca456897a6e52e\">a) Pys\u00e4yt\u00e4 neli\u00f6n liike sen kohdatessa n\u00e4yt\u00f6n reunan.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-29&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-29-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-29\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-29\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-29-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\n# M\u00e4\u00e4ritet\u00e4\u00e4n kello\nkello = pygame.time.Clock()\n\nneli\u00f6n_nopeus = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    if neli\u00f6.right &lt;= leveys:\n        neli\u00f6.x += neli\u00f6n_nopeus\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n    kello.tick(60)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-27c017261f9207ba8afbe54bdc682345\">b) Edellisess\u00e4 kohdassa saimme neli\u00f6n pys\u00e4htym\u00e4\u00e4n reunaan. T\u00e4ss\u00e4 kohdassa on tarkoitus saada se k\u00e4\u00e4ntym\u00e4\u00e4n takaisin. Kohdatessa n\u00e4yt\u00f6n reuna, k\u00e4\u00e4nn\u00e4 neli\u00f6n liike p\u00e4invastaiseen suuntaan.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-30&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-30-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-30\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-30\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-30-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\n# M\u00e4\u00e4ritet\u00e4\u00e4n kello\nkello = pygame.time.Clock()\n\nneli\u00f6n_nopeus = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    if neli\u00f6.right &lt;= leveys:\n        neli\u00f6.x += neli\u00f6n_nopeus\n    if neli\u00f6.right &gt;= leveys:\n        neli\u00f6n_nopeus *= -1\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n    kello.tick(60)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-425a5e7e93258d0ba266584d78c98f5b\">c) Edellisess\u00e4 kohdassa neli\u00f6 tuli takaisin, mutta se jatkoi matkaansa j\u00e4lleen n\u00e4yt\u00f6n ulkopuolelle toiseen suuntaan. T\u00e4ss\u00e4 kohdassa neli\u00f6 pit\u00e4isi saada pysym\u00e4\u00e4n n\u00e4yt\u00f6n sis\u00e4puolella.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-31&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-31-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-31\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-31\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-31-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\n# M\u00e4\u00e4ritet\u00e4\u00e4n kello\nkello = pygame.time.Clock()\n\nneli\u00f6n_nopeus = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    if neli\u00f6.right &lt;= leveys:\n        neli\u00f6.x += neli\u00f6n_nopeus\n    if neli\u00f6.right &gt;= leveys  or neli\u00f6.left &lt;= 0:\n        neli\u00f6n_nopeus *= -1\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n    kello.tick(60)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-861b7b096853d60106f95d168e9cb455\">d) Nyt neli\u00f6 pysyy n\u00e4yt\u00f6n sis\u00e4puolella. Neli\u00f6 voisi liikkua my\u00f6s korkeussuunnassa. Lis\u00e4\u00e4 neli\u00f6n liike my\u00f6s yl\u00f6s- ja alasp\u00e4in ja est\u00e4 neli\u00f6t\u00e4 karkaamasta j\u00e4lleen.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-32&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-32-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-32\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-32\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-32-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\n\n# Alustetaan Pygame\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\n# Peli-ikkunan m\u00e4\u00e4ritys\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"Neli\u00f6 liukuu\")\n\n# M\u00e4\u00e4ritet\u00e4\u00e4n kello\nkello = pygame.time.Clock()\n\nneli\u00f6n_nopeus_vaaka = 1\nneli\u00f6n_nopeus_pysty = 1\n\nneli\u00f6 = pygame.Rect(20, 20, 50, 50)\n\n# Pelisilmukan m\u00e4\u00e4ritys\nk\u00e4ynniss\u00e4 = True\nwhile k\u00e4ynniss\u00e4:\n    n\u00e4ytt\u00f6.fill((0, 0, 0,))\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n\n    neli\u00f6.x += neli\u00f6n_nopeus_vaaka\n    neli\u00f6.y += neli\u00f6n_nopeus_pysty\n    if neli\u00f6.right &gt;= leveys or neli\u00f6.left &lt;= 0:\n        neli\u00f6n_nopeus_vaaka *= -1\n    if neli\u00f6.top &lt;= 0 or neli\u00f6.bottom &gt;= korkeus:\n        neli\u00f6n_nopeus_pysty *= -1\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f6)\n    pygame.display.flip()\n    kello.tick(60)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 . <\/strong>Pygamessa on useita tapoja n\u00e4yt\u00f6n p\u00e4ivitt\u00e4miseen. N\u00e4ist\u00e4 yleisin on pygame.display.flip(), joka p\u00e4ivitt\u00e4\u00e4 koko n\u00e4yt\u00f6n (ja sijoitetaan useimmiten pelisilmukan loppuun, ellei koko n\u00e4ytt\u00f6\u00e4 tarvitse p\u00e4ivitt\u00e4\u00e4 silmukan aikana). Toinen tapa on pygame.display.update(), jolla voi vastaavasti p\u00e4ivitt\u00e4\u00e4 koko n\u00e4yt\u00f6n, eli se toimii t\u00e4ss\u00e4 tapauksessa t\u00e4ysin identtisesti kuin flip(). update() -funktiolla voi kuitenkin p\u00e4ivitt\u00e4\u00e4 my\u00f6s vain osia n\u00e4yt\u00f6ll\u00e4 olevista Pygame-elementeist\u00e4 antamalla n\u00e4m\u00e4 parametriksi funktiolle.<\/h5>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-ad65454ba27f169066e5a8a486df17b3\">P\u00e4ivitt\u00e4v\u00e4tk\u00f6 seuraavat pelisilmukat koko n\u00e4yt\u00f6n? Seuraava koodin alkuosa on sama kaikissa kohdissa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame, sys\n\npygame.init()\n\nleveys = 800\nkorkeus = 600\n\nn\u00e4ytt\u00f6 = pygame.display.set_mode((leveys, korkeus))\npygame.display.set_caption(\"N\u00e4yt\u00f6n p\u00e4ivitys\")\n\nk\u00e4ynniss\u00e4 = True\nneli\u00f6 = pygame.Rect(0, 0, 50, 50)<\/code><\/pre>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-82c5e1ff72e79c574fe25e2b3cd72b55\">1.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while k\u00e4ynniss\u00e4:\n    \n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 0, 0), neli\u00f6)\n\n    pygame.display.flip()<\/code><\/pre>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-f90091bab3594b397ab3cf75644703df\">2.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while k\u00e4ynniss\u00e4:\n    \n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 0, 0), neli\u00f6)\n\n    pygame.display.update()<\/code><\/pre>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-f8bb8ade3a909a884098f195f02b12d6\">3.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while k\u00e4ynniss\u00e4:\n    \n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 0, 0), neli\u00f6)\n\n    pygame.display.update(neli\u00f6)<\/code><\/pre>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-4dd3ee125245b3d8527c006ab509c7ad\">4. Huomaa, ett\u00e4 pelk\u00e4st\u00e4\u00e4n pelisilmukka ei ole muuttunut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>neli\u00f62 = pygame.Rect(10, 10, 20, 20)\nluku = 0\nwhile k\u00e4ynniss\u00e4:\n    luku += 1\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            pygame.quit()\n            sys.exit()\n    if luku % 2 == 1:\n        neli\u00f62.x = neli\u00f62.x+60\n    else:\n        neli\u00f62.x = neli\u00f62.x-60\n\n    \n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 0, 0), neli\u00f6)\n    pygame.draw.rect(n\u00e4ytt\u00f6, (255, 255, 0), neli\u00f62)\n\n    pygame.display.update(&#091;neli\u00f6, neli\u00f62])\n    kello.tick(10)<\/code><\/pre>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-33&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-33-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-33\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-33\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-33-panel\" role=\"region\" class=\"wp-block-accordion-panel has-black-color has-text-color has-link-color wp-elements-0efcb2aaee84328f27253cb30f35baec is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<ol class=\"wp-block-list\">\n<li>p\u00e4ivitt\u00e4\u00e4 koko n\u00e4yt\u00f6n ilman muuta, sill\u00e4 se on flip()-komennon tarkoitus.<\/li>\n\n\n\n<li>p\u00e4ivitt\u00e4\u00e4 my\u00f6s koko n\u00e4yt\u00f6n, sill\u00e4 update()-komennolla ei ole parametria, joten se toimii kuten flip()<\/li>\n\n\n\n<li>ei p\u00e4ivit\u00e4 koko n\u00e4ytt\u00f6\u00e4, sill\u00e4 update()-komennolle on annettu parametriksi neli\u00f6. T\u00e4ll\u00f6in vain neli\u00f6 p\u00e4ivittyy. Vaikka se onkin ainut asia, joka on piirretty n\u00e4yt\u00f6lle, ei koko n\u00e4ytt\u00f6 silti p\u00e4ivity.<\/li>\n\n\n\n<li>ei p\u00e4ivit\u00e4 koko n\u00e4ytt\u00f6\u00e4, sill\u00e4 update()-komennolle on annettu parametriksi lista. update() p\u00e4ivitt\u00e4\u00e4 kaikki listan j\u00e4senet, mutta koko n\u00e4ytt\u00f6 ei taaskaan p\u00e4ivity.<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Ohjaaminen ja vuorovaikutus<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading has-black-color has-text-color has-link-color wp-elements-801f7f21386a0b3d2cc84ba25c5c657c\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 . <\/strong>Tutki annettua koodia ja selvit\u00e4, mit\u00e4 n\u00e4pp\u00e4int\u00e4 painamalla saat jotain tapahtumaan. K\u00e4yt\u00e4 apuna Pygame dokumentaatiota (<a href=\"https:\/\/www.pygame.org\/docs\/ref\/key.html\" target=\"_blank\" rel=\"noreferrer noopener\">pygame.key \u2014 pygame v2.6.0 documentation<\/a>). Aja annettu koodi ja paina n\u00e4pp\u00e4int\u00e4. Kirjoita lyhyt vastaus siit\u00e4, mit\u00e4 tapahtui.<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nscreen = pygame.display.set_mode((400, 300))\n\nrgb = (0, 0, 0)\nrunning = True\nkello = pygame.time.Clock()\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n        \n        nappaimet = pygame.key.get_pressed()\n    \n        if nappaimet&#091;pygame.K_SPACE] == True:\n            rgb = (255, 0, 0)\n        if nappaimet&#091;pygame.K_SPACE] == False:\n            rgb = (255, 255, 0)\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, rgb, (175, 125, 50, 50))\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-34&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-34-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-34\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-34\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-34-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>V\u00e4lily\u00f6ntin\u00e4pp\u00e4imen painaminen saa muutoksen aikaiseksi. Painiketta painamalla ruudulla n\u00e4kyv\u00e4n neli\u00f6n v\u00e4ri vaihtuu keltaisesta punaiseksi. Punainen v\u00e4ri n\u00e4kyy niin kauan, kun v\u00e4lily\u00f6ntin\u00e4pp\u00e4in on pohjassa.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 .a. <\/strong>Kirjoita koodi, jolla voit liikuttaa kuviota (esimerkiksi neli\u00f6) yl\u00f6s, alas ja sivuille. Liit\u00e4 liike nuolin\u00e4pp\u00e4imiin sek\u00e4 wasd-n\u00e4pp\u00e4imiin.<\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-35&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-35-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-35\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-35\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-35-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#kirjasto(t)\nimport pygame\n\n#alustetaan Pygame\npygame.init()\n\n#Peli-ikkunan m\u00e4\u00e4ritys\nscreen = pygame.display.set_mode((400, 300))\n\n#muuttujat\nx, y = 175, 125\nnopeus = 10\nrunning = True\n\nkello = pygame.time.Clock()\n\nnelio = pygame.Rect(x, y, 50, 50)\n\n#Pelisilmukka\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n        \n        nappaimet = pygame.key.get_pressed()\n    \n        if nappaimet&#091;pygame.K_UP] or nappaimet&#091;pygame.K_w]: #yl\u00f6s\n            nelio.y = nelio.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN] or nappaimet&#091;pygame.K_s]: #alas\n            nelio.y = nelio.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT] or nappaimet&#091;pygame.K_d]: #oikealle\n            nelio.x = nelio.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT] or nappaimet&#091;pygame.K_a]: #vasemmalle\n            nelio.x = nelio.x - nopeus\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, (255, 255, 255), nelio)\n    pygame.display.flip()\n    kello.tick(60)\n\n#Pygame sulku\/lopetus\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading has-black-color has-text-color has-link-color wp-elements-15c117b6c30f092156feb1e3c040faaf\" style=\"font-size:16px\"><strong>b. <\/strong>Muokkaa a-kohdan koodia niin, ett\u00e4 kuvio ei p\u00e4\u00e4se poistumaan peli-ikkunasta. L\u00f6yd\u00e4t valmiin funktion dokumentaatiosta (<a href=\"https:\/\/www.pygame.org\/docs\/ref\/rect.html\" target=\"_blank\" rel=\"noreferrer noopener\">pygame.Rect \u2014 pygame v2.6.0 documentation<\/a>) tai voit k\u00e4ytt\u00e4\u00e4 muuta menetelm\u00e4\u00e4.<\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-36&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-36-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-36\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-36\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-36-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Tapa 1. Valmiilla Pygame funktiolla<\/summary>\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nscreen = pygame.display.set_mode((400, 300))\n\nx, y = 175, 125\nnopeus = 10\nrunning = True\n\nnelio = pygame.Rect(x, y, 50, 50)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    \n        nappaimet = pygame.key.get_pressed()\n\n        if nappaimet&#091;pygame.K_UP] or nappaimet&#091;pygame.K_w]:\n            nelio.y = nelio.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN] or nappaimet&#091;pygame.K_s]:\n            nelio.y = nelio.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT] or nappaimet&#091;pygame.K_d]:\n            nelio.x = nelio.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT] or nappaimet&#091;pygame.K_a]:\n            nelio.x = nelio.x - nopeus\n\n    nelio.clamp_ip(screen.get_rect()) #varmistaa ettei hahmo poistu peli-ikkunasta\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, (255, 255, 255), nelio)\n    pygame.display.flip()\n\npygame.quit()<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Tapa 2. Ehtorakenteella<\/summary>\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\n\nx, y = 175, 125\nnopeus = 10\nrunning = True\nkorkeus = 300\nleveys = 400\n\nscreen = pygame.display.set_mode((leveys, korkeus))\nnelio = pygame.Rect(x, y, 50, 50)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    \n        nappaimet = pygame.key.get_pressed()\n\n        if nappaimet&#091;pygame.K_UP] and nelio.y &gt; 0:\n            nelio.y = nelio.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN] and nelio.y &lt; korkeus-50: #50 = neli\u00f6n korkeus\n            nelio.y = nelio.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT] and nelio.x &lt; leveys-50: #50 = neli\u00f6n leveys\n            nelio.x = nelio.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT] and nelio.x &gt; 0:\n            nelio.x = nelio.x - nopeus\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, (255, 255, 255), nelio)\n    pygame.display.flip()\n\npygame.quit()<\/code><\/pre>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>c. <\/strong>Muokkaa koodia viel\u00e4 niin, ett\u00e4 n\u00e4pp\u00e4int\u00e4 painettaessa liike jatkuu niin kauan kuin n\u00e4pp\u00e4in on pohjassa.<\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-37&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-37-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-37\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-37\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-37-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nscreen = pygame.display.set_mode((400, 300))\n\nx, y = 175, 125\nnopeus = 10\nrunning = True\nkello = pygame.time.Clock()\n\nnelio = pygame.Rect(x, y, 50, 50)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    \n        nappaimet = pygame.key.get_pressed()\n\n    if nappaimet&#091;pygame.K_UP] or nappaimet&#091;pygame.K_w]:\n        nelio.y = nelio.y - nopeus\n    if nappaimet&#091;pygame.K_DOWN] or nappaimet&#091;pygame.K_s]:\n        nelio.y = nelio.y + nopeus\n    if nappaimet&#091;pygame.K_RIGHT] or nappaimet&#091;pygame.K_d]:\n        nelio.x = nelio.x + nopeus\n    if nappaimet&#091;pygame.K_LEFT] or nappaimet&#091;pygame.K_a]:\n        nelio.x = nelio.x - nopeus\n\n    nelio.clamp_ip(screen.get_rect())\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, (255, 255, 255), nelio)\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>d. <\/strong>Muuta ohjelman n\u00e4pp\u00e4inohjaus tapahtumapohjaiseksi (event-based). Korvaa siis aikaisempi tilakyselyyn (get_pressed) perustuva koodi tapahtumapohjaisella vaihtoehdolla. Ohjelman tulee edelleen toimia samalla tavalla kuin b-kohdassa.<\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-38&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-38-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-38\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-38\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-38-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nscreen = pygame.display.set_mode((400, 300))\n\nx, y = 175, 125\nnopeus = 10\nrunning = True\nkello = pygame.time.Clock()\n\nnelio = pygame.Rect(x, y, 50, 50)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n        if event.type == pygame.KEYDOWN:\n            if event.key in (pygame.K_UP, pygame.K_w):\n                nelio.y = nelio.y - nopeus\n            if event.key in (pygame.K_DOWN, pygame.K_s):\n                nelio.y = nelio.y + nopeus\n            if event.key in (pygame.K_RIGHT, pygame.K_d):\n                nelio.x = nelio.x + nopeus\n            if event.key in (pygame.K_LEFT, pygame.K_a):\n                nelio.x = nelio.x - nopeus\n\n    nelio.clamp_ip(screen.get_rect())\n\n    screen.fill((0, 0, 0))\n    pygame.draw.rect(screen, (255, 255, 255), nelio)\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 . <\/strong>Kirjoita ohjelma, jossa hahmoa pystyy liikuttamaan hiirell\u00e4, kun hiiren oikea painike on painettuna.<\/h5>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-39&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-39-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-39\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-39\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-39-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkki ratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#kirjasto(t)\nimport pygame\n\n# Alustus\npygame.init()\nnaytto = pygame.display.set_mode((800, 600))\nrect = pygame.Rect(300, 200, 50, 50)\nkello = pygame.time.Clock()\n\n#muuttujat\nraahata = False\n\nkaynnissa = True\n\n#Pelisilmukka\nwhile kaynnissa:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            kaynnissa = False\n        elif event.type == pygame.MOUSEBUTTONDOWN:\n            if event.button == 3:\n                raahata = True\n        elif event.type == pygame.MOUSEBUTTONUP:\n            raahata = False\n        elif event.type == pygame.MOUSEMOTION:\n            if raahata:\n                rect.move_ip(event.rel) \n\n    naytto.fill((30, 30, 30))\n    pygame.draw.rect(naytto, (0, 255, 0), rect)\n    pygame.display.flip()\n    kello.tick(60)\n\n#peli lopetus\/sulku\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Pelilogiikka ja s\u00e4\u00e4nn\u00f6t<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Teht\u00e4v\u00e4 1.a. <\/strong>Toteuta peli-ikkunaan labyrintin pohja esimerkin mukaan tai voit my\u00f6s suunnitella labyrintin itse. Pojan voit toteuttaa esimerkiksi listan avulla, jossa x=sein\u00e4, p=pelaaja ja m=maali.<\/h5>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-black-color has-text-color has-link-color has-fixed-layout\"><tbody><tr><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>p<\/td><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>x<\/td><td>&nbsp;<\/td><td>m<\/td><td>x<\/td><\/tr><tr><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><td>x<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-40&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-40-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-40\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-40\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-40-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkkiratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((650, 400))\nkello = pygame.time.Clock()\n\nrunning = True\n\nkartta = &#091;\n    \"xxxxxxxxxxxxx\",\n    \"x  px     x x\",\n    \"x xxxxx x x x\",\n    \"x     x x x x\",\n    \"x xxx   x   x\",\n    \"x   xxxxxx xx\",\n    \"x x      x mx\",\n    \"xxxxxxxxxxxxx\"\n]\n\n# Luo sein\u00e4t\nseinat = &#091;]\nmaali = None\npelaaja = None\n\nfor y in range(len(kartta)):\n    for x in range(len(kartta&#091;0])):\n        if kartta&#091;y]&#091;x] == \"x\":\n            seinat.append(pygame.Rect(x*50, y*50, 50, 50))\n        if kartta&#091;y]&#091;x] == \"m\":\n            maali = pygame.Rect(x*50, y*50, 50, 50)\n        if kartta&#091;y]&#091;x] == \"p\":\n            pelaaja = pygame.Rect(x*50, y*50, 40, 40)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n\n    for s in seinat:\n        pygame.draw.rect(naytto, (100, 100, 100), s)\n\n    if maali:\n        pygame.draw.rect(naytto, (0, 255, 0), maali)\n\n    pygame.draw.rect(naytto, (255, 255, 255), pelaaja)\n\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-black-color has-text-color has-link-color wp-elements-2a172edb2faa8f60cd22341c97f43a00\" style=\"font-size:16px\"><strong>b.<\/strong> Muokkaa pelin hahmoa (pelaaja) niin, ett\u00e4 se p\u00e4\u00e4see liikkumaan sallitulla alueella (k\u00e4yt\u00e4v\u00e4t) eik\u00e4 pysty l\u00e4p\u00e4isem\u00e4\u00e4n seini\u00e4. Apua t\u00f6rm\u00e4yksen tarkistamiseen saat dokumentaatiosta (<a href=\"https:\/\/www.pygame.org\/docs\/ref\/rect.html\">pygame.Rect \u2014 pygame v2.6.0 documentation<\/a>)<\/h2>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-41&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-41-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-41\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-41\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-41-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkkiratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((650, 400))\nkello = pygame.time.Clock()\n\nrunning = True\nnopeus = 1\nseinat = &#091;]\nmaali = None\npelaaja = None\nkartta = &#091;\n    \"xxxxxxxxxxxxx\",\n    \"x  px     x x\",\n    \"x xxxxx x x x\",\n    \"x     x x x x\",\n    \"x xxx   x   x\",\n    \"x   xxxxxx xx\",\n    \"x x      x mx\",\n    \"xxxxxxxxxxxxx\"\n]\n\n\nfor y in range(len(kartta)):\n    for x in range(len(kartta&#091;0])):\n        if kartta&#091;y]&#091;x] == \"x\":\n            seinat.append(pygame.Rect(x*50, y*50, 50, 50))\n        if kartta&#091;y]&#091;x] == \"m\":\n            maali = pygame.Rect(x*50, y*50, 50, 50)\n        if kartta&#091;y]&#091;x] == \"p\":\n            pelaaja = pygame.Rect(x*50, y*50, 40, 40)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n\n    nappaimet = pygame.key.get_pressed()\n    vanha = pelaaja.copy()\n\n    if nappaimet&#091;pygame.K_UP]:\n        pelaaja.y = pelaaja.y - nopeus\n    if nappaimet&#091;pygame.K_DOWN]:\n        pelaaja.y = pelaaja.y + nopeus\n    if nappaimet&#091;pygame.K_RIGHT]:\n        pelaaja.x = pelaaja.x + nopeus\n    if nappaimet&#091;pygame.K_LEFT]:\n        pelaaja.x = pelaaja.x - nopeus\n\n    for s in seinat:\n        if pelaaja.colliderect(s):\n            pelaaja = vanha\n\n\n    naytto.fill((0, 0, 0))\n    for s in seinat:\n        pygame.draw.rect(naytto, (100, 100, 100), s)\n\n    if maali:\n        pygame.draw.rect(naytto, (0, 255, 0), maali)\n\n    pygame.draw.rect(naytto, (255, 255, 255), pelaaja)\n\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>c.<\/strong> Luo labyrinttiin lopetus (maali), johon hahmon p\u00e4\u00e4sty\u00e4 ilmestyy peli-ikkunaan teksti \u201cP\u00e4\u00e4sit maaliin\u201d. Peli my\u00f6s ns. j\u00e4\u00e4tyy t\u00e4ss\u00e4 kohtaa eli hahmoa ei pysty en\u00e4\u00e4 liikuttamaan. Peli siis p\u00e4\u00e4ttyy.<\/h2>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-42&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-42-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-42\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-42\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-42-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkkiratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((650, 400))\nkello = pygame.time.Clock()\n\nrunning = True\nnopeus = 1\nfontti = pygame.font.SysFont(\"Arial\", 40)\nnayta_teksti = False\nkaynnissa = True\nseinat = &#091;]\nmaali = None\npelaaja = None\nkartta = &#091;\n    \"xxxxxxxxxxxxx\",\n    \"x  px     x x\",\n    \"x xxxxx x x x\",\n    \"x     x x x x\",\n    \"x xxx   x   x\",\n    \"x   xxxxxx xx\",\n    \"x x      x mx\",\n    \"xxxxxxxxxxxxx\"\n]\n\nfor y in range(len(kartta)):\n    for x in range(len(kartta&#091;0])):\n        if kartta&#091;y]&#091;x] == \"x\":\n            seinat.append(pygame.Rect(x*50, y*50, 50, 50))\n        if kartta&#091;y]&#091;x] == \"m\":\n            maali = pygame.Rect(x*50, y*50, 50, 50)\n        if kartta&#091;y]&#091;x] == \"p\":\n            pelaaja = pygame.Rect(x*50, y*50, 40, 40)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    if kaynnissa == True:\n        nappaimet = pygame.key.get_pressed()\n        vanha = pelaaja.copy()\n\n        if nappaimet&#091;pygame.K_UP]:\n            pelaaja.y = pelaaja.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN]:\n            pelaaja.y = pelaaja.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT]:\n            pelaaja.x = pelaaja.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT]:\n            pelaaja.x = pelaaja.x - nopeus\n\n    for s in seinat:\n        if pelaaja.colliderect(s):\n            pelaaja = vanha\n    \n    if maali.contains(pelaaja):\n        nayta_teksti = True\n        kaynnissa = False\n\n    naytto.fill((0, 0, 0))\n    for s in seinat:\n        pygame.draw.rect(naytto, (100, 100, 100), s)\n\n    if maali:\n        pygame.draw.rect(naytto, (0, 255, 0), maali)\n\n    pygame.draw.rect(naytto, (255, 255, 255), pelaaja)\n\n    if nayta_teksti == True:\n        teksti_pinta = fontti.render(\"P\u00e4\u00e4sit maaliin!\", True, (255, 255, 255))\n        # Lasketaan tekstin keskikohta\n        teksti_rect = teksti_pinta.get_rect(center=(650\/2, 400\/2))\n        naytto.blit(teksti_pinta, teksti_rect)\n\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>d.<\/strong> Lis\u00e4\u00e4 labyrinttiin vihollinen, joka kulkee m\u00e4\u00e4ritetyss\u00e4 kohdassa s\u00e4\u00e4nn\u00f6llisesti. Kohdan, johon asetat vihollisen voit p\u00e4\u00e4tt\u00e4\u00e4 itse tai laittaa sen kulkemaan yl\u00f6s-alas ensimm\u00e4iselle k\u00e4yt\u00e4v\u00e4lle.  Jos viholliseen osuu peli p\u00e4\u00e4ttyy.<\/h2>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-43&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-43-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-43\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-43\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-43-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkkiratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((650, 400))\nkello = pygame.time.Clock()\n\nrunning = True\nnopeus = 1\nfontti = pygame.font.SysFont(\"Arial\", 40)\nnayta_teksti = False\nkaynnissa = True\ntappio = False\nseinat = &#091;]\nmaali = None\npelaaja = None\nvihollinen = pygame.Rect(52.5, 100, 40, 40)\nvihollis_nopeus = 1\nsuunta = 1  # 1 = alas, -1 = yl\u00f6s\nkartta = &#091;\n    \"xxxxxxxxxxxxx\",\n    \"x  px     x x\",\n    \"x xxxxx x x x\",\n    \"x     x x x x\",\n    \"x xxx   x   x\",\n    \"x   xxxxxx xx\",\n    \"x x      x mx\",\n    \"xxxxxxxxxxxxx\"\n]\n\nfor y in range(len(kartta)):\n    for x in range(len(kartta&#091;0])):\n        if kartta&#091;y]&#091;x] == \"x\":\n            seinat.append(pygame.Rect(x*50, y*50, 50, 50))\n        if kartta&#091;y]&#091;x] == \"m\":\n            maali = pygame.Rect(x*50, y*50, 50, 50)\n        if kartta&#091;y]&#091;x] == \"p\":\n            pelaaja = pygame.Rect(x*50, y*50, 40, 40)\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    if kaynnissa == True:\n        nappaimet = pygame.key.get_pressed()\n        vanha = pelaaja.copy()\n\n        if nappaimet&#091;pygame.K_UP]:\n            pelaaja.y = pelaaja.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN]:\n            pelaaja.y = pelaaja.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT]:\n            pelaaja.x = pelaaja.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT]:\n            pelaaja.x = pelaaja.x - nopeus\n\n        vihollinen.y += vihollis_nopeus * suunta\n\n        # vaihda suuntaa kun osuu reunoihin\n        if vihollinen.y &lt; 50 or vihollinen.y &gt; 300:\n            suunta *= -1\n\n        if pelaaja.colliderect(vihollinen):\n            kaynnissa = False\n            tappio = True\n\n    for s in seinat:\n        if pelaaja.colliderect(s):\n            pelaaja = vanha\n    \n    if maali.contains(pelaaja):\n        nayta_teksti = True\n        kaynnissa = False\n\n    naytto.fill((0, 0, 0))\n    for s in seinat:\n        pygame.draw.rect(naytto, (100, 100, 100), s)\n\n    if maali:\n        pygame.draw.rect(naytto, (0, 255, 0), maali)\n\n    pygame.draw.rect(naytto, (255, 255, 255), pelaaja)\n\n    pygame.draw.rect(naytto, (255, 0, 0), vihollinen) \n\n    if tappio == True:\n        teksti_pinta = fontti.render(\"H\u00e4visit!\", True, (255, 255, 255))\n        # Lasketaan tekstin keskikohta\n        teksti_rect = teksti_pinta.get_rect(center=(650\/2, 400\/2))\n        naytto.blit(teksti_pinta, teksti_rect)\n\n    if nayta_teksti == True:\n        teksti_pinta = fontti.render(\"P\u00e4\u00e4sit maaliin!\", True, (255, 255, 255))\n        # Lasketaan tekstin keskikohta\n        teksti_rect = teksti_pinta.get_rect(center=(650\/2, 400\/2))\n        naytto.blit(teksti_pinta, teksti_rect)\n\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>e.<\/strong> Lis\u00e4\u00e4 peliin palkinto jokaiseen k\u00e4yt\u00e4v\u00e4 ruutuun (v\u00e4lily\u00f6nnit). Jokaisesta palkinnosta saa yhden pisteen. Palkinnon tulee kadota samalla, kun siihen osuu ja siit\u00e4 saa pisteen.<\/h2>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-44&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-44-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-44\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vastaus<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-44\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-44-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Esimerkkiratkaisu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((650, 400))\nkello = pygame.time.Clock()\n\nrunning = True\nnopeus = 1\nfontti = pygame.font.SysFont(\"Arial\", 40)\nnayta_teksti = False\nkaynnissa = True\ntappio = False\npalkinnot = &#091;]\npisteet = 0\nseinat = &#091;]\nmaali = None\npelaaja = None\npalkinto = None\n\nkartta = &#091;\n    \"xxxxxxxxxxxxx\",\n    \"x  px     x x\",\n    \"x xxxxx x x x\",\n    \"x     x x x x\",\n    \"x xxx   x   x\",\n    \"x   xxxxxx xx\",\n    \"x x      x mx\",\n    \"xxxxxxxxxxxxx\"\n]\n\nfor y in range(len(kartta)):\n    for x in range(len(kartta&#091;0])):\n        if kartta&#091;y]&#091;x] == \"x\":\n            seinat.append(pygame.Rect(x*50, y*50, 50, 50))\n        if kartta&#091;y]&#091;x] == \"m\":\n            maali = pygame.Rect(x*50, y*50, 50, 50)\n        if kartta&#091;y]&#091;x] == \"p\":\n            pelaaja = pygame.Rect(x*50, y*50, 40, 40)\n        if kartta&#091;y]&#091;x] == \" \":\n            palkinnot.append(pygame.Rect(x*51.5, y*51.5, 30, 30)) #mahdollisimman keskell\u00e4 \"ruutua\"\n\n\nvihollinen = pygame.Rect(52.5, 52.5, 40, 40)\nvihollis_nopeus = 1\nsuunta = 1  # 1 = alas, -1 = yl\u00f6s\n\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n    if kaynnissa == True:\n        nappaimet = pygame.key.get_pressed()\n        vanha = pelaaja.copy()\n\n        if nappaimet&#091;pygame.K_UP]:\n            pelaaja.y = pelaaja.y - nopeus\n        if nappaimet&#091;pygame.K_DOWN]:\n            pelaaja.y = pelaaja.y + nopeus\n        if nappaimet&#091;pygame.K_RIGHT]:\n            pelaaja.x = pelaaja.x + nopeus\n        if nappaimet&#091;pygame.K_LEFT]:\n            pelaaja.x = pelaaja.x - nopeus\n\n        vihollinen.y += vihollis_nopeus * suunta\n\n        # vaihda suuntaa kun osuu reunoihin\n        if vihollinen.y &lt; 50 or vihollinen.y &gt; 300:\n            suunta *= -1\n\n        if pelaaja.colliderect(vihollinen):\n            kaynnissa = False\n            tappio = True\n\n    for s in seinat:\n        if pelaaja.colliderect(s):\n            pelaaja = vanha\n    \n    if maali.contains(pelaaja):\n        nayta_teksti = True\n        kaynnissa = False\n\n    naytto.fill((0, 0, 0))\n    for s in seinat:\n        pygame.draw.rect(naytto, (100, 100, 100), s)\n\n    if maali:\n        pygame.draw.rect(naytto, (0, 255, 0), maali)\n\n    pygame.draw.rect(naytto, (255, 255, 255), pelaaja) \n\n    for palkinto in palkinnot&#091;:]:\n        pygame.draw.rect(naytto, (255, 255, 0), palkinto) \n        if pelaaja.colliderect(palkinto):\n            pisteet += 1\n            palkinnot.remove(palkinto)\n            break\n\n    pygame.draw.rect(naytto, (255, 0, 0), vihollinen) \n\n    if tappio == True:\n        teksti_pinta = fontti.render(\"H\u00e4visit!\", True, (255, 255, 255))\n        # Lasketaan tekstin keskikohta\n        teksti_rect = teksti_pinta.get_rect(center=(650\/2, 400\/2))\n        naytto.blit(teksti_pinta, teksti_rect)\n\n    if nayta_teksti == True:\n        teksti_pinta = fontti.render(\"P\u00e4\u00e4sit maaliin!\", True, (255, 255, 255))\n        # Lasketaan tekstin keskikohta\n        teksti_rect = teksti_pinta.get_rect(center=(650\/2, 400\/2))\n        naytto.blit(teksti_pinta, teksti_rect)\n    \n    score_text = fontti.render(f\"Pisteet: {pisteet}\", True, (255, 255, 255)) # Valkoinen teksti\n    naytto.blit(score_text, (10, 10)) # Piirret\u00e4\u00e4n koordinaatteihin (10, 10)\n\n    pygame.display.flip()\n    kello.tick(60)\n\npygame.quit()<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:25px\"><strong>2. Lopputeht\u00e4v\u00e4<\/strong><\/h3>\n\n\n\n<p>Projektiteht\u00e4vist\u00e4 tulee toteuttaa joko kaksi projektiteht\u00e4vist\u00e4 1\u20133 tai yksi laajempi projektiteht\u00e4v\u00e4 4. Lis\u00e4ksi tulee kirjoittaa v\u00e4hint\u00e4\u00e4n 200 sanan raportti, jossa kuvailet, miten rakensit lopputy\u00f6n. Raporttiin voi my\u00f6s sis\u00e4llytt\u00e4\u00e4 koodiesimerkkej\u00e4.<\/p>\n\n\n\n<p>Projektin rakenteen tulee perustua perusteht\u00e4vien kaltaisiin ratkaisuihin ja esimerkkeihin. Pelin tarkoituksena on tukea omaa oppimistasi, joten projekti tulee toteuttaa vaiheittain pieniss\u00e4 osissa. Vaikka teko\u00e4ly pystyy tuottamaan kokonaisen pelin kerralla, sit\u00e4 ei saa tehd\u00e4 lopputy\u00f6ss\u00e4. T\u00e4ll\u00f6in et v\u00e4ltt\u00e4m\u00e4tt\u00e4 ymm\u00e4rr\u00e4, mit\u00e4 koodissa tapahtuu, kokonaisuus on liian suuri hahmottaa kerralla, ja virheiden l\u00f6yt\u00e4minen sek\u00e4 korjaaminen on vaikeampaa. Suuremmat ohjelmat, kuten esimerkiksi 10\u202f000 rivin kokonaisuudet, rakennetaan ja ymm\u00e4rret\u00e4\u00e4n jakamalla ne pienempiin osiin, koska koko koodia ei voi hahmottaa tai rakentaa kerralla.<\/p>\n\n\n\n<p>Projektiteht\u00e4viss\u00e4 1\u20133 tulee olla v\u00e4hint\u00e4\u00e4n 50 koodirivi\u00e4. Tyhji\u00e4 riviv\u00e4lej\u00e4 ja kommentteja ei lasketa mukaan. Ohjelmassa tulee k\u00e4ytt\u00e4\u00e4 v\u00e4hint\u00e4\u00e4n kolmea funktiota. Mallivideot n\u00e4ytt\u00e4v\u00e4t projektin v\u00e4himm\u00e4istason eli sen, mit\u00e4 peliss\u00e4 tulee v\u00e4hint\u00e4\u00e4n olla. Halutessasi voit kuitenkin laajentaa peli\u00e4 lis\u00e4\u00e4m\u00e4ll\u00e4 omia toiminnallisuuksia, kuten kuvia.<\/p>\n\n\n\n<p>Projektiteht\u00e4v\u00e4ss\u00e4 4 tulee olla v\u00e4hint\u00e4\u00e4n 120 koodirivi\u00e4. Tyhji\u00e4 riviv\u00e4lej\u00e4 ja kommentteja ei lasketa mukaan. Ohjelmassa tulee k\u00e4ytt\u00e4\u00e4 v\u00e4hint\u00e4\u00e4n kuutta funktiota. Peliss\u00e4 tulee olla kuvia, piirrettyj\u00e4 objekteja, ohjattavia osia, vuorovaikutusta eri osien v\u00e4lill\u00e4, pisteit\u00e4 kasvattava elementti, pisteit\u00e4 v\u00e4hent\u00e4v\u00e4 elementti, pisteiden n\u00e4ytt\u00e4minen sek\u00e4 pelin p\u00e4\u00e4ttyminen jonkin ehdon perusteella.<\/p>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-45&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-background has-medium-font-size\" style=\"background-color:#e6f3b7\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-45-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-45\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Vinkkej\u00e4 pelin rakentamiseen<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-45\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-45-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Rakenna pelisilmukka.<\/li>\n\n\n\n<li>Mieti, miten liikkuvat objektit on toteutettu ja millaisessa muodossa ne ovat koodissa. Mallinna rakenne aluksi paikallaan.<\/li>\n\n\n\n<li>Lis\u00e4\u00e4 liike perusteht\u00e4viss\u00e4 opitulla tavalla. Onko liikkeess\u00e4 ehtoja?<\/li>\n\n\n\n<li>Pohdi, mit\u00e4 t\u00f6rm\u00e4ys tarkoittaa koodissa ja miten se toteutuu kahden objektin v\u00e4lill\u00e4.<\/li>\n\n\n\n<li>Jaa toiminnalliset kokonaisuudet funktioihin.<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Projekti 1. <\/strong>Pong &#8211; virtuaalinen ilmakiekko<\/h5>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-372ccad44a7896240b5429ce38c30643\">Luo kopio Pong-pelist\u00e4. Peliss\u00e4 pelaajat liikuttavat mailoja ja yritt\u00e4v\u00e4t est\u00e4\u00e4 pallon p\u00e4\u00e4syn omaan p\u00e4\u00e4tyyns\u00e4 viem\u00e4ll\u00e4 mailan sen eteen. Vaatimuksena on, ett\u00e4 pelaaja pystyy liikuttamaan mailaansa ja vastapelaajan maila liikkuu itsest\u00e4\u00e4n yritt\u00e4en est\u00e4\u00e4 pallon p\u00e4\u00e4syn p\u00e4\u00e4tyyn. Pallo liikkuu itsest\u00e4\u00e4n ja vaihtaa suuntaa osuessaan pelilaudan yl\u00e4- tai alareunaan tai pelaajien mailoihin. <\/p>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Projekti 2. <\/strong>Nappaajapeli<\/h5>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"font-size:16px\"><strong>Projekti 3. <\/strong>Ampumispeli<\/h5>\n","protected":false},"excerpt":{"rendered":"<p>Peliohjelmointi &#8211; Pygame 1. Perusteht\u00e4v\u00e4t Asennukset ja Pygame tutuksi Ensimm\u00e4inen Pygame-sovellus Teht\u00e4v\u00e4 .a. Aja annettu koodi ja seura, mit\u00e4 tapahtuu. Kirjoita lyhyt vastaus siit\u00e4, mit\u00e4 n\u00e4it ja miksi niin k\u00e4vi. b. Lis\u00e4\u00e4 annettuun koodiin toimiva pelisilmukka, joka pit\u00e4\u00e4 pelin toiminnassa.<\/p>\n","protected":false},"author":3745,"featured_media":0,"parent":6,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3491","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/pages\/3491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/users\/3745"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/comments?post=3491"}],"version-history":[{"count":150,"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/pages\/3491\/revisions"}],"predecessor-version":[{"id":4014,"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/pages\/3491\/revisions\/4014"}],"up":[{"embeddable":true,"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/pages\/6"}],"wp:attachment":[{"href":"https:\/\/blog.edu.turku.fi\/allu\/wp-json\/wp\/v2\/media?parent=3491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}