【发布时间】:2020-07-11 14:20:11
【问题描述】:
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()
您好,我正在使用 Pygame 制作一个 OOP 游戏,其中一个方块将由用户控制并沿着地板移动,跳过障碍物和其他敌方方块。
我希望它的工作方式:
当我按下 K_LEFT 时,dirX = 1 将添加到pos 的 x 坐标,因此正方形的 x 位置将被更新,正方形将开始向右滑动。当我按下dir = -1时,方块会向左移动。
它的工作方式: 没有
我认为问题在于主立方体的pos 似乎没有更新,而dirX 从0 更新到1 并返回到0。
我猜想改变__init__()函数下的变量值是我正在做的,或者可能是完全错误的。
这是让我的代码按照我尝试的方式工作的任何方式,还是完全错误的方式,还有其他方式?
我正在学习 OOP 和 python,任何关于最佳实践的额外建议或链接,与此代码相关,将不胜感激。
谢谢。
【问题讨论】:
标签: python python-3.x oop pygame