python - Pygame矩形不绘制
问题描述
所以我对 python 并不完全陌生,但我对 pygame 很陌生。我编写了一个基本脚本,它应该构建一个由随机灰色阴影组成的细矩形网格。据我所知,它正在正确构建对象,并且所有相关变量似乎都在工作。但 pygame 不会绘制矩形。我确定它相当简单,有人可以指出我的错误吗?
澄清一下,这些印刷品是用于测试目的
#simple pygame grid drawer
import pygame as pg
import random as r
pg.init()
X = 600
Y = 600
surface_screen = pg.display.set_mode((X , Y))
colors = [(i , i , i) for i in range(255)]
class line:
def __init__(self , x , y , hight , width):
self.x = x
self.y = y
self.color = r.choice(colors)
self.hight = hight
self.width = width
lines = []
lines.append([line(x*50 , Y , Y , 15) for x in range(X // 50)])
lines.append([line(X , y*50 , 15 , X) for y in range(Y // 50)])
print("yep1")
for A in lines:
for i in A:
pg.draw.rect(surface_screen , i.color , pg.Rect(i.x , i.y , i.hight , i.width))
print(f"yep2 {i.color} , X:{i.x} , Y:{i.y} , hight:{i.hight} , width:{i.width}")
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
pg.display.flip()
pg.quit()
解决方案
矩形超出范围,因为矩形x
的坐标或y
坐标为 600。
更改以下代码行:
lines.append([line(x*50 , Y , Y , 15) for x in range(X // 50)])
lines.append([line(x*50, 0, 15, Y) for x in range(X // 50)])
lines.append([line(X , y*50 , 15 , X) for y in range(Y // 50)])
lines.append([line(0, y*50, Y, 15) for y in range(Y // 50)])
推荐阅读
- arrays - 检查特殊数组方程的子集总和
- amazon-dynamodb - DynamoDb 从 Node.js 更新项目
- rest - Microsoft Graph:假设 plannerTask.id 和 plannerTaskDetails.id 始终相同是否安全?
- java - Android 应用程序:当我一次性从 API 中放入大约 300 条记录时,RecyclerView 挂起
- sinon - Loopback 4:测试Sinon和注入的问题
- python - 如何使用 pipenv 指定在哪里创建虚拟环境?
- redux - 我试图用 redux 获取输入,一切都很好,但我不知道如何获取输入值
- java - 是什么导致了这个异常:java.lang.NoSuchFieldException?
- yesod - Yesod Hamlet 通过用双引号替换单引号来破坏 HTML
- c# - 如何在asp.net的gridview中将两个资源值合二为一