Resenja zadataka

Pitanje ili opis problema

[koristite ovaj template za postavljanje tema u kategoriji Pitanja i problemi]
…Jel mozete da mi pošaljete resenje zadatka kućice
?

Link ka zadatku ili odgovarajućoj stranic

https://petlja.org/biblioteka/r/lekcije/pygame-prirucnik/petlje-cas7

Ovo je dato,ali mi treba pomoć da dopunim ostatak

…import math, random
import pygame as pg
import pygamebg

(sirina, visina) = (600, 300) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, “Село”)

crta kućicu kojoj je donje levo teme u (x, y)

def kucica(x, y, dim_kucice):
(x0, y0) = (x, y - dim_kucice) # gornje levo teme osnove
# crtamo osnovu kuće
pg.draw.rect(prozor, pg.Color(“white”), (x0, y0, dim_kucice, dim_kucice))
# crtamo krov (jednakostranični trougao)
krov_levo = (x0, y0) # donje levo teme krova
krov_desno = (x0 + dim_kucice, y0) # donje desno teme krova
krov_vrh = (???, ???) # vrh krova
pg.draw.polygon(prozor, pg.Color(“red”), [???, ???, ???])
# uokvirujemo osnovu kuće
???
# crtamo vrata
sirina_vrata = dim_kucice / 4
visina_vrata = dim_kucice / 2
vrata_levo = ??? # x koordinata leve ivice vrata
vrata_gore = ??? # y koordinata gornje ivice vraa
pg.draw.rect(prozor, pg.Color(“brown”), ???)

bojimo pozadinu u nebo-plavo

prozor.fill(pg.Color(“skyblue”))

crtamo jednu po jednu kućicu

broj_kucica = 5
dim_kucice = sirina / broj_kucica
???

prikazujemo prozor i čekamo da ga korisnik isključi

pygamebg.wait_loop()

Zdravo,

Da li si probala sama da rešiš pa si se negde zaglavila?

Ako hoćeš, možeš ovde da postuješ svoj kod ili da mi pošalješ kao ličnu poruku to što si sama probala da uradiš, pa možemo zajedno da ga rešimo.

Evo nesto sam pokušala:

import math, random
import pygame as pg
import pygamebg

pg.init()
(sirina, visina) = (600, 300) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, “Село”)

crta kućicu kojoj je donje levo teme u (x, y)

def kucica(x, y, dim_kucice, r1, g1, b1):
(x0, y0) = (x, y - dim_kucice) # gornje levo teme osnove
# crtamo osnovu kuće
pg.draw.rect(prozor, pg.Color(“white”), (x0, y0, dim_kucice, dim_kucice))
# crtamo krov (jednakostranični trougao)
krov_levo = (x0, y0) # donje levo teme krova
krov_desno = (x0 + dim_kucice, y0) # donje desno teme krova
krov_vrh = (x0 + dim_kucice/2.0, dim_kucicemath.sqrt(3.0)/2.0) # vrh krova
pg.draw.polygon(prozor, pg.Color(“red”), [krov_levo, krov_desno, krov_vrh])
pg.draw.polygon(prozor, pg.Color(r1,g1,b1), [krov_levo, krov_desno, krov_vrh], 4) #240, 128, 128
# uokvirujemo osnovu kuće
pg.draw.rect(prozor, pg.Color(128, 128, 128), (x0, y0, dim_kucice, dim_kucice), 4)
# crtamo vrata
sirina_vrata = dim_kucice/4.0
visina_vrata = dim_kucice/2.0
vrata_levo = x0 + (dim_kucice - sirina_vrata)/2.0 # x koordinata leve ivice vrata
vrata_gore = y0 + dim_kucice/2.0 # y koordinata gornje ivice vrata
pg.draw.rect(prozor, pg.Color(“brown”), (vrata_levo, vrata_gore, sirina_vrata, visina_vrata))
pg.draw.rect(prozor, pg.Color(r1 - 21, g1 + 36, b1 -96), (vrata_levo, vrata_gore, sirina_vrata, visina_vrata), 4)
#crtamo prozore kucice
sirina_prozora = dim_kucice/4.0
visina_prozora = dim_kucice/4.0
lprozor_levo = x0 + dim_kucice/8.0
dprozor_levo = x0 + 5.0
dim_kucice/8.0
prozor_gore = y0 + dim_kucice/8.0
pg.draw.rect(prozor, pg.Color(r1 + 10, g1 + 108, b1 - 125), (lprozor_levo, prozor_gore, sirina_prozora, visina_prozora))
pg.draw.rect(prozor, pg.Color(r1 + 10, g1 + 108, b1 - 125), (lprozor_levo, prozor_gore, sirina_prozora, visina_prozora), 3)
pg.draw.rect(prozor, pg.Color(r1 + 10, g1 + 108, b1 - 125), (dprozor_levo, prozor_gore, sirina_prozora, visina_prozora))
pg.draw.rect(prozor, pg.Color(r1 + 10, g1 + 108, b1 - 125), (dprozor_levo, prozor_gore, sirina_prozora, visina_prozora), 3)

bojimo pozadinu u nebo-plavo

prozor.fill(pg.Color(“skyblue”))

crtamo jednu po jednu kućicu

broj_kucica = 5
dim_kucice = sirina / broj_kucica
for i in range(0, broj_kucica, 1):
kucica(0 + idim_kucice, 300, dim_kucice, 240 - i**2, 128 - 6i, 128 + 12*i )

prikazujemo prozor i cekamo da ga korisnik iskljuci

pygamebg.wait_loop()

Ok vidim šta si radila i većina stvari ti je u redu. Vidim da lepo razumeš kako da koristiš funkcije i crtaš oblike, što je najvažnije. Veći deo zadatka si lepo razumela i super si izrazila sve u relativnim koordinatama. Takođe, vidim da ti ni petlje nisu problem što je sjajno. Ostavio sam ti neke stvari u komentarima u kodu koje sam ti ispravio.

Izbrisao sam ti prozore pošto oni nisu deo ovog zadatka, ako želiš, možeš da probaš da dobudžiš kod tako što ćeš dodati prozore.

Čini mi se da ti je najveći problem bio što si se zapetljala sa vrednostima za boje, kako pri definisanju glavne funkcije, tako i kod crtanja pojedinačnih delova. Ne možeš da koristiš pg.Color () tako što ćeš da navedeš torku od 3 broja kao argument funkcije, na primer pg.Color(10,10,10) će izbaciti grešku. Ta funkcija očekuje da dobije neki string (nisku). Ako želiš da definišeš sopstvene boje, potrebno je da napraviš varijablu i da je koristiš umesto pg.Color(). Na primer možeš da definišeš boju moja_boja = (10, 10, 10 ) i da onda napraviš kvadrat u toj boji tako što ćeš u funkciji za kvadrat umesto pg.Color() da upotrebiš moja_boja - recimo ovako, pg.draw.rect(prozor, moja_boja, (vrata_levo, vrata_gore, sirina_vrata, visina_vrata)). Alternativno, možeš samo da ubaciš torku sa vrednostima za RGB na to mesto -
pg.draw.rect(prozor, (10, 10, 10), (vrata_levo, vrata_gore, sirina_vrata, visina_vrata)).

Ako želiš da ga rešiš kako si ti krenula sa bojama, kreni sa time da u funkcijama gde koristiš boje umesto pg.Color(r1 + 10, g1 + 108, b1 - 125), staviš samo (r1 + 10, g1 + 108, b1 - 125) bez pg.Color. Takođe, onda ćeš morati da vratiš te vrednosti kod definisanja funkcije pošto sam ih ja izbacio u ovom rešenju koje ti šaljem.

Na kraju, pazi kako pišeš množenje. Moraš da staviš znak * između elemenata koje množiš, ne možeš samo da ih spojiš. To sigurno znaš, ali obrati pažnju na to pošto si na nekoliko mesta napravila tu grešku.

Prepravio sam tvoj kod tako da radi kada ga prekopiraš u petljin editor ili fajl kod tebe na računaru. Ovo će ti biti ok polazna tačka, probaj sad da izraziš boje onako kako si ti krenula i da docrtaš prozore.

import math, random
import pygame as pg
import pygamebg

(sirina, visina) = (600, 300) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, "Село")

#crta kućicu kojoj je donje levo teme u (x, y)
def kucica(x, y, dim_kucice):
    (x0, y0) = (x, y - dim_kucice) # gornje levo teme osnove
    # crtamo osnovu kuće
    pg.draw.rect(prozor, pg.Color("white"), (x0, y0, dim_kucice, dim_kucice))
    # crtamo krov (jednakostranični trougao)
    krov_levo = (x0, y0) # donje levo teme krova
    krov_desno = (x0 + dim_kucice, y0) # donje desno teme krova
    krov_vrh = (x0 + dim_kucice/2.0, y0-dim_kucice*math.sqrt(3.0)/2.0) # ovde si dobro stavila visinu trougla, ali važno je da je oduzmeš od y0 i pazi kako pišeš množenje
    pg.draw.polygon(prozor, pg.Color("red"), [krov_levo, krov_desno, krov_vrh])
    pg.draw.polygon(prozor, pg.Color("black"), [krov_levo, krov_desno, krov_vrh], 4) 
    # uokvirujemo osnovu kuće
    pg.draw.rect(prozor, pg.Color("black"), (x0, y0, dim_kucice, dim_kucice), 4)
    # crtamo vrata
    sirina_vrata = dim_kucice/4.0
    visina_vrata = dim_kucice/2.0
    vrata_levo = x0 + (dim_kucice - sirina_vrata)/2.0 # x koordinata leve ivice vrata
    vrata_gore = y0 + dim_kucice/2.0 # y koordinata gornje ivice vrata
    pg.draw.rect(prozor, pg.Color("brown"), (vrata_levo, vrata_gore, sirina_vrata, visina_vrata))
    pg.draw.rect(prozor, pg.Color("black"), (vrata_levo, vrata_gore, sirina_vrata, visina_vrata), 4)


#bojimo pozadinu u nebo-plavo
prozor.fill(pg.Color("skyblue"))

#crtamo jednu po jednu kućicu
broj_kucica = 5
dim_kucice = sirina / broj_kucica
for i in range(0, broj_kucica, 1):
    kucica(0 + i*dim_kucice, visina , dim_kucice) #ovde isto nisi stavila znak za množenje, takođe bolje je da koristiš varijablu visina nego finksnu vrednost visine prozora

#prikazujemo prozor i čekamo da ga korisnik isključi
pygamebg.wait_loop()

Hvala punooo