我不知道这里发生了什么事。我已经设置了几个列表,每个颜色都有一个,其中包含相应的RGB值作为其成员,然后是包含每个单独颜色列表的colors[]。然后我有一个嵌套的for循环:外部循环创建填充颜色的矩形列,内部循环推进行。在我看来并不复杂。在
我尝试使用numdown遍历colors[]列表,以便每两行颜色都更改为colors[]中对应的成员。在
问题是,当我使用内部列表的numover时,它工作得很好,除了很明显我得到了错误的颜色模式(颜色前进而不是向下)。如果我使用numdown遍历列表,那么似乎只有white成员可以访问,即使在内部for循环中I“print(numdown)”或甚至“print(colors[numdown])”中打印了正确的值。在
为什么会这样?为什么如果我使用内部for的numbover,列表成员的访问是否正确,但是如果我使用外部for的numdown,它就会中断?在
我突然想到这可能与pygame有关,尽管我不知道是什么。在
(另外,实际上我是从Python开始的,如果您看到其他值得一提的东西,无论是方法还是风格,请随时指出。)
import pygame, sys
from pygame.locals import *
#initialize pygame
pygame.init()
#assign display window dimensions
winwidth = 400
winheight = 700
#number of rows, number of colums
numrows = range(1,11)
numcols = range(1,11)
#Keeping brick size proportionate to the window size
brickwidth = winwidth / (len(numrows))
brickheight = winheight / 4
#Pixel space above the breakout area
bricktopspace = winheight / 7
#Set display window width, height
windowSurface = pygame.display.set_mode((winwidth, winheight), 0, 0)
brickxcoord = 0
blue = [0, 0, 255]
green = [0, 255, 0]
yellow = [255, 255, 0]
red = [255, 0, 0]
white = [255, 255, 255]
colors = range(0,11)
colors[1] = white
colors[2] = white
colors[3] = red
colors[4] = red
colors[5] = green
colors[6] = green
colors[7] = yellow
colors[8] = yellow
colors[9] = blue
colors[10] = blue
class Setup():
for numdown in numcols:
for numover in numrows:
print(numdown)
pygame.draw.rect(windowSurface, colors[numdown], (brickxcoord,
bricktopspace, brickwidth, brickheight))
brickxcoord = brickxcoord + brickwidth
bricktopspace = bricktopspace + brickheight
class Main():
Setup()
pygame.display.update()
呃。。。有点晚了,但如果你还在的话。像这样?在
我做了一点修改,但尽量靠近你的结构:
因为您需要一个固定的数字或行和列,所以可以有两个变量来说明需要多少行和列。然后使用这些来确定块的大小。在
我已经按照建议改变了数组的颜色,我个人也是这么做的(比如它更短,你可以把它当作一个序列来读)。另外,如果你想改变顺序,你只需移动项目。在
最后,我使用了两个for循环,它们使用numrows和numcols作为范围限制。如果你想想你的时间表,包括0,它会创建一个完美的网格。只需将第一个循环视为行,将嵌套循环视为列。在
好吧,祝你好运。在
我不能对pygame方法说什么,但是声明列表的一种更惯用的方法是
而不是创建然后覆盖一个范围。你甚至可以做到
^{pr2}$虽然这可能是一个丑陋的路线。另外,您的第一个list元素始终位于位置“0”,因此您将得到一个包含元素}的列表,因为您开始在colors[1]处定义颜色。在
[0, white, white, ...]
而不是{相关问题 更多 >
编程相关推荐