OMG请帮忙

这是我刚刚开始的程序,我遇到的问题是我正在尝试将其加载以加载图像文件sand1,并带有eval(loader)= pygame.image.load(loader)
因为装载机是" Sand1"的euqual,但它不会加载它.如果我将其设置为loader = pygame.image.load(Loader),则将图像设置为变量加载程序.因此,我基本上试图设置一个等于表面变量的字符串.我不想为每个图像sand1 = pygame.image.image.image.load(" sand1.bmp"),因为我希望完成后会有很多.
因此,如果您不明白我想从中得到什么,请告诉我,很难解释.
导入pygame
从pygame.locals Import *
pygame.init()
屏幕= pygame.display.set_mode((150,150))
背景= pygame.surface(screet.get_size())
pygame.display.set_caption("帝国策略")
pygame.key.set_repeat(1,1)
def LoadMaterial():
loader =加载 +" 1"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" 2"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" 3"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" 4"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" R"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" L"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" T"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" D"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" TR"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" TL"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" br"
eval(loader)= pygame.image.load(Loader)
loader =加载 +" bl"
eval(loader)= pygame.image.load(Loader)
加载="砂"
负载材料()
pygame.display.update()
重复= true
重复时:
对于pygame.event.get()中的活动:
如果event.type ==(退出):
pygame.quit()
if(event.type == keydown):
if(event.key == k_escape):
pygame.quit()
如果event.type == mousebuttondown:
如果event.button == 1:
位置= pygame.mouse.get_pos()
_______________________________________________________________________________________________
寻找最后一刻的购物交易?
与Yahoo!快速找到它们搜索. http://tools.search.yahoo.com/newsea...egory=shopping

# 回答1


嗨,凯蒂,
请尝试编写更多描述性主题行. " OMG请帮忙"
让您听起来像14 Y.O.刚刚破裂的呼吸呼气女孩
钉子.大概3/4的常客可以 *帮助甚至没有阅读
您的帖子是因为主题行.
凯蒂·史密斯(Katie Smith)在2007年12月22日星期六15:16:53 -0800写道:
99%的时间,当您发现自己想写下类似的东西时:
sand1 = pygame.image.load(" sand1.bmp")
sand2 = pygame.image.load(" sand2.bmp")
sand3 = pygame.image.load(" sand3.bmp")
...
sand99 = pygame.image.load(" sand99.bmp")
(或类似)您以错误的方式进行操作.
更好的方法是做这样的事情:
沙子= [无]
文件名=" sand%d.bmp"#文件名模板
对于我在范围(1,100)中的我:#从1而不是0开始
name = fileen ame%i
sands.append(pygame.image.load(name))
运行该代码后,Sands就是保留所有图像的列表
需要.
(注意:砂列表的第一项无,因为列表为
从0编号,但您的沙子是从1编号的.因此,我们需要做一个
调整.)
下半场是,您如何使用图像?
而不是写这样的东西:
绘制(sand1)#我实际上不知道如何在pygame中绘制位图...
画(Sand2)
画(Sand3)
...
绘制(Sand99)
您会做这样的事情:
对于我的范围(1,100):
绘制(沙子[i])#或任何真正的命令
这有帮助吗?
- -
史蒂文
# 回答2


史蒂文·达·阿普拉诺(Steven D'Aprano)写道:
99%的时间,当您发现自己想写下类似的东西时:
sand1 = pygame.image.load(" sand1.bmp")
sand2 = pygame.image.load(" sand2.bmp")
sand3 = pygame.image.load(" sand3.bmp")
...
sand99 = pygame.image.load(" sand99.bmp")
(或类似)您以错误的方式进行操作.
更好的方法是做这样的事情:
沙子= [无]
文件名=" sand%d.bmp"#文件名模板
对于我在范围(1,100)中的我:#从1而不是0开始
名称=文件名%i
sands.append(pygame.image.load(name))
运行该代码后,Sands就是保留所有图像的列表
需要.
(注意:砂列表的第一项无,因为列表为
从0编号,但您的沙子是从1编号的.因此,我们需要做一个
调整.)
下半场是,您如何使用图像?
而不是写这样的东西:
绘制(sand1)#我实际上不知道如何在pygame中绘制位图...
画(Sand2)
画(Sand3)
...
绘制(Sand99)
您会做这样的事情:
对于我的范围(1,100):
绘制(沙子[i])#或任何真正的命令
这有帮助吗?
正如丹尼斯已经指出的那样,我喜欢在这些情况下使用字典,
因此,我会使用sand = dict()而不是sands = list()
并会做砂[i] = pygame.image.load(name)
然后,您可以通过做砂[your_number]来检索内容.
- -
mph
# 回答3


在2007年12月24日星期一17:14:58 +0100,马丁·P·Hellwig写道:
如果钥匙只是整数0 ... n包含在内,那为什么要打扰
当您获得所需的所有功能时,dict的额外开销
从列表中?
- -
史蒂文
# 回答4


史蒂文·达·阿普拉诺(Steven D'Aprano)写道:
如果钥匙只是整数0 ... n包含在内,那为什么要打扰
当您获得所需的所有功能时,dict的额外开销
从列表中?
就我而言,这只是一个偏好问题,没有其他充分的理由.虽然我
确实有滥用各地的趋势,但另一方面
手它使我的东西适合他人可读:-)
- -
mph
# 回答5


12月26日,1:09*上午,史蒂文·d'Aprano cybersource.com.auwrote:
如果钥匙只是整数0 ... n包含在内,那为什么要打扰
当您获得所需的所有功能时,dict的额外开销
从列表中?
钥匙不是整数0 ... n在这里,它们是1、2、3、4,l,r,r,t,d,
TL,TR,BL,BR在CO中 de,因此,dict比列表更可取. 顺便说一句凯蒂:" D"是错字吗? 为了一致性,应该是" b". 此外,函数可以传递参数,这样做比 通过全局变量传递信息. 所以 DEF LOADMATERIAL(LOADER): ... 沙=负载材料('sand') 比 def LoadMaterial(): ...使用"加载器"代码 loader ='sand' 沙= loadMaterial()

标签: python

添加新评论