Pygame 内存错误 [英] Pygame MemoryError
本文介绍了Pygame 内存错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了一个简单的块收集程序,在我添加声音之前,它一直运行得很好.然后我突然收到了一个 MemoryError,这是我以前从未见过的.
HI i wrote a simple block collecting program that was working just fine and dandy until i added sound. Then all the sudden i get a MemoryError which is something ive never seen before.
我的代码与似乎是问题的声音(wav)文件一起附加.任何帮助都会很棒,是的,代码和声音以及大量其他程序、图片和东西都在同一个文件夹中.
my code is attached along with the sound(wav) file that seem to be the problem. Any help would be great, and yes the code and the sound are in the same folder along with tons of other programs and pictures and stuff.
import pygame
import random
import pygame.mixer
winsound=pygame.mixer.Sound('winning.wav')
collectsound=pygame.mixer.Sound('blip.wav')
#Define colors
black = ( 0, 0, 0)
white = ( 255, 255, 255)
red = ( 255, 0, 0)
#Class represents ball, derives from Sprite class in pygame
class Block(pygame.sprite.Sprite):
#Constructor. Pass in the color of the block and its x and y pos.
def __init__(self, color, width, height):
# Call the parent class (Sprite) constructor
pygame.sprite.Sprite.__init__(self)
# Create an image of the block, and fill it with a color.
# This could also be an image loaded from the disk.
self.image = pygame.Surface([width, height])
self.image.fill(color)
# Fetch the rectangle object that has the dimensions of the image
# image.
# Update the position of this object by setting the values
# of rect.x and rect.y
self.rect = self.image.get_rect()
# Initialize Pygame
pygame.init()
winsound=pygame.mixer.Sound('winning.wav')
collectsound=pygame.mixer.Sound('blip.wav')
#Set width and height of screen
screen_width=700
screen_height=400
screen=pygame.display.set_mode([screen_width, screen_height])
pygame.display.set_caption('Block Attack!')
#List of sprites. Each block is added to this list. List is managed by RenderPlain()
block_list=pygame.sprite.RenderPlain()
#List of every sprite
all_sprites_list=pygame.sprite.RenderPlain()
for i in range(50):
#create instance of block
block=Block(black,20,14)
#set random location for the block
block.rect.x=random.randrange(screen_width)
block.rect.y=random.randrange(screen_height)
#Add the block to the list of objects
block_list.add(block)
all_sprites_list.add(block)
#Create red player block
player=Block(red,20,15)
all_sprites_list.add(player)
done=False
clock=pygame.time.Clock()
score=0
#-------Main Program Loop-------
while done==False:
for event in pygame.event.get(): #User did something
if event.type==pygame.QUIT: #If user clicked close
done=True #Flag that we are done so we exit this loop
#Clear screen
screen.fill(white)
#Get current mouse position. This returns the position as a list of two numbers
pos=pygame.mouse.get_pos()
#Fetch x and y out of list, like letters out of strung, set player object
#to location of the mouse
player.rect.x=pos[0]
player.rect.y=pos[1]
#Check if player block has collidied with anything...were still in a loop
block_hit_list=pygame.sprite.spritecollide(player, block_list, True)
#Check list of collisions.
if len(block_hit_list) >0:
score +=len(block_hit_list)
print( score )
collectsound.play()
elif score==50:
print('YOU WIN!!
')
done=True
winsound.play()
#Draw all the sprites
all_sprites_list.draw(screen)
#Limit to 60 frames per second
clock.tick(60)
#Update screen
pygame.display.flip()
pygame.quit()
所以当我运行代码时,我得到了错误
So when i run the code i get the error
Traceback (most recent call last):
File "/Users/zackbaker/Desktop/PythonFolder/BlockCollecter.py", line 4, in <module>
sound=pygame.mixer.Sound('winning.wav')
MemoryError
推荐答案
我认为你必须先初始化混音器,然后才能使用声音.
I think you have to initialize the mixer first, before using sounds.
pygame.mixer.init(44100, -16, 2, 2048)
# Read the docs to know what these numbers are
这篇关于Pygame 内存错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文