运行效果如下:(这个是有音效的,不过这个展示不了因为这里只能上传GIF)


由于我使用的是笔记本所以对于屏幕来说是进行了缩放的,例如,我的笔记本缩放了125%
但是问题在于我们的pygame和其他的一些库例如selenium其实是按照100%显示的像素来算的。所以这个时候我们需要进行一个换算。
这个也好算:当前显示像素比=100%显示像素比X缩放比
我们只需要换算一下就好了。这里我定义了一个类,来实现我们的需求,自动检测我们的电脑的屏幕缩放比,之后换算。
fromwin32importwin32api,win32gui,(object):'''
该类主要对屏幕进行像素适配,按照缩放比对像素进行换算为100%显示
示例:
RealSize=ChangeRealSize()x=_xy(500)此时就可以换算为当前屏幕的像素'''defget_real_resolution(self):"""获取真实的分辨率"""hDC=(0)w=(hDC,)h=(hDC,)returnw,hdefget_screen_size(self):"""获取缩放后的分辨率"""w=GetSystemMetrics(0)h=GetSystemMetrics(1)returnw,hdefgetreal_xy(self,x):'''返回按照100%来算的真实的像素值'''real_resolution=_real_resolution()screen_size=_screen_size()screen_scale_rate=round(real_resolution[0]/screen_size[0],2)try:x=x/screen_scale_rateexcept:可以在这里计算飞机被击中了多少次直接在这里计算数字一次减少5globalHERO_PLANE_HPHERO_PLANE_HP-=5只能出现一次HERO_FIRE_BULLTE=+1由于会重复执行只能去用列表的数量来判断defMove(self)::=(0,0,0,0):=300:()returnelse:=3():=3:()returnelse:=2():=_:()returnelse:+=2():=_y-30:()returnelse:+=2()()defGet_bullet(self):子弹发射:_()_()defGoal(self):passdefshow(self)::(,)音乐播放类classMusicPlay():def__init__(self):=(self):("./music/")_volume(0.3)(-1)defStarBg(self):()defPlayPlanSound(self):=("./music/hero_")_volume(0.2)()defStopPlayPlanSound(self):pass可以在这里计算飞机被击中了多少次直接在这里计算数字一次减少5globalHERO_PLANE_HPHERO_PLANE_HP-=5敌机类classEnemy(GameSprite):def__init__(self,hero_plane,screen,image_path="./Plane_Img/"):=(1,3)_path=image_=_plane=hero__bullet=___interval=False这里还可以对以后飞机击落敌机的数量计数被用户撞了HP值减少20globalHERO_PLANE_HPiflen(_with_plan)==1:HERO_PLANE_HP-=20t=(target=_ing)()passdefBoom_ing(self):foriinrange(1,5):_path=_(i)=(_path)(0.2)()def__IS_collied_with_plan(self):定义敌机的出现self.__Boom()//越界判断绑定常量事件def__game_over(self):globalHERO_PLANE__:whileTrue:bye=("./Plane_Img/gameover_.png")(bye,(0,0))()():==:()os._exit(0)def__Listening_keyboard(self,hero_palne):'''键盘按键事件侦听''''''hero_palne部分是侦听用户飞机的其余的是其他的事件侦听'''():==:()os._exit(0)==:检测键盘松开==_==_UP:hero_===_==_LEFT:hero_===_==_RIGHT:hero_===_==_DOWN:hero_===_SPACE:hero__flag=False临时的东西enemy=Enemy(_palne,)_(enemy)def__Show_enemy(self):_group:_()_()def__Check_planecollied_enemy(self):passdefstar_game(self):PlayerMusic=MusicPlay()()hero_palne=Planer(200,500,100,125,"./Plane_Img/",)self.__BackGround_init()加载敌机while1:self.__ShowBackGround()self.__Show_enemy()self.__Listening_keyboard(_palne)_()_()__Live()self.__game_over()()#敲黑板这个方法最好只出现一次,就在你的游戏主循环里面实现_(60)if__name__=='__main__':t=(target=CheatEngine)()Game=PlayGame()_game()————————————————
版权声明:本文为CSDN博主「HUTEROX」的原创文章,遵循版权协议,转载请附上原文出处链接及本声明。