python_飞机大战_jiemian_py_九

建议从python_飞机大战_diren_py_一 开始看

 

import pygame


shuju = ["0"]
class JieMian():
    def __init__(self,scene):
        #缓存主场景对象
        self.main_scene = scene
        self.game_start_button = True
        self.again = False
        self.game_end = False
        self.socrefont = pygame.font.SysFont(".//font//Interstate Mono - Blk.ttf",70)
        self.highfont = pygame.font.SysFont(".//font//arial-14.fnt",30)
        self.high_score = max(shuju)
        self.init()
        self.play_again_rect = self.play_again_button.get_rect()
        self.game_end_rect = self.game_end_button.get_rect()
        self.prep_start_bg()
        self.prep_start_game()

    #初始化加载图片赋值给变量
    def init(self):
        self.start_logo = pygame.image.load("images/start_logo1.png").convert_alpha()
        self.start_game_image = pygame.image.load("images/img_start_bg.jpg").convert_alpha()
        self.start_game_button = pygame.image.load("images/start_game.png").convert_alpha()
        self.end_game_image = pygame.image.load("images/end_bg.jpg").convert_alpha()
        self.play_again_button = pygame.image.load("images/again.png").convert_alpha()
        self.game_end_button = pygame.image.load("images/end.png").convert_alpha()       
        self.get_score_bg = pygame.image.load("images/endofscore/get_score.png").convert_alpha()
        self.get_pojilu_bg = pygame.image.load("images/endofscore/pojilu.png").convert_alpha()
        self.get_jiayouo_bg = pygame.image.load("images/endofscore/jiayouo.png").convert_alpha()
        self.get_tongguan = pygame.image.load("images/endofscore/tongguan.png").convert_alpha()
        
    
    #开始游戏背景
    def prep_start_bg(self):
        self.main_scene.scene.blit(self.start_game_image, (0, 0))
        self.main_scene.scene.blit(self.start_logo, (20, 300))
        self.prep_start_game()
    #开始游戏按钮    
    def prep_start_game(self):
        self.start_rect = self.start_game_button.get_rect()
        self.start_rect[0] = 180 
        self.start_rect[1] = 520
        self.main_scene.scene.blit(self.start_game_button, (self.start_rect[0], self.start_rect[1]))


    #结束界面
    def play_again(self):
        self.play_again_rect[0] = 190 
        self.play_again_rect[1] = 480
        self.main_scene.scene.blit(self.play_again_button, (self.play_again_rect[0], self.play_again_rect[1]))
        self.game_end_rect[0] = 190 
        self.game_end_rect[1] = 560
        self.main_scene.scene.blit(self.game_end_button, (self.game_end_rect[0], self.game_end_rect[1]))
    
    #得分界面背景
    def get_finally_score(self,score,fly_distance):
        self.get_score_bg_rect = self.get_score_bg.get_rect()
        self.get_score_bg_rect[0] = 35 
        self.get_score_bg_rect[1] = 155
        self.main_scene.scene.blit(self.get_score_bg, (self.get_score_bg_rect[0], self.get_score_bg_rect[1]))
        finally_score = score + int(fly_distance)*3
        #判断
        self.high_score = max(shuju)
        if finally_score < int(self.high_score):
            self.get_jiayouo_bg_rect = self.get_jiayouo_bg.get_rect()
            self.get_jiayouo_bg_rect[0] = 185 
            self.get_jiayouo_bg_rect[1] = 290
            self.main_scene.scene.blit(self.get_jiayouo_bg, (self.get_jiayouo_bg_rect[0], self.get_jiayouo_bg_rect[1]))
        else:
            self.get_pojilu_bg_rect = self.get_pojilu_bg.get_rect()
            self.get_pojilu_bg_rect[0] = 185 
            self.get_pojilu_bg_rect[1] = 290
            self.main_scene.scene.blit(self.get_pojilu_bg, (self.get_pojilu_bg_rect[0], self.get_pojilu_bg_rect[1]))
            self.high_score = finally_score
            write_high_score(self.high_score)
            
        #加载最终得分
        self.finally_score_image = self.socrefont.render(str(finally_score),    True, (254,199,11))
        #获得分数图像大小
        self.finally_score_image_rect = self.finally_score_image.get_rect()
        #分数位置
        self.finally_score_image_rect[0] = 210 #   x坐标 距离左边屏幕100像素的距离
        self.finally_score_image_rect[1] = 350  #   y坐标 距离顶部屏幕5 像素的距离
        #     主屏幕                           得分图片             x坐标                           y坐标
        self.main_scene.scene.blit(self.finally_score_image,(self.finally_score_image_rect[0],self.finally_score_image_rect[1]))
        
        #最高分
        
        self.high_score_image = self.highfont.render("High score: " + str(self.high_score),    True, (254,199,11))
        self.high_score_image_rect = self.high_score_image.get_rect()
        self.main_scene.scene.blit(self.high_score_image,(160,410))
    #通关;
    def tongguan(self,score,fly_distance):
        self.main_scene.scene.blit(self.get_tongguan, (-70,0))
        finally_score = score + int(fly_distance)*3
        #加载最终得分
        self.finally_score_image = self.socrefont.render(str(finally_score),    True, (254,199,11))
        #获得分数图像大小
        self.finally_score_image_rect = self.finally_score_image.get_rect()
        #分数位置
        self.finally_score_image_rect[0] = 190 #   x坐标 距离左边屏幕100像素的距离
        self.finally_score_image_rect[1] = 450  #   y坐标 距离顶部屏幕5 像素的距离
        #     主屏幕                           得分图片             x坐标                           y坐标
        self.main_scene.scene.blit(self.finally_score_image,(self.finally_score_image_rect[0],self.finally_score_image_rect[1]))
    #绘制
    def draw(self,score,fly_distance):
        self.main_scene.scene.blit(self.end_game_image, (0,0))
        self.play_again()
        self.get_finally_score(score,fly_distance)
#写入数据
def write_high_score(high):
    if str(high) not in shuju:
        with open('./high_score.txt') as f:
            for line in f:
                shuju.append(line.rstrip())
    if str(high) not in shuju:
        with open('./high_score.txt','a+') as f:
            f.write(str(high) + "\n")                
        
    
    
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值