Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么它说左上角不在函数pygame中定义?_Python_Function_Pygame_Image Rotation_Pygame Surface - Fatal编程技术网

Python 为什么它说左上角不在函数pygame中定义?

Python 为什么它说左上角不在函数pygame中定义?,python,function,pygame,image-rotation,pygame-surface,Python,Function,Pygame,Image Rotation,Pygame Surface,我在使用Python2.7,我也在使用Pygame。我一直想旋转一个图像,这是我到目前为止得到的 导入pygame,随机 从随机导入randint #增加停车场、饥饿酒吧、水吧、商店、直通车等。。。 #添加人工智能汽车/汽车、警车,在道路上以超过30的速度行驶(停车场/直通车以5的速度行驶),在撞击建筑物/其他汽车时不会发生碰撞(仅受到反击) #制作转弯动画 pygame.init() 完成=错误 x=465 当=0时 道路条带y=0 道路_条纹_y2=250 道路_条纹_y3=500 道路_条

我在使用Python2.7,我也在使用Pygame。我一直想旋转一个图像,这是我到目前为止得到的

导入pygame,随机
从随机导入randint
#增加停车场、饥饿酒吧、水吧、商店、直通车等。。。
#添加人工智能汽车/汽车、警车,在道路上以超过30的速度行驶(停车场/直通车以5的速度行驶),在撞击建筑物/其他汽车时不会发生碰撞(仅受到反击)
#制作转弯动画
pygame.init()
完成=错误
x=465
当=0时
道路条带y=0
道路_条纹_y2=250
道路_条纹_y3=500
道路_条纹_y4=700
速度=0
档位=1
ai_car_y=0
停车场y=-400
游戏者角度=0
接地=(50,100,0)
路=(64,64,64)
黑色=(0,0,0)
白色=(255,255,255)
screen=pygame.display.set_模式((1000800))
屏幕填充(地面)
player=pygame.image.load('racking car copy.png')
ai_car=pygame.image.load('ai_racing car.png')
road\u stripe=pygame.image.load('coustem1 copy.png')
font=pygame.font.font('freesansbold.ttf',40)
text=font.render('Gear',True,black,ground)
text2=font.render(str(gear)、真、黑、地)
text2_rect=text2.get_rect()
text_rect=text.get_rect()
text_rect.center=(100100)
text2_rect.center=(100150)
屏幕。blit(播放器,(x,600))
clock=pygame.time.clock()
def旋转(屏幕、播放器、左上角、播放器角度):
旋转的玩家=pygame.transform.rotate(玩家,玩家角度)
新玩家=旋转玩家。获取玩家(中间=玩家。获取玩家(左上=左上)。中间)
screen.blit(旋转播放器,新播放器右上角)
未完成时==True:
全球齿轮
全球左派
全球权利
pygame.event.get()
pygame.display.flip()
pressed=pygame.key.get_pressed()
如果按下[pygame.K_ESCAPE]:
完成=正确
如果按下[pygame.K_a]:
如果不是x>=670且不是速度==0:
x+=速度/4
如果按下[pygame.K_d]而不是速度==0:
如果不是x=5且档位==1:
速度+=1
elif非速度>=15且档位==2:
速度+=1
elif非速度>=30且档位==3:
速度+=1
elif非速度>=40且档位==4:
速度+=1
elif非速度>=80且档位==5:
速度+=1
其他:
如果不是速度=15且档位=2:
速度-=1
如果速度>=5且档位==1:
速度-=1
如果速度>=30且档位==3:
速度-=1
如果速度>=40且档位==4:
速度-=1
如果速度>=80且档位==5:
速度-=1
如果按下[pygame.K_1]:
档位=1
elif按下[pygame.K_2]:
档位=2
elif按下[pygame.K_3]:
档位=3
elif按下[pygame.K_4]:
档位=4
elif按下[pygame.K_5]:
档位=5
屏幕填充(地面)
pygame.draw.rect(屏幕,道路,(240+x-465,05001000))
停车场y+=速度
pygame.draw.rect(屏幕,道路,(400,停车场,600800))
屏幕光点(道路条纹,(490+x-465,道路条纹y))
屏幕。blit(道路条纹,(490+x-465,道路条纹(y2))
屏幕光点(道路条纹(490+x-465,道路条纹(y3))
屏幕。光点(道路条纹,(490+x-465,道路条纹(y4))
道路_条纹_y+=速度
道路_条纹_y2+=速度
道路_条纹_y3+=速度
道路_条纹_y4+=速度
如果道路长度大于等于850:
道路条纹y=-100
如果道路条带y2>=850:
路_条_y2=-100
如果道路长度大于等于850:
路_条_y3=-100
如果道路长度大于等于850:
路_条_y4=-100
ai_car_y+=速度+30
如果ai_car_y>=3000:
ai_car_y=-100
屏幕。blit(播放器,(465600))
text2=font.render(str(gear)、真、黑、地)
screen.blit(text,text_rect)
screen.blit(text2,text2_-rect)
屏幕。blit(ai_车,(325+x-465,ai_车y))
时钟滴答(40)
pygame.quit()
这就是调用函数的原因:

旋转(屏幕、播放器、左上角、播放器角度)

我不知道问题是什么,但上面说“左上角”没有定义。这真的很让人困惑,因为当我导入Pygame时,topleft不应该自己定义吗?我在互联网上找不到任何有用的答案,你能帮我吗?

将参数
左上
添加到函数
旋转
。将
(x,600)
传递给参数:

def旋转(屏幕、播放器、左上角、播放器角度):
rect=player.get_rect(左上=左上)
旋转的玩家=pygame.transform.rotate(玩家,玩家角度)
新玩家=旋转玩家。获取玩家(中心=rect.center)
screen.blit(旋转播放器,新播放器右上角)
旋转(屏幕,播放器,(x,600),播放器角度)
player\u collison\u box=player.get\u rect(左上方=(x600))

我建议从函数
旋转中返回碰撞框

def旋转(屏幕、播放器、左上角、播放器角度):
rect=player.get_rect(左上=左上)
旋转的玩家=pygame.transform.rotate(玩家,玩家角度)
新玩家=旋转玩家。获取玩家(中心=rect.center)
screen.blit(旋转播放器,新播放器右上角)
返回新玩家
player\u collison\u box=旋转(屏幕,播放器,(x,600),播放器角度)


我想是1.9.6还是2.0.0,我甚至不知道是否有2.0.0。无论如何,这是最新版本导致错误的那一行是调用它的那一行。问题不在
rotate()
函数本身。您正试图使用名为
topleft
的参数调用该函数,而该变量在调用者中不存在。然后我真的不知道如何执行这样一行:new\u player\u rect=rotated\u player.get\rect(center=player.get\rect(topleft=topleft.center)因为如果可以的话,
左上方的
会抛出一个错误,告诉我们整个调用函数。