当前位置: 首页 > 后端技术 > Python

用Python写一个魂斗罗,附上30个Python小游戏源码

时间:2023-03-26 00:11:14 Python

今天分享一个经典游戏魂斗罗的Python实现。部分代码实现如下:.png')self.rect=self.image.get_rect()self.screen_rect=self.screen.get_rect()self.screen_center_pos=self.screen_rect.centerxself.rect.centerx=self.screen_rect.centerxself.rect。bottom=380self.center=float(self.rect.centerx)self.movi??ng_right=Falseself.movi??ng_left=Falseself.player_moving=Falseself.pos_i=0.0#运行画面变化速度self.pos_j=0.0#跳跃变化初始速度self.pos_n=0.0#射击self.pos_d=0.0self.player_direction=1#1向右,-1向左self.player_down=Falseself.player_up=Falseself.player_jump=Falseself.player_start_Y=380#起始角色高度自己。player_Y=self.player_start_Yself.player_shooting=Falsedefupdate(self):ifself.game_settings.player_is_alive:ifself.movi??ng_rightandself.rect.rightself.screen_center_pos:self.center+=0else:self.center+=self.game_settings.player_speedifself.movi??ng_leftandself.rect.left>0:self.center-=self.game_settings.player_speedself.rect.centerx=self.centerself.update_image_moving()else:self.update_die()defupdate_die(self):self.names=locals()self.players=[]forself.iinrange(1,3):self.names['player_image%s'%self.i]=pygame.image.load('images/PR/death%s.png'%self.i)self.players.append(self.names['player_image%s'%self.i])self.image=self.players[int(self.pos_d)]self.pos_d+=0.1ifself.pos_d>2.0:self.pos_d=0.0self.game_settings.player_die_end=Truedefupdate_image_moving_direction(self,direction):#循环图片ifself.player_shooting==True:self.names=locals()self.players=[]为选择f.iinrange(1,4):self.names['player_image%s'%self.i]=pygame.image.load('images/'+direction+'/shooting%s.png'%self.i)自我.players.append(self.names['player_image%s'%self.i])self.image=self.players[int(self.pos_n)]self.pos_n+=0.1#射击时跑步速度ifself.pos_n>3.0:#射击时跑步有3个动作self.pos_n=0.0else:self.names=locals()self.players=[]forself.iinrange(1,6):self.names['player_image%s'%self.i]=pygame.image.load('images/'+direction+'/player%s.png'%self.i)self.players.append(self.names['player_image%s'%self.i])self.image=self.players[int(self.pos_i)]self.pos_i+=0.1#跑步速度ifself.pos_i>5.0:#跑步有5个动作self.pos_i=0.0defupdate_image_jump(self,direction):#循环图片ifself.game_settings.player_is_alive:ifself.player_jump==True:self.names1=locals()self.players1=[]forself.jinrange(1,5):self.names1['player_image%s'%self.j]=pygame.image.load('images/'+direction+'/jump%s.png'%self.j)self.players1.append(self.names1['player_image%s'%self.j])self.image=self.players1[int(self.pos_j)]self.pos_j+=0.3#跳跃旋转速度ifself.pos_j>4.0:#跳跃有4个动作self.pos_j=0.0else:self.update_die()defupdate_image_moving(self):ifself.player_moving:ifself.movi??ng_right:self.update_image_moving_direction('PR')#PR是向右的图片elifself.movi??ng_left:self.update_image_moving_direction('PL')defget_player_state(self,player_state):#检测玩家的状态是否为趴下,向上,跳跃等ifself.player_direction==1:self.image=pygame.image.load('images/PR/'+player_state+'.png')ifself.player_direction==-1:self.image=pygame.image.load('images/PL/'+player_state+'.png')self.rect=self.image.get_rect()self.rect.centerx=self.centerdefget_player_down(self):self.get_player_state('down')self.rect.bottom=self.player_start_Yself.screen.blit(self.image,self.rect)defget_player_up(self):self.get_player_state('up')self.rect.bottom=self.player_start_Yself.screen.blit(self.image,self.rect)defget_player_jump(self):self.get_player_state('jump1')self.rect.bottom=self.player_Yifself.game_settings.jump_vel<0:self.game_settings.jump_vel+=0.6#增加跳起来的速度elifself.game_settings.jump_vel>0:self.game_settings.jump_vel+=0.8#增加自己跳下的速度.player_Y+=self.game_settings.jump_velifself.player_Y>self.player_start_Y:self.player_jump=Falseself.player_Y=self.player_start_Yself.game_settings.jump_vel=-14.0#恢复跳跃开始速度ifself.player_direction==1:self.image=pygame.image.load('images/PR/player.png')self.reset_player()如果self.player_direction==-1:self.image=pygame.image.load('images/PL/player.png')self.reset_player()ifself.player_jump==True:#判断是否处于跳跃状态决定是否旋转跳跃图像ifself.player_direction==1:self.update_image_jump('PR')如果自己。player_direction==-1:self.update_image_jump('PL')self.screen.blit(self.image,self.rect)defreset_player(self):self.rect=self.image.get_rect()self.rect.centerx=self.centerself.rect.bottom=self.player_start_Yself.screen.blit(self.image,self.rect)defblitme(self):ifself.player_jump:self.get_player_jump()elifself.player_down:self.get_player_down()elifself.player_up:self.get_player_up()else:self.reset_player()defrevive_player(self):self.center=self.screen_rect.centerxself.game_settings.player_is_alive=True效果如下:操作说明:A:左D:右W:跳上去S:下来J:射击P:退出程序魂斗罗和30个Python小游戏源码回复公众号Python小二后台py小游戏~