import pygame
import random
import math
import sys
screenWidth = 1200
screenHeight = 600
class Hero:
def __init__(self, pos):
self.pos = pos
self.width = 30
self.height = 30
self.color = (0, 0, 0)
self.dirX = 0
self.dirY = 0
def move(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
self.dirX = 1
elif event.key == pygame.K_LEFT:
self.dirX = -1
def draw(self, display):
x = self.pos[0]
y = self.pos[1]
pygame.draw.rect(display, self.color, (x + self.dirX, y + self.dirY, self.width, self.height))
print(self.pos, self.dirX, self.dirY)
def jump(self):
pass
def die(self):
pass
class Enemy:
pass
class Background:
pass
class Obstacles:
pass
class Camera:
pass
def score():
pass
def create(w, h):
display = pygame.display.set_mode((w, h))
display.fill((255, 255, 255))
#create background
#create Obstacles
#create Hero
heroOne = Hero([150, 450])
heroOne.move()
heroOne.draw(display)
#create Enemy
pygame.display.update()
def main():
pygame.init()
clock = pygame.time.Clock()
running = True
while running:
clock.tick(300)
create(screenWidth, screenHeight)
main()
Привет, я делаю OOP игру с использованием Pygame, в которой квадрат будет управляться пользователем и двигаться по полу, перепрыгивать через препятствия и другие вражеские квадраты.
Путь Я хочу, чтобы он работал: когда я нажимаю K_LEFT, dirX = 1
, он добавляется к x-координате pos
, и, следовательно, x-позиция квадрата будет обновлена, и квадрат начнет двигаться вправо. Когда я нажимаю dir = -1
, квадрат переместится влево.
Как это работает: Нет
Я думаю, что проблема в pos
основного куба не кажется update, а dirX
обновляется с 0
до 1
и возвращается к 0
.
Я думаю, изменение значений переменных в функции __init__()
выполняется, когда я это делаю или, возможно, это совершенно неверно.
Это какой-то способ заставить мой код работать так, как я пытаюсь это сделать, или это совершенно неправильный способ, и есть другой способ?
Я изучаю OOP и python, я буду очень признателен за любые дополнительные советы или ссылки относительно передовых методов, относящихся к этому коду.
Спасибо.