• 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
659 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 (344,100 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 (344,100 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 54 wizyt
pytanie zadane 4 sierpnia 2023 w Python przez Kubas23 Użytkownik (630 p.)
+1 głos
1 odpowiedź 252 wizyt
pytanie zadane 20 czerwca 2023 w Python przez Bondrusiek Maniak (61,370 p.)
0 głosów
0 odpowiedzi 264 wizyt
pytanie zadane 29 stycznia 2023 w Python przez Kubas23 Użytkownik (630 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...