python - TypeError:参数必须是矩形样式对象
问题描述
当我尝试运行我的程序时,最终出现以下错误
Traceback (most recent call last):
File "C:\Users\terry\Thonny\Computer Science\Final Snake.py", line 134, in <module>
pygame.draw.rect(window,pygame.Color("RED"),pygame.Rect(foodpos[0],foodpos[1],10,10))
TypeError: Argument must be rect style object
错误发生在我的代码的第 134 行。这是使用的代码,将不胜感激详细的答案,因为我对 pygame 相当陌生
while True:
for event in pygame.event.get():
#------------------------- quits the game
if event.type == pygame.QUIT:
game_over();
#-------------------------
#------------------------- movement of the snake
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
snake.change_dir_to("RIGHT")
if event.key == pygame.K_LEFT:
snake.change_dir_to("LEFT")
if event.key == pygame.K_RIGHT:
snake.change_dir_to("UP")
if event.key == pygame.K_RIGHT:
snake.change_dir_to("DOWN")
#-------------------------
#----------------------------- adds to score if the nake eats the food
foodpos = food_spawner.spawn_food()
if(snake.move(foodpos)==1):
score+=1
food_spawner.set_food_on_screen(False)
#------------------------------
#------------------------------ draws the screen, the snake, and its food
window.fill(pygame.Color("BLACK"))
for pos in snake.get_body():
pygame.draw.rect(window,pygame.Color("BLUE"),pygame.Rect(pos[0],pos[1],10,10))
pygame.draw.rect(window,pygame.Color("RED"),pygame.Rect(foodpos[0],foodpos[1],10,10))
#------------------------------
解决方案
问题在于它foodpos
不是整数列表或元组。可以使用以下代码重新创建此问题:
foodpos = [ 'apple', 'pie' ] # NOTE: strings not integers
pygame.draw.rect(window,pygame.Color("RED"),pygame.Rect(foodpos[0],foodpos[1],10,10))
给出:
Traceback(最近一次通话最后):文件“./rect_draw.py”,您的 exline 38,在 pygame.draw.rect(window,pygame.Color("RED"),pygame.Rect(foodpos[0],foodpos 1 ,10,10)) TypeError: Argument must be rect style object
Pyagme rect 对象在其构造函数中采用 4 个整数。请参阅手册。
将 的内容更改foodpos
为整数:
foodpos = [ 10, 10 ] # NOTE: integers
pygame.draw.rect(window,pygame.Color("RED"),pygame.Rect(foodpos[0],foodpos[1],10,10))
它工作正常。
示例代码没有显示 的内容foodpos
,但无论它有什么,将其设为整数将解决问题。
推荐阅读
- node.js - 如何查看在 nginx web 服务器上运行的 nodejs express console.logs
- ios - 如何在 UiKit 中制作网格渐变
- visual-studio-code - 将 JSHint 设置为在 VScode 上运行 onSave
- javascript - 充满颜色的虚线箭头
- c++ - lcd.setCursor 没有将光标设置在我想要的位置
- angular - 使用服务订阅时无法更新 html 文件中的数据,但 ts 控制台显示数据
- android - 在 Android TV 中对齐更改后,Flutter 应用程序无法安装(安装卡住)?
- google-sheets - Google 表格挑战 Importrange + Substitute 或 Index Filter + Substitute
- c# - 中介配置问题。无法正确配置
- php - 条件查询并从elasticsearch中的相似文档中选择单个文档