如何解决如何在pygame中加载图片?
所以我是一名新程序员,需要2个星期的学习时间。我想知道如何使用Pygame 1.9.6正确加载图像。我正在尝试掷骰子,无论掷骰子会加载正确的图像。但是,我需要知道如何首先加载图像。
现在,这就是我到目前为止提出的全部内容:
import pygame as p
WIDTH = HEIGHT = 250
DIMENSION = 2
SQ_SIZE = HEIGHT // DIMENSION
IMAGES = {}
class DiceState:
def __int__(self):
self.Dice = ['d1','d2','d3','d4','d5','d6']
def drawBackground(screen):
colors = [p.Color("black")]
for d in range(DIMENSION):
color = colors
p.draw.rect(screen,color,p.Rect(SQ_SIZE,SQ_SIZE))
def loadImages():
dice_sides = ['d1','d6']
for dice_side in dice_sides:
IMAGES[dice_side] = p.transform.scale(p.image.load("images/" + dice_side + ".png"),SQ_SIZE)
def main():
p.init()
screen = p.display.set_mode((WIDTH,HEIGHT))
screen.fill(p.Color("white"))
ds = DiceState
loadImages()
running = True
if __name__ == "__main__":
main()
d1表示数字1的骰子1。d2 =数字2
我尝试过的是这是我第一次尝试这样做,所以我不知道该怎么做。我知道我不应该来这个网站,并且麻烦大家解决我的问题。但是我只需要帮助。我也想像你们一样学习。因此,如果可以,请帮助我。
解决方法
您正在加载图像,但是将错误的参数传递给了转换。看documentation on transform,您需要传递一个( width,height )
,而您现有的代码只是传递一个数字常数SQ_SIZE
。
将很多函数调用嵌入在一起并没有真正的好处。将每个调用分隔成命名精美的变量,以使您的代码更具自记录性:
def loadImages():
global IMAGES,SQ_SIZE
dice_sides = ['d1','d2','d3','d4','d5','d6']
for dice_side in dice_sides:
image_path = os.path.join( "images",dice_side + ".png" )
face_image = p.image.load( image_path ).convert()
target_size = ( SQ_SIZE,SQ_SIZE )
sized_image = p.transform.scale( face_image,target_size )
IMAGES[dice_side] = sized_image
最好使用os.path.join()
创建路径,因为它会自动处理所有操作系统路径依赖项。
您是否打算将loadImages()
用作DiceState
类的成员函数?
假设您拥有图片“ d1.png” ...“ d6.png”,则可以像这样设置IMAGES变量:
os.chdir('images')
IMAGES = {'d'+side:p.transform.scale(p.image.load('d'+side+'.png').convert(),SQ_SIZE) for side in range(1,7)}
然后摆脱
for dice_side in dice_sides:
IMAGES[dice_side] = p.transform.scale(p.image.load("images/" + dice_side + ".png"),SQ_SIZE)
在loadImages()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。