python-3.x - 如何使用pygame和算法一次绘制多个矩形?(PCG?)
问题描述
我正在制作一个小游戏来学习python。这是一个游戏,你控制一个想要离开地牢的红点。我正在使用 pygame 作为图形界面。
我正在创建一个由矩形组成的 2D 地图生成器,但我认为我使用了不好的方法:我在矩形之后创建矩形,我需要“一个接一个”设置所有特征。
即使这种方法教会了我很多基本的东西,它也太长了,而且出错的几率会随着代码的长度而增加。
所以我认为使用算法会更快,但我不知道我需要使用哪种程序内容生成器。
有关信息,以下是我想对该算法提出的条件:
矩形不能碰撞
矩形之间的距离必须为 30
我怎样才能做到这一点 ?
这是我正在使用的当前方法(我为这个问题做了一个小例子):
import pygame
import random
screen = pygame.display.set_mode((750,750))
done = False
BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (255,0,0)
BLUE = (0,0,255)
def main():
global BLACK, done, WHITE, RED, BLUE, X, Y
X1 = random.randint(30,300)
Y1 = random.randint(30,300)
W1 = random.randint(30,300)
H1 = random.randint(30,300)
X2 = random.randint(30,300)
Y2 = random.randint(30,300)
W2 = random.randint(30,300)
H2 = random.randint(30,300)
X3 = random.randint(30,300)
Y3 = random.randint(30,300)
W3 = random.randint(30,300)
H3 = random.randint(30,300)
screen.fill(BLACK)
pygame.draw.rect(screen, WHITE, (X1, Y1, W1, H1))
pygame.draw.rect(screen, RED, (X2, Y2, W2, H2))
pygame.draw.rect(screen, BLUE, (X3, Y3, W3, H3))
pygame.display.update()
while not done:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and event.key == pygame.K_1:
main()
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
pygame.quit()
quit()
main()
pygame.quit()
quit()
解决方案
推荐阅读
- html - 滚动显示更多的 div 向右浮动
- appium - webelement.click()之后的Android Appium性能问题
- spring-boot - spring-security-oauth2 vs spring-cloud-starter-oauth2
- css - CSS Hero 图片高度问题
- android - 如何在整个应用程序中设置 Android 中特定类型的首选项?
- css - Css - 另一个树视图打开/关闭和父问题
- css - SASS 语法(不是 SCSS)文档和工具
- typescript - 在 TypeScript 中扩展接口,其中 module=es6 导致属性不存在
- postgresql - 在 postgresql 中触发外部表的执行
- angular - 共享服务上的组件通信