Kirjautuminen

Haku

Tehtävät

Kilpailu

Algoritmikisa
Putka Open 2020 -kisan
4. kierros: 6.–8.11.

Keskustelu: Ohjelmointiongelmat: Python: Apua pygame-pelin kanssa

Sivu 1 / 1

Siili00 [11.07.2020 18:20:18]

#

Olen aloittanut koodaamaan peliä pygame-pelikirjastolla:

import pygame

naytto = pygame.display.set_mode((640, 400))
pygame.display.set_caption("Piirtäminen")


def piirraKuva(kuvatiedosto, x, y):
    naytto.blit(kuvatiedosto, (x, y))

def piirtaminen(naytto, hahmot):
    naytto.fill((0, 0, 0))
    for hahmo in hahmot:
        if hahmo[4] == True:
            kuva = pygame.image.load(hahmo[0]).convert()
            naytto.blit(kuva, (hahmo[2], hahmo[3]))
    pygame.display.flip()

def kontrolli(hahmot, tapahtuma):
    if tapahtuma.type == pygame.KEYDOWN:
        if tapahtuma.key == pygame.K_SPACE:
            for hahmo in hahmot:
                hahmo[4] = True
        elif tapahtuma.key == pygame.K_d:
            päähahmo = hahmot[0]
            päähahmo[2] += 10
        elif tapahtuma.key == pygame.K_a:
            päähahmo = hahmot[0]
            päähahmo[2] -= 10
        elif tapahtuma.key == pygame.K_w:
            päähahmo = hahmot[0]
            päähahmo[3] -= 10
        elif tapahtuma.key == pygame.K_s:
            päähahmo = hahmot[0]
            päähahmo[3] += 10

def main():
    oravahahmo = ["orava.png", "siili.png", 100, 100, False]
    hahmot = [oravahahmo]
    while True:
        tapahtuma = pygame.event.poll()
        if tapahtuma.type == pygame.QUIT:
            break
        kontrolli(hahmot, tapahtuma)
        piirtaminen(naytto, hahmot)

main()

Haluaisin, että hahmo ei voi liikkua näytön rajojen ulkopuolelle. Miten se pitäisi tehdä?

Teuro [11.07.2020 19:07:00]

#

Hahmon koko olkoon 76 pikseliä leveyä ja 68 pikseliä korkea. Tällöin hahmon näkökulmasta liikkumisalueen rajat ovat. (38, 34), (602, 34), (602, 606), (38, 606). Nyt sinun tulee tarkistaa ennen hahmon liikuttamista meneekö hahmon keskipisteen sijainti noiden reunaehtojen ulkopuolelle. x-suunnassa sallittu alue on siis 38 - 602 ja y-suuntaan hahmo saa liikkua välillä 34 - 606. Tarkistusta varten kannattaa varmaan kirjoittaa oma funktionsa.

Siili00 [11.07.2020 19:25:40]

#

Kiitos

jalski [11.07.2020 20:28:58]

#

Kannattaa kiinnittää huomiota koodin rakenteeseen. Lataat nyt esimerkiksi piirrettävän kuvan uudestaan jokaisella ruudun päivityksellä ihan turhaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta