基本的Pygame游戏

时间:2011-11-28 02:57:56

标签: python pygame

我创造了一个简单的游戏(它实际上不是一个游戏,只是一个在屏幕上移动的矩形(我希望))。我对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

谁能告诉我哪里出错了?

2 个答案:

答案 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。这些修改将删除您的错误,但程序可能仍会有其他错误,您将不得不自己修复。祝你好运!