Основная игра Pygame - PullRequest
       13

Основная игра Pygame

2 голосов
/ 28 ноября 2011

Я создал простую игру (на самом деле это не игра, а прямоугольник, который перемещается по экрану (надеюсь)).Я довольно новичок в 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 ]

2 голосов
/ 28 ноября 2011

В одном из ваших вызовов функций отсутствует аргумент.Номер строки ошибки скажет вам, какая из них.

0 голосов
/ 02 сентября 2012

В настоящее время игрок является поверхностным объектом. Чтобы переместить его так, как вы делаете это во второй-последней группе линий, вам нужно сделать его прямоугольным (углом). На линии, которая в настоящее время говорит

player = pygame.Surface((50, 50))

вы захотите поставить

player = pygame.Rect(0, 0, 50, 50)

(аргументы left, top, width, height).

Вам придется сделать что-то еще на поверхности, возможно, игрок SO:

playerSO = pygame.Surface((50, 50))

на последней строке, вам нужно будет поставить

windowSurface.blit(playerSO, player)

Первый аргумент - это объект Surface, а второй - прямоугольник. Эти изменения устранят вашу ошибку, но в программе, вероятно, все еще будут другие ошибки, которые вам придется исправить самостоятельно. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...