我创造了一个简单的游戏(它实际上不是一个游戏,只是一个在屏幕上移动的矩形(我希望))。我对pygame很新,不知道我的代码出错了。
import os, sys
import pygame
from pygame.locals import *
pygame.init()
mainClock = pygame.time.Clock()
WINDOWWIDTH = 400
WINDOWHEIGHT = 400
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption("Avoid!")
BLACK = (0, 0, 0)
RED = (255, 0, 0)
WHITE = (255, 255, 255)
player = pygame.Surface((50, 50))
moveLeft = False
moveRight = False
moveUp = False
moveDown = False
MOVESPEED = 6
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_LEFT:
moveRight = False
moveLeft = True
if event.key == K_RIGHT:
moveLeft = False
moveRight = True
if event.key == K_UP:
moveDown = False
moveUp = True
if event.key == K_DOWN:
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT:
moveRight = False
moveLeft = True
if event.key == K_RIGHT:
moveLeft = False
moveRight = True
if event.key == K_UP:
moveDown = False
moveUp = True
if event.key == K_DOWN:
moveUp = False
moveDown = True
windowSurface.fill(WHITE)
if moveDown and player.bottom < WINDOWHEIGHT:
player.top += MOVESPEED
if moveUp and player.top > 0:
player.top -= MOVESPEED
if moveLeft and player.left > 0:
player.left -= MOVESPEED
if moveRight and player.right < WINDOWWIDTH:
player.right +=MOVESPEED
windowSurface.blit(player)
我尝试运行时收到此错误消息:
TypeError: Required argument 'dest' (pos 2) not found
谁能告诉我哪里出错了?
答案 0 :(得分:2)
你的一个函数调用缺少一个参数。错误的行号将告诉您哪一行。
答案 1 :(得分:0)
目前,玩家是一个表面对象。为了像在第二组到最后一组线中那样移动它,你需要使它成为一个矩形(角度)。在当前说的
行player = pygame.Surface((50, 50))
你想要放
player = pygame.Rect(0, 0, 50, 50)
(参数为left,top,width,height)。
你必须在表面上制作别的东西,也许是玩家:
playerSO = pygame.Surface((50, 50))
在最后一行,您需要输入
windowSurface.blit(playerSO, player)
第一个参数是Surface Object,第二个参数是rect。这些修改将删除您的错误,但程序可能仍会有其他错误,您将不得不自己修复。祝你好运!