导入pygame库*导入sys库中的exit函数importrandomimportcodecs子弹类classBullet():def__init__(self,bullet_img,init_pos):调用了父类的初始化方法来初始化sprite的属性=bullet_=_rect()=init_=10defmove(self):=用来存储玩家飞机图片的列表foriinrange(len(player_rect)):(player_rect[i].convert_alpha())=player_rect[0].get_rect()初始化矩形的左上角坐标=8玩家飞机所发射的子弹的集合_index=0玩家是否被击中向上移动,需要判断边界defmoveUp(self):=0:=0else:=向左移动,需要判断边界defmoveLeft(self):=0:=0else:=敌机类classEnemy():def__init__(self,enemy_img,enemy_down_imgs,init_pos):__init__(self)=enemy_=_rect()=init__imgs=enemy_down_=2_index=0初始化()游戏界面标题_caption('彩图版飞机大战')背景图background=('resources/image/').convert_alpha()子弹图片plane_bullet=('resources/image/')敌机图片enemy_img1=('resources/image/')enemy_img2=('resources/image/')enemy_img3=('resources/image/')enemy_img4=('resources/image/')设置玩家飞机不同状态的图片列表,多张图片展示为动画效果player_rect=[]玩家爆炸图片player_(player_img2)player_(player_img3)player_(player_img4)player_(player_img5)player_pos=[200,600]子弹图片bullet_img=plane_bullet储存敌机enemies1=()初始化射击及敌机移动频率shoot_frequency=0enemy_frequency=0初始化分数score=0判断游戏循环退出的参数running=True绘制背景(0)(background,(0,0))生成子弹,需要控制发射频率以固定速度移动子弹()显示子弹(screen)移动敌机()移动出屏幕后删除飞机:(enemy)将被击中的敌机对象添加到击毁敌机Group中,用来渲染击毁动画遍历key值返回的碰撞敌机forenemy_downinenemies1_down:绘制玩家飞机_hit:([_index],)玩家飞机被击中后的效果处理_index=player_down_index//8([_index],)player_down_index+=1ifplayer_down_index47:敌机被子弹击中效果显示forenemy_downinenemies_down:ifenemy__index==0:passifenemy__index7:enemies_(enemy_down)score+=100continue显示精灵(screen)更新屏幕()获取键盘事件(上下左右按键)key_pressed=_pressed()绘制游戏结束背景(game_over,(0,0))使用系统字体xtfont=('SimHei',30)排行榜按钮textstart=('排行榜',True,(255,255,255))text_rect=_rect()text_=_rect().centerxtext_=_rect().centery+180(textstart,text_rect)临时的变量在到排行榜的时候使用j=0循环分数列表在列表里排序foriinrange(0,len(arrayscore)):大于排行榜上的内容把分数和当前分数进行替换j=arrayscore[i]arrayscore[i]=str(score)score=0循环分数列表写入文档foriinrange(0,len(arrayscore)):覆盖写入内容追加mr方便分割内容write_txt(arrayscore[i]+'mr','w',r'')else:最近添加内容最后一个分数不添加mrwrite_txt(arrayscore[i],'a',r'')else:排行榜defgameRanking():screen2=_mode((SCREEN_WIDTH,SCREEN_HEIGHT))使用系统字体xtfont=('SimHei',30)重新开始按钮textstart=('重新开始',True,(255,0,0))text_rect=_rect()text_=_rect().centerxtext_=_rect().centery+120(textstart,text_rect)循环排行榜文件显示排行foriinrange(0,len(arrayscore)):排名重1到10k=i+1text=(str(k)+""+arrayscore[i],True,(255,0,0))text_rect=_rect()text_=_rect().centerxtext_=80+30*k开始游戏startGame()关闭页面游戏退出==:()exit()判断鼠标单击的位置是否为开始按钮位置范围内_rect().centerx-70=[0]\[0]=_rect().centerx+50\_rect().centery+100=[1]\_rect().centery+140=[1]:判断鼠标是否单击排行榜按钮_rect().centerx-70=[0]\[0]=_rect().centerx+50\_rect().centery+160=[1]\_rect().centery+200=[1]:更新界面()
版权声明:文章来源网络聚合,如有问题请联系删除。





