Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我正在做一个砖块破坏游戏,想知道是否有一种方法可以将这些砖块放在一个变量下_Python_Variables_Pygame - Fatal编程技术网

Python I';我正在做一个砖块破坏游戏,想知道是否有一种方法可以将这些砖块放在一个变量下

Python I';我正在做一个砖块破坏游戏,想知道是否有一种方法可以将这些砖块放在一个变量下,python,variables,pygame,Python,Variables,Pygame,这些是我为比赛做的砖。堆栈溢出不允许我放置所有砖块,因此这些砖块是砖块的1/3。总金额为60(3行20) 我是否可以将这些砖块放在一个变量下并缩短代码?非常感谢你的帮助。谢谢。只需使用嵌套的for循环即可创建包含所有砖块的列表 我将使用它来保持位置和大小,因为我将使用它来检查碰撞 all_bricks = [] for y in range(65, 106, 20): for x in range(0, 761, 40): brick_rect = pygame.Rec

这些是我为比赛做的砖。堆栈溢出不允许我放置所有砖块,因此这些砖块是砖块的1/3。总金额为60(3行20)


我是否可以将这些砖块放在一个变量下并缩短代码?非常感谢你的帮助。谢谢。

只需使用嵌套的
for
循环即可创建包含所有砖块的列表

我将使用它来保持位置和大小,因为我将使用它来检查碰撞

all_bricks = []

for y in range(65, 106, 20):
    for x in range(0, 761, 40):
        brick_rect = pygame.Rect(x, y, 40, 20)
        all_bricks.append(brick_rect)
然后您可以使用一个
for
循环来绘制它们

for brick_rect in all_bricks:    
    pygame.draw.rect(screen, blue, brick_rect, 0)
或者检查碰撞

untouched_bricks = []

for brick_rect in all_bricks:    
    if not ball_rect.colliderect(brick_rect):
        untouched_bricks.append(brick_rect)
    #else:
    #    print("Brick touched")

# keep only untouched bricks
all_bricks = unbreaked_bricks

要使每个砖块的位置和颜色保持不同,您需要更复杂的结构:

  • 列表-即[blue,pygame.Rect(x,y,40,20),…]
  • dictionary-ie.
    {“color”:蓝色,“rect”:pygame.rect(x,y,40,20),“other”:}
  • 阶级

对于范围内的x(0,一些数字,40):pygame.draw.rect(屏幕,(蓝色),(x,65,40,20),0)
?假设“一些数字”是什么?无论最大值是多少。760,但你说你不能发布你的全部代码。关键是它从零到最大值以40秒递增。你可以使用一个简单的嵌套for循环结构。这是大多数教程都会教给你的最基本的东西。你只需要在另一个for循环的主体中放置一个for循环。我还建议创建一个包含
pygame.Rect
s的列表,因为它们可以用于碰撞检测,然后只需循环此列表并将这些Rect传递给
pygame.draw.Rect
即可绘制。谢谢这是一个很大的帮助,但我确实有一个问题。除了碰撞,一切都正常。当我尝试运行该程序时,我得到以下错误:回溯(最近一次调用last):文件“C:\Users\user\u 000\Desktop\project\Brick Breaker-Game project.py”,第135行,在all\u bricks=unbreaked\u bricks name错误:未定义名称“unbreaked\u bricks”。请提供帮助。
untouched_bricks = []

for brick_rect in all_bricks:    
    if not ball_rect.colliderect(brick_rect):
        untouched_bricks.append(brick_rect)
    #else:
    #    print("Brick touched")

# keep only untouched bricks
all_bricks = unbreaked_bricks