【发布时间】:2023-04-11 02:13:01
【问题描述】:
我正在做一个项目,我必须制作一个满足多个要求的程序。我选择了西蒙游戏。
我想我已经完成了大部分工作,但是,有一个部分我无法正常工作,这使得它每次都在整个模式中循环。现在,用户只需点击最近的颜色,它就会认为它是正确的。假设图案是红、黄、蓝、绿,那么黄色又出现了。用户所要做的就是按下黄色,它认为它是正确的。我希望用户必须按红色、黄色、蓝色、绿色、然后黄色才能正确。
如何修改我的代码来做到这一点?这是我的代码:
pattern = []
userpattern = []
score = 1
global run_once
run_once = 0
def randomcolor():
print(score)
for i in range(10):
padchoice = random.randint(0, 3)
if(padchoice == 0):
pattern.append("green")
break
elif(padchoice == 1):
pattern.append("red")
break
...
print("Pattern: " + str(pattern))
print(userpattern)
fps = pg.time.Clock()
while(end == False):
fps.tick(60)
if run_once == 0:
randomcolor()
run_once = 1
for event in pg.event.get():
#If Quit Button Pressed
if event.type == pg.QUIT:
end = True
elif event.type == pg.MOUSEBUTTONDOWN:
pos_x = pg.mouse.get_pos()[0]
pos_y = pg.mouse.get_pos()[1]
#Mouse Position
print(str(pos_x) + ", " + str(pos_y))
if(pos_x > 5 and pos_x < 150):
if(pos_y > 5 and pos_y < 150):
green("on")
userpattern.append("green")
print(userpattern)
...
if(userpattern != pattern[:len(userpattern)] and len(userpattern) != 0):
print("Wrong!")
userpattern.clear()
pattern.clear()
score = 0
run_once = 0
for i in range(len(pattern)):
if(pattern[i] == "green"):
if(pos_x > 5 and pos_x < 150):
if(pos_y > 5 and pos_y < 150):
green("on")
userpattern.append("green")
print(userpattern)
if(userpattern == pattern):
print("Correct")
score += 1
print(score)
run_once = 0
if(score == 11):
wintext = font.render("Win!"), 0, (255, 255, 255)
screen.blit(wintext, (screen.get_width()/2, screen.get_height()/2))
pg.display.flip()
P.S.- 我知道代码不是最好的,我敢肯定,但我真的只是想让它工作。
编辑:我认为问题出在这些代码行的某个地方,我正试图让它工作:
if(userpattern != pattern[:len(userpattern)] and len(userpattern) != 0):
print("Wrong!")
userpattern.clear()
pattern.clear()
score = 0
run_once = 0
for i in range(len(pattern)):
if(pattern[i] == "green"):
if(pos_x > 5 and pos_x < 150):
if(pos_y > 5 and pos_y < 150):
green("on")
userpattern.append("green")
print(userpattern)
if(userpattern == pattern): #and new == False
print("Correct")
score += 1
print(score)
run_once = 0
如果有人需要更多信息或可以提供帮助,请告诉我! 提前致谢!
【问题讨论】:
-
那是很多代码。你认为你可以缩小范围,以便更容易理解问题的确切位置吗?
-
是的,我会试试的。谢谢。
-
好的,我已经删除了一些注释代码。我试图开始工作的部分就在用“渲染文本”注释的代码部分的正上方。我试图弄清楚如何正确循环整个模式,并尝试使用 userpattern 或类似的东西来检查它。我目前只尝试用绿色来做到这一点。
-
@go2nirvana 我还尝试在底部添加一个部分,该部分只是尝试循环遍历所有模式的代码。我希望这有帮助。如果您需要更多说明,请告诉我。谢谢!
-
@go2nirvana 有什么想法吗?我不知道为什么我想不通。
标签: python loops pygame user-input