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

Python pygame - skakanie

Cloud VPS
0 głosów
936 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 Mentor (354,120 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 Mentor (354,120 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,400 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,400 p.)
Jaki kurs ?
komentarz 22 lipca 2019 przez Patryk01 Obywatel (1,270 p.)
Tech with Tim

Podobne pytania

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

93,464 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,844 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

Kursy INF.02 i INF.03
...