建议从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")