如何解决嘿,我需要python的帮助
我想制作一个程序,以生成具有随机形状的块的线。到目前为止,我表现不错。但是我不想定义每个块。有没有一种方法可以在每次发生其他定义时都可以执行def功能?如果不是,我如何定义10个对象,而不仅仅是复制和粘贴10次并更改名称。我想让我的代码更紧凑,谢谢阅读!如果我没有很好地解释我要做什么,我还添加了一个项目
import random
import pygame
pygame.init()
black = 0,0
white = 255,255,255
red = 255,0
green = 0,0
blue = 0,255
screen = pygame.display.set_mode((800,600))
BlockImg = pygame.image.load('cobblestone.png')
blockX = random.randint(0,800)
blockY = random.randint(0,600)
position = random.randint(1,6)
if position == 1:
block2X = blockX - 16
block2Y = blockY
if position == 2:
block2X = blockX + 16
block2Y = blockY
if position == 3:
block2X = blockX
block2Y = blockY - 16
if position == 4:
block2X = blockX + 16
block2Y = blockY - 16
if position == 5:
block2X = blockX + 16
block2Y = blockY + 16
if position == 6:
block2X = blockX - 16
block2Y = blockY + 16
positionoftwo = random.randint(1,6)
if positionoftwo == 1:
block3X = blockX - 16
block3Y = blockY
if positionoftwo == 2:
block3X = block2X + 16
block3Y = block2Y
if positionoftwo == 3:
block3X = block2X
block3Y = block2Y - 16
if positionoftwo == 4:
block3X = block2X + 16
block3Y = block2Y - 16
if positionoftwo == 5:
block3X = block2X + 16
block3Y = block2Y + 16
if positionoftwo == 6:
block3X = block2X - 16
block3Y = block2Y + 16
# can I automate that?
def one(x,y):
screen.blit(BlockImg,(x,y))
def two(x,y))
def three(x,y))
def four(x,y))
def five(x,y))
def six(x,y))
def seven(x,y))
running = True
while running:
screen.fill(black)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
one(blockX,blockY)
two(block2X,block2Y)
three(block3X,block3Y)
pygame.display.update()
解决方法
您在
let credentials;
let coldstart = false;
exports.handler = async (event,context) => {
if(!coldstart){
credentials = await getSecrets();
coldstart=true;
}
}
,one()
,two()
等中具有相同的代码,因此您只能保留其中一个并多次运行,但要使用不同的参数
three()
您应该将代码放入函数中,并使用one(blockX,blockY)
one(block2X,block2Y)
one(block3X,block3Y)
多次运行并将返回值分配给不同的变量
return
和
def generate_block():
X = random.randint(0,800)
Y = random.randint(0,600)
position = random.randint(1,6)
if position == 1:
X = X - 16
if position == 2:
X = X + 16
if position == 3:
Y = Y - 16
if position == 4:
X = X + 16
Y = Y - 16
if position == 5:
X = X + 16
Y = Y + 16
if position == 6:
X = X - 16
Y = Y + 16
resturn X,Y
但最好将其保留在列表中
blockX,blockY = generate_block()
block2X,block2Y = generate_block()
block3X,block3Y = generate_block()
# ... 10 times ...
或更简单
all_blocks = []
x,y = generate_block()
all_blocks.append( (x,y) )
x,y) )
# ... 10 times ...
然后您可以使用all_blocks = []
for _ in range(10): # <- it will repeate it 10 times
x,y = generate_block()
all_blocks.append( (x,y) )
循环使用所有块
for
编辑:
工作代码
for x,y in all_blocks: # <- `all_blocks` has 10 items
one(x,y) # so it will repeate it 10 times
square-1.png,square-2.png,square-3.png,
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。