0
我正在做一個Coursera的小項目,我可以運行我的代碼的大部分部分。但是關於遊戲match or not
檢查的關鍵部分存在錯誤。simplegui indentation error:SyntaxError:bad input('')
# implementation of card game - Memory
import simplegui
import random
# helper function to initialize globals
def new_game():
global turns, state, pairs, cards
turns = 0
state = 0
pairs = []
cards = range(9) * 2
random.shuffle(cards)
# define event handlers
def mouseclick(pos):
# add game state logic here
global turns, state, pairs
pointed = pos[0] // 50
if pointed in pairs:
pass
else:
if state == 0:
state = 1
pairs.append(pointed)
elif state == 1:
state = 2
turns += 1
label.set_text('Turns =' + str(turns))
pairs.append(pointed)
# if cards[pairs[-2]] == cards[[pairs[-1]]:
# flag = True
# else:
# flag = False
else:
state = 1
if flag == False:
del pairs[-2:]
pairs.append(pointed)
# cards are logically 50x100 pixels in size
def draw(canvas):
for n in range(1, 16):
canvas.draw_line((n * 50, 0), (n * 50, 100), 1, 'Green')
for n in pairs:
canvas.draw_line((n * 50 + 25, 0), (n * 50 + 25, 100), 50, 'White')
for n in pairs:
canvas.draw_text(str(cards[n]), (n * 50 + 15, 65), 50, 'Black')
# create frame and add a button and labels
frame = simplegui.create_frame("Memory", 800, 100)
frame.set_canvas_background('Red')
frame.add_button("Reset", new_game)
label = frame.add_label("Turns = 0")
# register event handlers
frame.set_mouseclick_handler(mouseclick)
frame.set_draw_handler(draw)
# get things rolling
new_game()
frame.start()
# Always remember to review the grading rubric
我註釋掉第31行至34,這就是在那裏我有一個問題的一部分。控制檯不斷告訴我Line 31: SyntaxError: bad input (' ')
,但我認爲縮進是正確的。
請幫我弄清楚爲什麼這是一個'糟糕的輸入',非常感謝!
更新:
由於羅素的幫助下,這個功能現在工作。
# define event handlers
def mouseclick(pos):
# add game state logic here
global turns, state, pairs, flag
pointed = pos[0] // 50
if pointed in pairs:
pass
else:
if state == 0:
state = 1
pairs.append(pointed)
elif state == 1:
state = 2
turns += 1
label.set_text('Turns =' + str(turns))
pairs.append(pointed)
if cards[pairs[-2]] == cards[pairs[-1]]:
flag = True
else:
flag = False
else:
state = 1
if flag == False:
del pairs[-2:]
pairs.append(pointed)
感謝您的幫助。我嘗試了你的建議,現在問題出現在第32行的一行:「Line 32:SyntaxError:bad input('=')' – leoce
Thanks!儘管對我感到羞恥......我還有一個問題要問,我已經更新了我的問題。如果我沒有將變量'flag'設爲全局變量,那麼程序會在賦值之前引用一個錯誤'行38:undefined:Error:局部變量'標誌'。但是變量'flag'完全是本地的,不涉及函數外的任何代碼。我不是爲什麼我需要全球化。這背後有邏輯嗎?非常感謝! – leoce
我認爲這可能是因爲如果代碼進入'else'並檢查'flag flag = False',那麼在此階段標誌還沒有被初始化。當你進入函數時,你應該將它默認爲「True」或「False」。 – Dobz