pygame入门小游戏(外星人入侵(10) 添加得分)

为了在屏幕上显示得分,我们再创建一个得分的类
score.py

import pygame.font

class Score():
    def __init__(self, my_setting, screen, start):
         self.screen = screen
         self.screen_rect = screen.get_rect()
         self.my_setting = my_setting
         self.start = start
         #设置得分信息的字体和颜色
         self.text_color = (30, 30, 30)
         self.font = pygame.font.SysFont(None, 48)

         self.prep_score()
    def prep_score(self):

        score_str = str(self.start.score)
        self.score_image = self.font.render(score_str, True, self.text_color, self.my_setting.bg_color)

        #放置分数位置
        self.score_rect = self.score_image.get_rect()
        self.score_rect.right = self.screen_rect.right - 20

        self.score_rect.top = 20
    #在屏幕上显示得分
    def show_score(self):
        self.screen.blit(self.score_image, self.score_rect)

main.py

.................
def run_game():
    .................
    start = GameStart(my_setting)
    s = Score(my_setting, screen, start)
    .........................

while True:
    .................
    ck.update_screen(my_setting, screen, start, ship, bullets, aliens, play_button, s)
    ........................

g_fun.py

def update_screen(my_setting, screen, start, ship, bullets, aliens, play_button, s):
    ...........................
    #显示得分
    s.show_score()
    if not start.game_active:
        play_button.draw_button()
        ...........................

g_start.py

class GameStart():
    ................

    def reset_start(self):
        #使每次开始都重置分数为0
        self.score = 0

运行程序,看到屏幕右上角显示分数为0
这里写图片描述

在外星人被时更新得分

setting.py

#每个外星飞船10分
self.alien_points = 10

g_fun.py

def check_b_a_collisions(my_setting, screen, ship, aliens, bullets, s, start,):

    collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)
    if collisions:
        for aliens in collisions.values():
            start.score += my_setting.alien_points
            s.prep_score()
    .....................................
def update_bullets(my_setting, screen, ship, aliens, bullets, s, start):

...........................................................
    check_b_a_collisions(my_setting, screen, ship, aliens, bullets, s, start)       

main.py

ck.update_bullets(my_setting, screen, ship, aliens, bullets, s, start)

运行程序, 没击杀一个飞船,得分10
这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值