我在 python 和 pygame 中有一個小程序,但是當我運行它時,出現以下錯誤:pygame 1.9.6Hello from the pygame community. https://www.pygame.org/contribute.htmlTraceback (most recent call last): File "main.py", line 31, in <module> main() File "main.py", line 25, in main board.draw(WIN) File "/home/ether/Desktop/checkersai/checker/board.py", line 42, in draw piece.draw(win) File "/home/ether/Desktop/checkersai/checker/piece.py", line 32, in draw pygame.draw.circle(win, GREY, (self.x, self.y), radius + self.OUTLINE)TypeError: integer argument expected, got float這是錯誤所在的函數:def draw(self, win): radius = SQUARE_SIZE//2 - self.PADDING pygame.draw.circle(win, GREY, (self.x, self.y), radius + self.OUTLINE) pygame.draw.circle(win, self.color, (self.x, self.y), radius)這些是我使用的變量:WIDTH, HEIGHT = 800,800ROWS, COLS = 8,8SQUARE_SIZE = WIDTH/COLS所以我不知道如何得到這個錯誤,也不知道我需要從哪里開始尋找錯誤。這是我的項目的完整代碼 https://pastebin.ubuntu.com/p/DHcRNT6948/
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
即使您//
在設置時使用了整數除法運算符()radius = SQUARE_SIZE//2 - self.PADDING
,它也會返回一個浮點數;該運算符通常會返回一個 int,但如果您要除以一個 float,它仍然會返回一個 float。在你的例子中,你要除以一個浮點數,SQUARE_SIZE
. 它是浮點數,因為SQUARE_SIZE = WIDTH/COLS
使用常規除法運算符 ( /
),它始終返回浮點數。
要解決您的問題,請執行以下操作:
SQUARE_SIZE = WIDTH//COLS # SQUARE_SIZE is an int now
然而,數學上更準確的方法是使用浮點數,并僅在最后一刻舍入并轉換為 int:
radius = int(round((WIDTH/COLS) / 2.0 - self.PADDING))
添加回答
舉報
0/150
提交
取消