我想做一个游戏,遇到了一个问题。。。我不能移动矩形,它也不会给我一个错误代码?。。我认为问题是它不断地在while循环中使矩形重复出现。。。但我不知道该怎么解决。。
#! /usr/bin/env python
import os
import random
import pygame
import math
import sys
os.environ["SDL_VIDEO_CENTERED"] = "1"
screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption("LEVEL 2 = Find the Correct Square!")
clock = pygame.time.Clock()
class Player(object):
def __init__(self):
self.rect = pygame.draw.rect(screen, (0, 0, 128), (64, 54, 16, 16))
def handle_keys(self):
key = pygame.key.get_pressed()
dist = 1
if key[pygame.K_LEFT]:
self.rect.move(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move(1, 0)
if key[pygame.K_UP]:
self.rect.move(0, -1)
if key[pygame.K_DOWN]:
self.rect.move(0, 1)
def draw(self, surface):
pygame.draw.rect(screen, (0, 0, 128), (64, 54, 16, 16))
pygame.init()
player = Player()
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
running = False
screen.fill((255, 255, 255))
player.draw(screen)
player.handle_keys()
pygame.display.update()
clock.tick(40)
move
只需返回一个新的矩形而不改变变量,因此使用move_ip
移动到位。我已经修改了你的代码,以便1)它工作(必不可少!:)和2)可以使用[Esc]退出脚本并退出,而不会陷入其中(也很重要!)我也给了你的“dist”变量生命(它没有被使用)来设置10像素的位移。但是,仍然有一些重要的事情需要添加,例如检查并防止小矩形从窗口中取出等
您需要对
Player
类进行一些更改。您要么需要将self.rect
重新分配给self.rect.move()
的结果,要么使用就地变量self.rect.move_ip()
矩形将为每个按键移动一次。如果你想在按住键的时候继续移动,你需要去掉主循环的一部分
相关问题 更多 >
编程相关推荐