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

question-closed Wystrzeliwanie pocisku - Pygame

VPS Starter Arubacloud
0 głosów
496 wizyt
pytanie zadane 3 listopada 2021 w Nasze projekty przez Karp.exe Początkujący (340 p.)
zamknięte 21 czerwca 2022 przez Karp.exe

Witam robię prostą grę w pythonie w bibliotece Pygame. Aktualnie robię prostą fizykę strzelania w, której chodzi o to, aby po naciśnięciu lewego ctrl postać wystrzeliwuje 4 pociski w górę, w dół, w lewo i prawo i jak dotknie wroga to dodaje punkt i się usuwa, a jak wypadnie po za mapę to też się usuwa. Jednakże mam problem, mógłby mi ktoś pomóc, aby nie było żadnego błędu.

import pygame

import os

pygame.font.init()

pygame.mixer.init()

width, height = 700, 700

WHITE = 255, 255, 255

BLACK = 0, 0, 0

RED = 255, 0, 0

GREEN = 0, 255, 0

score = 0

MAX_BULLETS = 10

HIT = pygame.USEREVENT + 1

SHOOT = pygame.USEREVENT + 2

WIN = pygame.display.set_mode((width, height))

NAME = pygame.display.set_caption("FIRST GAME")

FPS = 60

CREATURE = pygame.Rect(height//5, 100, 100, width//5)

BORDER = pygame.Rect(height, 0, 1, width)

ENEMY = pygame.Rect(height//2, 350, 90, width//5)

 

def color_window(bullets):

    WIN.fill(WHITE)

    pygame.draw.rect(WIN, BLACK, CREATURE)

    pygame.draw.rect(WIN, RED, ENEMY)

    pygame.display.update()

def creature_movement(key_pressed, CREATURE, score):

    if key_pressed[pygame.K_w] and CREATURE.y - 5 > 0:

        CREATURE.y -= 5

    if key_pressed[pygame.K_s] and CREATURE.y + 5 < 600:

        CREATURE.y += 5  

    if key_pressed[pygame.K_a] and CREATURE.x - 5 > 0:

        CREATURE.x -= 5

    if key_pressed[pygame.K_d] and CREATURE.x + 5 + CREATURE.width < 700:

        CREATURE.x += 5

def handle_bullets(bullets, CREATURE):

    key_pressed = pygame.key.get_pressed()

    if key_pressed(pygame.K_LCTRL):

        UP, DOWN, LEFT, RIGHT = pygame.Rect(height//5, 0, 10, width//5)

        for event in pygame.event.get:

            pygame.post.event(event.Event(SHOOT))

            if event.type == SHOOT:

                UP = WIN.blit(CREATURE.x, CREATURE.y)

                DOWN = WIN.blit(CREATURE.x, CREATURE.y)

                LEFT = WIN.blit(CREATURE.x, CREATURE.y)

                RIGHT = WIN.blit(CREATURE.x, CREATURE.y)

                for UP in handle_bullets:

                    UP.y -= 7

                    if UP < width:

                        UP.remove

                    if UP.colliderect(ENEMY):

                        score + 1

                        UP.remove

                for DOWN in handle_bullets:

                    DOWN.y += 7

                    if DOWN.y > width:

                        DOWN.remove

                    if DOWN.colliderect(ENEMY):

                        score + 1

                        DOWN.remove

                for LEFT in handle_bullets:

                    LEFT.x -= 7

                    if LEFT.x < height:

                        LEFT.remove

                    if LEFT.colliderect(ENEMY):

                        score + 1

                        LEFT.remove

                for RIGHT in handle_bullets:

                    RIGHT.x -= 7

                    if RIGHT.x > width:

                        RIGHT.remove

                    if RIGHT.colliderect(ENEMY):

                        score + 1

                        RIGHT.remove

def main():

    Clock = pygame.time.Clock()

    run = True

    while run:

        key_pressed = pygame.key.get_pressed()

        bullets = []

        Clock.tick(FPS)

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                run = False

                pygame.quit()

 

        creature_movement(key_pressed, CREATURE, score)

        handle_bullets(bullets, CREATURE)

        color_window(bullets)

 

if __name__ == "__main__":

    main()

 

komentarz zamknięcia: z

2 odpowiedzi

0 głosów
odpowiedź 3 listopada 2021 przez MatiZeb Obywatel (1,160 p.)
key_pressed to nie funkcja, więc w linii 73 zamień na

if key_pressed == pygame.K_LCTRL:
0 głosów
odpowiedź 3 listopada 2021 przez VBService Ekspert (251,170 p.)

Linia 73 

if key_pressed(pygame.K_LCTRL):

na np.

if key_pressed[pygame.K_LCTRL]

 

Linia 77

for event in pygame.event.get:

na

for event in pygame.event.get():

Linia 79

pygame.post.event(event.Event(SHOOT))

na

pygame.event.post(event.Event(SHOOT))

 

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,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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!

...