{ "resource": "/c:/Users/clarance/Desktop/wuziqi.py", "owner": "_generated_diagnostic_collection_name_#1", "severity": 8, "message": "Unindent amount does not match previous indent", "source": "Pylance", "startLineNumber": 65, "startColumn": 9, "endLineNumber": 65, "endColumn": 9 } ;{ "resource": "/c:/Users/clarance/Desktop/wuziqi.py", "owner": "_generated_diagnostic_collection_name_#1", "severity": 8, "message": "\"break\" can be used only within a loop", "source": "Pylance", "startLineNumber": 66, "startColumn": 13, "endLineNumber": 66, "endColumn": 18 } 出现这两条报错消息,根据这两条对以上程序进行修改后再次发送给我
时间: 2023-06-28 19:09:47 浏览: 867
好的,请看下面修改后的代码:
```python
from tkinter import *
import tkinter.messagebox
class ChessBoard:
def __init__(self, master=None):
self.master = master
self.master.title('五子棋')
self.master.geometry('450x450')
self.color = ['black', 'white']
self.chess_color = 0
self.chessboard = Canvas(self.master, width=450, height=450, bg='#F5DEB3')
self.chessboard.pack()
for i in range(15):
self.chessboard.create_line(15 + 30 * i, 15, 15 + 30 * i, 435, width=2)
self.chessboard.create_line(15, 15 + 30 * i, 435, 15 + 30 * i, width=2)
self.chessboard.bind('<Button-1>', self.chess_board_click)
self.chess = {}
self.over = False
def chess_board_click(self, event):
if self.over:
return
x, y = event.x, event.y
col, row = x // 30, y // 30
if (col, row) in self.chess:
return
self.draw_chess(col, row)
def draw_chess(self, col, row):
if self.over:
return
x, y = 15 + col * 30, 15 + row * 30
color = self.color[self.chess_color]
self.chessboard.create_oval(x - 13, y - 13, x + 13, y + 13, fill=color)
self.chess[(col, row)] = color
self.check_game_over(col, row)
self.chess_color = 1 - self.chess_color
def check_game_over(self, col, row):
directions = [(0, 1), (1, 0), (1, 1), (1, -1)]
for direction in directions:
count = 1
for i in range(1, 5):
col_i, row_i = col + i * direction[0], row + i * direction[1]
if (col_i, row_i) in self.chess and self.chess[(col_i, row_i)] == self.color[self.chess_color]:
count += 1
else:
break
for i in range(1, 5):
col_i, row_i = col - i * direction[0], row - i * direction[1]
if (col_i, row_i) in self.chess and self.chess[(col_i, row_i)] == self.color[self.chess_color]:
count += 1
else:
break
if count >= 5:
self.game_over()
def game_over(self):
self.over = True
color = self.color[self.chess_color]
tkinter.messagebox.showinfo('五子棋', f'{color}方胜!')
if __name__ == '__main__':
root = Tk()
ChessBoard(root)
root.mainloop()
```
主要的修改如下:
1. 第 65 行的缩进问题已经解决。
2. 第 66 行的 `break` 语句需要放在一个循环中,因此我将其放在了两个 `for` 循环中的一个内部循环中。
希望这次修改能够解决你的问题。
阅读全文