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

Python pygame - skakanie

VPS Starter Arubacloud
0 głosów
736 wizyt
pytanie zadane 22 lipca 2019 w Python przez Patryk01 Obywatel (1,270 p.)

Witam, wczoraj zacząłem uczyć się pygame i przy próbie zrobienia funkcji na skakanie okazuje się, że działa, ale gdy trzymam cały czas spację. Gdy puszczam to obiekt pozostaje w miejscu, w którym skończył, a jak wiadomo wolałbym aby dokończył skok.. Oto kod:

import pygame


class Player:

    x = 20
    y = 500
    vel = 5

    radius = 10

    jump_vel = 5
    m = 8
    isJumping = False

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

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

    def jump(self):
        self.isJumping = True

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

                self.y -= f
                self.jump_vel -= 0.5

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


class App:

    windowWidth = 500
    windowHeight = 600

    def __init__(self):
        pygame.init()
        self.win = pygame.display.set_mode((self.windowWidth, self.windowHeight))
        pygame.display.set_caption("My first game")
        self.isRunning = True
        self.player = Player()
        self.run()

    def draw_player(self):
        self.win.fill((0, 0, 0))
        pygame.draw.circle(self.win, (250, 0, 0), (int(self.player.x), int(self.player.y)), int(self.player.radius))

    def run(self):
        while self.isRunning:

            pygame.time.delay(10)
            keys = pygame.key.get_pressed()

            for event in pygame.event.get():
                if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]:
                    self.isRunning = False

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

            if keys[pygame.K_RIGHT]:
                if self.player.x < (self.windowWidth - self.player.radius - self.player.vel):
                    self.player.move_right()

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

            self.draw_player()
            pygame.display.update()


app = App()
pygame.quit()

 

1 odpowiedź

0 głosów
odpowiedź 22 lipca 2019 przez adrian17 Ekspert (348,260 p.)

że działa, ale gdy trzymam cały czas spację

Bo wywołujesz update() tylko, gdy spacja jest wciśnięta.

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

 

komentarz 22 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Wiem, ale pytanie jak powinienem to zrobić, żeby po naciśniętej spacji skok się ukończył?
komentarz 22 lipca 2019 przez adrian17 Ekspert (348,260 p.)
No... wywołując `update()` w każdej klatce, bezwarunkowo.
komentarz 22 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Dobra, czasem wydaje mi się, że jestem upośledzony, dzięki za pomoc :)
komentarz 22 lipca 2019 przez profesorek96 Szeryf (91,420 p.)
Nie jesteś uposledzony. Programista wanie w brew pozorom nie jest takie proste. Z jakich kursów korzystasz przy nauce pygame ?
komentarz 22 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Dotychczas uczyłem się Data Science na codecademy, ale zaciekawiło mnie pygame więc tak z czystej ciekawości zobaczyłem kurs na youtube..
komentarz 22 lipca 2019 przez profesorek96 Szeryf (91,420 p.)
Jaki kurs ?
komentarz 22 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Tech with Tim

Podobne pytania

0 głosów
0 odpowiedzi 79 wizyt
pytanie zadane 4 sierpnia 2023 w Python przez Kubas23 Użytkownik (630 p.)
+1 głos
1 odpowiedź 336 wizyt
pytanie zadane 20 czerwca 2023 w Python przez Bondrusiek Maniak (61,410 p.)
0 głosów
0 odpowiedzi 329 wizyt
pytanie zadane 29 stycznia 2023 w Python przez Kubas23 Użytkownik (630 p.)

92,831 zapytań

141,771 odpowiedzi

320,817 komentarzy

62,159 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...