OOP Pygame player_x Variable ändert sich, aber keine Änderungen in der Anzeige

Einfach einfach

Hallo, ich bin ziemlich neu in der Programmierung im Allgemeinen, also könnte dies ein ziemlich dummes Problem sein. Ich versuche gerade, mehr über OOP zu lernen, indem ich ein Spiel mache.

Während sich der Wert von player_x aus bestimmten Gründen ändert, bewegt er sich nicht wie erwartet.

main.py

import pygame, settings, obstacles, npc, player
from utils import *
pygame.init()

window = pygame.display.set_mode((settings.WIDTH, settings.HEIGHT))
FPS = pygame.time.Clock()

player = player.Player(window)

Loop

run = True

while run:
    FPS.tick(settings.FPS)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                settings.PLAYER_X -= 5
                print(settings.PLAYER_X)

    pygame.display.update()

player.py

import pygame, settings
pygame.init()

class Player():
    def __init__(self, window) -> None:
        pygame.draw.rect(window, settings.OLIVE, (settings.PLAYER_X, settings.PLAYER_Y, settings.PLAYER_WIDTH, settings.PLAYER_HEIGHT)) # (x, y, width, height)
    
    def player_control(self):
        pass

settings.py

WIDTH = 1440
HEIGHT = 720
FPS = 60

PLAYER_X = 100
PLAYER_Y = 200
PLAYER_WIDTH = 50 
PLAYER_HEIGHT = 50

OLIVE = (136, 196, 23)
ytung-dev

Um Ihre zu verschieben player, müssen Sie:

  • Rendern Sie Ihre playerin jeder While-Schleife
  • Rendern Sie Ihre playermit dem aktualisiertenPLAYER_X

Und um dies zu erreichen, müssen Sie ein paar Änderungen in Ihrem Code vornehmen:

  1. Erstellen Sie eine Funktion zum Rendern in Ihrem player.pyund rufen Sie sie in der Schleife auf, anstatt ein playerin zu rendern __init__, das nur einmal aufgerufen wird.

  2. settings.PLAYER_XNur einmal im __init__in referenzieren player.pyund bei Tastendruck die Variable des playerObjekts aktualisieren.

  3. Rendern Sie am Ende jeder Schleife das playerObjekt.


player.py

import pygame, settings
pygame.init()

class Player():
    def __init__(self, window) -> None:
        self.window = window
        self.color = settings.OLIVE
        self.X = settings.PLAYER_X
        self.Y = settings.PLAYER_Y
        self.W = settings.PLAYER_WIDTH
        self.H = settings.PLAYER_HEIGHT
        self.render()
    
    def render(self):
        pygame.draw.rect(self.window, self.color, (self.X, self.Y, self.W, self.H)) 
        
    def player_control(self):
        pass

main.py

import pygame, settings, player
pygame.init()

window = pygame.display.set_mode((settings.WIDTH, settings.HEIGHT))
FPS = pygame.time.Clock()

player = player.Player(window)

run = True

while run:
    FPS.tick(settings.FPS)
    
    for event in pygame.event.get():
        
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                player.X -= 5
                print(player.X)
    window.fill((0, 0, 0))
    player.render()
    pygame.display.update()

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Reagiere auf Statusänderungen, aber der Hintergrund ändert sich nicht

Pygame-Anzeige ändert sich nicht

Die Anzeige select2 aktualisiert den Beschriftungstext nicht, aber der Wert ändert sich

ListView zeigt keine Änderungen an, bis sich der Fokus nach notifyDataSetChanged ändert

Ändert sich die einer anderen Variablen zugewiesene Variable (Änderungen der ursprünglichen Variablen)? Ändert sich die zweite Variable?

Pfad ändert sich, rendert aber keine Komponente

Watchify erkennt Änderungen, aber die Ausgabe ändert sich nicht

Datei in SVN als Geändert markiert, aber keine Änderungen

Der Status ändert sich, aber in Xstate werden keine Übergänge ausgelöst

Der Status ändert sich, aber die Datentabelle zeigt keine neuen Daten an

Wenn sich der Pfad in proxy.conf.json geändert hat, erkennt die Java-App keine Änderungen

Element ändert sich von Anzeige: keine zu Anzeige: Block Selen Python

Aurelia Store - UI-Anzeige, dass sich der Status ändert

Der Schieberegler bewegt sich nicht, aber der Wert ändert sich

selectinput ändert sich, aber keine Reaktion vom Ausgang

Python Temporäre Variable, die sich mit der tatsächlichen Variablen ändert; Schlangenspiel Pygame

Führen Sie die Funktion in useeffect aus, wenn sich der Status nach 1 Sekunde ändert, wenn sich keine anderen Änderungen ergeben

Holen Sie sich das Bildarray von der Anzeige im Pygame

Jenkins - Änderungen sind in SVN vorhanden, aber Jenkins zeigt keine Änderungen an, aber der Build wird ausgeführt

Es wird versucht, die Variable x-position zu ändern, aber nur der Wert ändert sich, nicht die Position des ctx

Kann das Dataset aktualisieren, aber keine Änderungen an der Datenbank vornehmen

Neuzuweisung der Variablen der Python-Module, aber die Funktion, die diese Variable als Standard verwendet, ändert sich nicht

Die Variable in der Einzelinstanzklasse ändert sich nicht

Die Sommerzeit hat sich in meinem Land geändert, aber C # / Windows erkennt die Änderungen nicht

[C ++] Der Wert hat sich geändert, obwohl seit der ersten Deklaration keine Variable mehr zugewiesen wurde

ngClass-Variable ändert sich, aber die Klasse bleibt gleich

Bootstrap Vue Custom Sass kompiliert, ändert aber keine Variable

Der Redux-Status ändert sich, sollte es aber nicht

Git: verzweigt, aber der übergeordnete Zweig hat sich geändert

TOP Liste

heißlabel

Archiv