pycharm怎么给画出的图像创建surface对象?

import pygame,sys
pygame.init()
speed = [1,1]
black = 0,0,0
white = 255,255,25+
size = width,height = 600,400
screen = pygame.display.set_mode(size)
pygame.display.set_caption('pyzrun')
ball = pygame.draw.circle(screen,white,(400,300),30)
fsp = 300
fspclock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    ballrect = ball.move(speed[0],speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0]=-speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1]=-speed[1]

    screen.fill(black)
    screen.blit(ball)
    pygame.display.update()
    fspclock.tick(fsp)
ball = pygame.draw.circle(screen,white,(400,300),30)

#画圆实现的是rect对象

screen.blit(ball)

#blit函数中期望的是Surface对象,而ball是rect对象,故产生报错

解决方案1:ball可以引入一个surface对象来作为blit的参数,比如pygame.image.load("D:\\xx\xx.png")    随后该图片的坐标rect数据等可以使用ballrect = ball.get_rect()来获取;用引入的图片来替代自己画圆

参考代码:

import pygame,sys

pygame.init()

speed = [1,1]

black = 0,0,0

white = 255,255,255

size = width,height = 600,400

screen = pygame.display.set_mode(size)

 

pygame.display.set_caption('pyzrun')


 

#ball = pygame.draw.circle(screen,white,(400,300),30,1)

ball = pygame.image.load('C:\\xx\\xx\\xx\\Aqua Ball.png')

ballrect = ball.get_rect()


 

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            sys.exit()

    #ballrect = ball.move(speed[0],speed[1])

    ballrect = ballrect.move(speed)

    if ballrect.left < 0 or ballrect.right > width:

        speed[0]=-speed[0]

    if ballrect.top < 0 or ballrect.bottom > height:

        speed[1]=-speed[1]

 

    screen.fill(black)

    

    screen.blit(ball,ballrect)

    pygame.display.flip()

 

解决方案2:可以自己画圆,但是要注意pygame第三方库中的函数使用要求,在使用时注意函数的参数要求等