• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PyGame, pierwsza aplikacja

0 głosów
552 wizyt
pytanie zadane 19 lipca 2019 w Python przez Patryk01 Obywatel (1,270 p.)

Witam, dzisiaj zacząłem naukę pygame i napotkałem problem przy tworzeniu pierwszej apki. Nie mam pojęcia co zrobiłem źle, mógłby ktoś pomóc? Proszę o wyrozumiałość i oto kod:

import pygame


class Player:

    radius = 10
    x = 20
    y = 500
    vel = 5

    isJump = False
    m = 8
    jump_vel = 5

    def move_left(self):
        self.x -= self.vel

    def move_right(self):
        self.x += self.vel

    def jump(self):
        self.isJump = True

    def update(self):
        if self.isJump:
            if self.jump_vel > 0:
                f = (0.5 * self.m * self.jump_vel ** 2)
            else:
                f = -(0.5 * self.m * self.jump_vel ** 2)

            self.y -= f

            if self.y >= 500:
                self.jump_vel = 5
                self.y = 500
                self.isJump = False


class App:

    windowWidth = 800
    windowHeight = 600

    def __init__(self):
        self.running = True
        pygame.init()
        self.window = pygame.display.set_mode((self.windowWidth, self.windowHeight))
        self.player = Player()
        pygame.display.set_caption("First game ever guys")
        self.execute()

    def quit(self):
        self.running = False
        pygame.quit()

    def execute(self):
        while self.running:

            pygame.time.delay(25)
            keys = pygame.key.get_pressed()
            if keys[pygame.K_ESCAPE]:
                self.quit()

            if keys[pygame.K_RIGHT]:
                self.player.move_right()

            if keys[pygame.K_LEFT]:
                self.player.move_left()

            if keys[pygame.K_SPACE] or keys[pygame.K_UP]:
                self.player.jump()

            self.player.update()

            pygame.draw.circle(self.window, (255, 0, 0), (self.player.x, self.player.y), self.player.radius)
            pygame.display.update()


app = App()

 

1
komentarz 19 lipca 2019 przez profesorek96 Szeryf (91,400 p.)
Chętnie pomożemy, jednak czy mógłbyś nam zdradzić na czym polega problem.
komentarz 19 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Gdy próbuję to włączyć program się wysypuje (okno się zawiesza i nic nie potrafię zrobić).
1
komentarz 19 lipca 2019 przez profesorek96 Szeryf (91,400 p.)
Masz obsługę zdarzeń ?
komentarz 19 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
nie mam pojęcia co to jest obsługa zdarzeń :p
1
komentarz 20 lipca 2019 przez profesorek96 Szeryf (91,400 p.)

Tutaj masz najprostszy program z biblioteka pygame

import pygame
 
pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False
 
while not done:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        done = True
         
        pygame.display.flip()

Zdarzenie to no jakieś wydarzenie na które ma reagować okno, np. kliknięcie myszka, wciśnięcie klawisza. Jeśli nie dodasz obsługi zdarzeń twój program się zawiesi.

1
komentarz 20 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
O teraz, gdy dodałem obsługę zdarzeń program się nie zawiesił. Co prawda i tak wywaliło zaraz błąd, ale z tym sobie już poradzę. Dzięki wielkie :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 558 wizyt
pytanie zadane 29 stycznia 2023 w Python przez Kubas23 Użytkownik (630 p.)
0 głosów
0 odpowiedzi 496 wizyt
pytanie zadane 27 października 2022 w Python przez Podlasianin Początkujący (400 p.)
0 głosów
1 odpowiedź 844 wizyt
pytanie zadane 6 sierpnia 2019 w Python przez akinhet Nowicjusz (170 p.)

93,775 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...