当前位置:   article > 正文

第四篇【传奇开心果微博系列】Python微项目技术点案例示例:美女颜值判官(1)

第四篇【传奇开心果微博系列】Python微项目技术点案例示例:美女颜值判官(1)

创建美女对象

beauty1 = Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2)
beauty2 = Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
all_sprites.add(beauty1)
all_sprites.add(beauty2)

创建分数对象

score = Score(screen_width // 2, 50)
all_sprites.add(score)

创建道具对象

power_up = PowerUp(screen_width // 2, screen_height // 2, “power_up.png”, “double_score”)
all_sprites.add(power_up)

游戏主循环

running = True
clock = pygame.time.Clock()
spawn_timer = 0
difficulty_level = 1
while running:
clock.tick(60)

# 事件处理
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False
    elif event.type == pygame.MOUSEBUTTONDOWN:
        if power_up.rect.collidepoint(event.pos):
            if power_up.effect == "double\_score":
                score.score \*= 2
                power_up.kill()

# 更新精灵组中的所有精灵
all_sprites.update()

# 控制美女的出现频率和移动速度
spawn_timer += 1
if spawn_timer >= 60 / difficulty_level:
    beauty = Beauty(screen_width + 50, random.randint(50, screen_height - 50), "beauty1.png", 10, "可爱", random.randint(2, 4))
    all_sprites.add(beauty)
    spawn_timer = 0

# 碰撞检测
collisions = pygame.sprite.spritecollide(beauty1, all_sprites, True)
for collision in collisions:
    score.score += collision.score

# 绘制背景
window.fill((0, 0, 0))

# 绘制所有精灵
all_sprites.draw(window)

# 刷新屏幕
pygame.display.flip()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

退出游戏

pygame.quit()


在这个示例代码中,我们创建了一个`PowerUp`类来表示道具,道具可以通过点击获取。在点击道具时,我们根据道具的效果来增加得分或改变游戏规则。在示例中,道具的效果是双倍得分,当玩家点击道具时,得分将会翻倍。


注意:你需要准备相应的美女图片资源(“beauty1.png"和"beauty2.png”)、道具图片资源(“power\_up.png”),并将它们与示例代码放在同一目录下。


### 七、设计关卡系统示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/d61f071061394bed94b0bf5c35a722c8.jpg)以下是设计关卡系统的示例代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

import pygame
import random

初始化游戏

pygame.init()

设置窗口大小和标题

screen_width = 800
screen_height = 600
window = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“给美女打分”)

定义美女类

class Beauty(pygame.sprite.Sprite):
def __init__(self, x, y, image, score, special_attribute, speed):
super().init()
self.image = pygame.image.load(image) # 美女的图片资源
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.score = score # 美女的得分
self.special_attribute = special_attribute # 美女的特殊属性
self.speed = speed # 美女的移动速度

def update(self):
    self.rect.x += self.speed
  • 1
  • 2

定义分数类

class Score(pygame.sprite.Sprite):
def __init__(self, x, y, target_score):
super().init()
self.score = 0
self.target_score = target_score # 目标得分
self.font = pygame.font.Font(None, 36)
self.text = self.font.render("Score: " + str(self.score), True, (255, 255, 255))
self.rect = self.text.get_rect()
self.rect.center = (x, y)

def update(self):
    self.text = self.font.render("Score: " + str(self.score), True, (255, 255, 255))
  • 1
  • 2

定义关卡类

class Level:
def __init__(self, target_score, beauties):
self.target_score = target_score # 目标得分
self.beauties = beauties # 美女列表

def is\_completed(self, score):
    return score >= self.target_score
  • 1
  • 2

创建精灵组

all_sprites = pygame.sprite.Group()

创建关卡列表

levels = [
Level(50, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
]),
Level(100, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty3.png”, 15, “甜美”, 3),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty4.png”, 25, “迷人”, 4)
])
]

current_level = 0
level = levels[current_level]

创建分数对象

score = Score(screen_width // 2, 50, level.target_score)
all_sprites.add(score)

将当前关卡的美女添加到精灵组中

for beauty in level.beauties:
all_sprites.add(beauty)

游戏主循环

running = True
clock = pygame.time.Clock()
spawn_timer = 0
difficulty_level = 1
while running:
clock.tick(60)

# 事件处理
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

# 更新精灵组中的所有精灵
all_sprites.update()

# 控制美女的出现频率和移动速度
spawn_timer += 1
if spawn_timer >= 60 / difficulty_level:
    beauty = random.choice(level.beauties)
    beauty = Beauty(screen_width + 50, random.randint(50, screen_height - 50), beauty.image, beauty.score, beauty.special_attribute, random.randint(2, 4))
    all_sprites.add(beauty)
    spawn_timer = 0

# 碰撞检测
collisions = pygame.sprite.spritecollide(beauty, all_sprites, True)
for collision in collisions:
    score.score += collision.score

# 检查当前关卡是否完成
if level.is_completed(score.score):
    current_level += 1
    if current_level < len(levels):
        level = levels[current_level]
        score = Score(screen_width // 2, 50, level.target_score)
        all_sprites.add(score)
        for beauty in level.beauties:
            all_sprites.add(beauty)
    else:
        running = False

# 绘制背景
window.fill((0, 0, 0))

# 绘制所有精灵
all_sprites.draw(window)

# 刷新屏幕
pygame.display.flip()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

退出游戏

pygame.quit()


在这个示例代码中,我们创建了一个`Level`类来表示关卡,每个关卡有一个目标得分和一组美女。在游戏主循环中,我们检查当前关卡的得分是否达到目标得分,如果达到则进入下一个关卡。如果所有关卡都完成,则游戏结束。


注意:你需要准备相应的美女图片资源(“beauty1.png”、“beauty2.png”、“beauty3.png”、“beauty4.png”),并将它们与示例代码放在同一目录下。每个关卡可以根据需求设计不同的美女和目标得分。


### 八、添加音效和背景音乐示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/b331448edfaa411baecea7e03f901c5d.png)以下是为游戏添加音效和背景音乐的示例代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

import pygame
import random

初始化游戏

pygame.init()

设置窗口大小和标题

screen_width = 800
screen_height = 600
window = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“给美女打分”)

加载背景音乐

pygame.mixer.music.load(“background_music.mp3”)
pygame.mixer.music.set_volume(0.5) # 设置音量
pygame.mixer.music.play(-1) # 循环播放背景音乐

加载音效

score_sound = pygame.mixer.Sound(“score_sound.wav”)

定义美女类

class Beauty(pygame.sprite.Sprite):
def __init__(self, x, y, image, score, special_attribute, speed):
super().init()
self.image = pygame.image.load(image) # 美女的图片资源
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.score = score # 美女的得分
self.special_attribute = special_attribute # 美女的特殊属性
self.speed = speed # 美女的移动速度

def update(self):
    self.rect.x += self.speed
  • 1
  • 2

定义分数类

class Score(pygame.sprite.Sprite):
def __init__(self, x, y, target_score):
super().init()
self.score = 0
self.target_score = target_score # 目标得分
self.font = pygame.font.Font(None, 36)
self.text = self.font.render("Score: " + str(self.score), True, (255, 255, 255))
self.rect = self.text.get_rect()
self.rect.center = (x, y)

def update(self):
    self.text = self.font.render("Score: " + str(self.score), True, (255, 255, 255))
  • 1
  • 2

定义关卡类

class Level:
def __init__(self, target_score, beauties):
self.target_score = target_score # 目标得分
self.beauties = beauties # 美女列表

def is\_completed(self, score):
    return score >= self.target_score
  • 1
  • 2

创建精灵组

all_sprites = pygame.sprite.Group()

创建关卡列表

levels = [
Level(50, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
]),
Level(100, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty3.png”, 15, “甜美”, 3),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty4.png”, 25, “迷人”, 4)
])
]

current_level = 0
level = levels[current_level]

创建分数对象

score = Score(screen_width // 2, 50, level.target_score)
all_sprites.add(score)

将当前关卡的美女添加到精灵组中

for beauty in level.beauties:
all_sprites.add(beauty)

游戏主循环

running = True
clock = pygame.time.Clock()
spawn_timer = 0
difficulty_level = 1
while running:
clock.tick(60)

# 事件处理
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

# 更新精灵组中的所有精灵
all_sprites.update()

# 控制美女的出现频率和移动速度
spawn_timer += 1
if spawn_timer >= 60 / difficulty_level:
    beauty = random.choice(level.beauties)
    beauty = Beauty(screen_width + 50, random.randint(50, screen_height - 50), beauty.image, beauty.score, beauty.special_attribute, random.randint(2, 4))
    all_sprites.add(beauty)
    spawn_timer = 0

# 碰撞检测
collisions = pygame.sprite.spritecollide(beauty, all_sprites, True)
for collision in collisions:
    score.score += collision.score
    score_sound.play()  # 播放得分音效

# 检查当前关卡是否完成
if level.is_completed(score.score):
    current_level += 1
    if current_level < len(levels):
        level = levels[current_level]
        score = Score(screen_width // 2, 50, level.target_score)
        all_sprites.add(score)
        for beauty in level.beauties:
            all_sprites.add(beauty)
    else:
        running = False

# 绘制背景
window.fill((0, 0, 0))

# 绘制所有精灵
all_sprites.draw(window)

# 刷新屏幕
pygame.display.flip()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

停止背景音乐

pygame.mixer.music.stop()

退出游戏

pygame.quit()


在这个示例代码中,我们使用`pygame.mixer.music`模块加载并播放背景音乐。我们还使用`pygame.mixer.Sound`类加载音效文件,并在美女被击中时播放得分音效。


注意:你需要准备相应的音乐文件(“background\_music.mp3”)和音效文件(“score\_sound.wav”),并将它们与示例代码放在同一目录下。确保音乐文件和音效文件的文件路径正确。


### 九、多人游戏模式示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/2b2b8b80d68d487da34223e6f934fd38.jpg)以下是添加多人游戏模式的示例代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

import pygame
import random

初始化游戏

pygame.init()

设置窗口大小和标题

screen_width = 800
screen_height = 600
window = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“给美女打分 - 多人游戏模式”)

加载背景音乐

pygame.mixer.music.load(“background_music.mp3”)
pygame.mixer.music.set_volume(0.5) # 设置音量
pygame.mixer.music.play(-1) # 循环播放背景音乐

加载音效

score_sound = pygame.mixer.Sound(“score_sound.wav”)

定义美女类

class Beauty(pygame.sprite.Sprite):
def __init__(self, x, y, image, score, special_attribute, speed):
super().init()
self.image = pygame.image.load(image) # 美女的图片资源
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.score = score # 美女的得分
self.special_attribute = special_attribute # 美女的特殊属性
self.speed = speed # 美女的移动速度

def update(self):
    self.rect.x += self.speed
  • 1
  • 2

定义分数类

class Score(pygame.sprite.Sprite):
def __init__(self, x, y, player_name):
super().init()
self.score = 0
self.player_name = player_name # 玩家名称
self.font = pygame.font.Font(None, 36)
self.text = self.font.render(self.player_name + ": " + str(self.score), True, (255, 255, 255))
self.rect = self.text.get_rect()
self.rect.center = (x, y)

def update(self):
    self.text = self.font.render(self.player_name + ": " + str(self.score), True, (255, 255, 255))
  • 1
  • 2

定义关卡类

class Level:
def __init__(self, target_score, beauties):
self.target_score = target_score # 目标得分
self.beauties = beauties # 美女列表

def is\_completed(self, score):
    return score >= self.target_score
  • 1
  • 2

创建精灵组

all_sprites = pygame.sprite.Group()

创建关卡列表

levels = [
Level(50, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
]),
Level(100, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty3.png”, 15, “甜美”, 3),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty4.png”, 25, “迷人”, 4)
])
]

num_players = 2 # 玩家数量
players = [] # 玩家列表

创建玩家对象和分数对象

for i in range(num_players):
player_name = "Player " + str(i+1)
player_score = Score(screen_width // 2, 50 + i*50, player_name)
players.append(player_score)
all_sprites.add(player_score)

current_level = 0
level = levels[current_level]

将当前关卡的美女添加到精灵组中

for beauty in level.beauties:
all_sprites.add(beauty)

游戏主循环

running = True
clock = pygame.time.Clock()
spawn_timer = 0
difficulty_level = 1
while running:
clock.tick(60)

# 事件处理
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False
    elif event.type == pygame.MOUSEBUTTONDOWN:
        mouse_pos = pygame.mouse.get_pos()
        clicked_sprites = [s for s in all_sprites if s.rect.collidepoint(mouse_pos)]
        for sprite in clicked_sprites:
            if isinstance(sprite, Beauty):
                for player in players:
                    if player.rect.collidepoint(mouse_pos):
                        player.score += sprite.score
                        score_sound.play()  # 播放得分音效

# 更新精灵组中的所有精灵
all_sprites.update()

# 控制美女的出现频率和移动速度
spawn_timer += 1
if spawn_timer >= 60 / difficulty_level:
    beauty = random.choice(level.beauties)
    beauty = Beauty(screen_width + 50, random.randint(50, screen_height - 50), beauty.image, beauty.score, beauty.special_attribute, random.randint(2, 4))
    all_sprites.add(beauty)
    spawn_timer = 0

# 检查当前关卡是否完成
if level.is_completed(players[0].score):
    current_level += 1
    if current_level < len(levels):
        level = levels[current_level]
        for player in players:
            player.score = 0
        for beauty in level.beauties:
            all_sprites.add(beauty)
    else:
        running = False

# 绘制背景
window.fill((0, 0, 0))

# 绘制所有精灵
all_sprites.draw(window)

# 刷新屏幕
pygame.display.flip()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

停止背景音乐

pygame.mixer.music.stop()

退出游戏

pygame.quit()


在这个示例代码中,我们创建了一个`players`列表来存储多个玩家的得分对象。在游戏主循环中,我们检查鼠标点击事件,并根据点击位置和美女对象的碰撞检测来增加玩家的得分。每个玩家都有自己的得分对象,并在屏幕上显示出来。


注意:你需要准备相应的美女图片资源(“beauty1.png”、“beauty2.png”、“beauty3.png”、“beauty4.png”),并将它们与示例代码放在同一目录下。你可以根据需要调整玩家数量和相关设置。


### 十、排行榜和成就系统示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/eb0ae4e6f4044dfcbb3d1b05b59a7f08.jpg)以下是添加排行榜和成就系统的示例代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

import pygame
import random
import json

初始化游戏

pygame.init()

设置窗口大小和标题

screen_width = 800
screen_height = 600
window = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“给美女打分 - 多人游戏模式”)

加载背景音乐

pygame.mixer.music.load(“background_music.mp3”)
pygame.mixer.music.set_volume(0.5) # 设置音量
pygame.mixer.music.play(-1) # 循环播放背景音乐

加载音效

score_sound = pygame.mixer.Sound(“score_sound.wav”)

定义美女类

class Beauty(pygame.sprite.Sprite):
def __init__(self, x, y, image, score, special_attribute, speed):
super().init()
self.image = pygame.image.load(image) # 美女的图片资源
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.score = score # 美女的得分
self.special_attribute = special_attribute # 美女的特殊属性
self.speed = speed # 美女的移动速度

def update(self):
    self.rect.x += self.speed
  • 1
  • 2

定义分数类

class Score(pygame.sprite.Sprite):
def __init__(self, x, y, player_name):
super().init()
self.score = 0
self.player_name = player_name # 玩家名称
self.font = pygame.font.Font(None, 36)
self.text = self.font.render(self.player_name + ": " + str(self.score), True, (255, 255, 255))
self.rect = self.text.get_rect()
self.rect.center = (x, y)

def update(self):
    self.text = self.font.render(self.player_name + ": " + str(self.score), True, (255, 255, 255))
  • 1
  • 2

定义关卡类

class Level:
def __init__(self, target_score, beauties):
self.target_score = target_score # 目标得分
self.beauties = beauties # 美女列表

def is\_completed(self, score):
    return score >= self.target_score
  • 1
  • 2

创建精灵组

all_sprites = pygame.sprite.Group()

创建关卡列表

levels = [
Level(50, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
]),
Level(100, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty3.png”, 15, “甜美”, 3),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty4.png”, 25, “迷人”, 4)
])
]

num_players = 2 # 玩家数量
players = [] # 玩家列表

创建玩家对象和分数对象

for i in range(num_players):
player_name = "Player " + str(i+1)
player_score = Score(screen_width // 2, 50 + i*50, player_name)
players.append(player_score)
all_sprites.add(player_score)

current_level = 0
level = levels[current_level]

将当前关卡的美女添加到精灵组中

for beauty in level.beauties:
all_sprites.add(beauty)

加载排行榜数据

leaderboard_data = {}
try:
with open(“leaderboard.json”, “r”) as f:
leaderboard_data = json.load(f)
except FileNotFoundError:
pass

游戏主循环

running = True
clock = pygame.time.Clock()
spawn_timer = 0
difficulty_level = 1
while running:
clock.tick(60)

# 事件处理
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False
    elif event.type == pygame.MOUSEBUTTONDOWN:
        mouse_pos = pygame.mouse.get_pos()
        clicked_sprites = [s for s in all_sprites if s.rect.collidepoint(mouse_pos)]
        for sprite in clicked_sprites:
            if isinstance(sprite, Beauty):
                for player in players:
                    if player.rect.collidepoint(mouse_pos):
                        player.score += sprite.score
                        score_sound.play()  # 播放得分音效

# 更新精灵组中的所有精灵
all_sprites.update()

# 控制美女的出现频率和移动速度
spawn_timer += 1
if spawn_timer >= 60 / difficulty_level:
    beauty = random.choice(level.beauties)
    beauty = Beauty(screen_width + 50, random.randint(50, screen_height - 50), beauty.image, beauty.score, beauty.special_attribute, random.randint(2, 4))
    all_sprites.add(beauty)
    spawn_timer = 0

# 检查当前关卡是否完成
if level.is_completed(players[0].score):
    current_level += 1
    if current_level < len(levels):
        level = levels[current_level]
        for player in players:
            player.score = 0
        for beauty in level.beauties:
            all_sprites.add(beauty)
    else:
        running = False

# 绘制背景
window.fill((0, 0, 0))

# 绘制所有精灵
all_sprites.draw(window)

# 刷新屏幕
pygame.display.flip()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

停止背景音乐

pygame.mixer.music.stop()

更新排行榜数据

for player in players:
if player.player_name not in leaderboard_data:
leaderboard_data[player.player_name] = player.score
else:
leaderboard_data[player.player_name] = max(leaderboard_data[player.player_name], player.score)

保存排行榜数据

with open(“leaderboard.json”, “w”) as f:
json.dump(leaderboard_data, f)

输出排行榜

sorted_leaderboard = sorted(leaderboard_data.items(), key=lambda x: x[1], reverse=True)
print(“排行榜:”)
for i, (player_name, score) in enumerate(sorted_leaderboard):
print(f"{i+1}. {player_name}: {score}")

退出游戏

pygame.quit()


在这个示例代码中,我们使用`json`模块来加载和保存排行榜数据。在游戏主循环结束后,我们根据玩家的得分更新排行榜数据,并将排行榜数据保存到`leaderboard.json`文件中。最后,我们对排行榜数据进行排序,并输出排行榜的内容。


注意:你需要准备相应的美女图片资源(“beauty1.png”、“beauty2.png”、“beauty3.png”、“beauty4.png”),并将它们与示例代码放在同一目录下。确保音乐文件和音效文件的文件路径正确。


### 十一、增加动画效果示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/26697df6aee548f49d782d33082abc07.jpg)以下是为美女的出现、消失和得分时添加动画效果的示例代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

import pygame
import random

初始化游戏

pygame.init()

设置窗口大小和标题

screen_width = 800
screen_height = 600
window = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“给美女打分 - 多人游戏模式”)

加载背景音乐

pygame.mixer.music.load(“background_music.mp3”)
pygame.mixer.music.set_volume(0.5) # 设置音量
pygame.mixer.music.play(-1) # 循环播放背景音乐

加载音效

score_sound = pygame.mixer.Sound(“score_sound.wav”)

定义美女类

class Beauty(pygame.sprite.Sprite):
def __init__(self, x, y, image, score, special_attribute, speed):
super().init()
self.image = pygame.image.load(image) # 美女的图片资源
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.score = score # 美女的得分
self.special_attribute = special_attribute # 美女的特殊属性
self.speed = speed # 美女的移动速度
self.animation_timer = 0
self.animation_duration = 30

def update(self):
    self.rect.x += self.speed

    # 美女出现动画效果
    if self.animation_timer < self.animation_duration:
        self.rect.y -= 2
        self.animation_timer += 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

定义分数类

class Score(pygame.sprite.Sprite):
def __init__(self, x, y, player_name):
super().init()
self.score = 0
self.player_name = player_name # 玩家名称
self.font = pygame.font.Font(None, 36)
self.text = self.font.render(self.player_name + ": " + str(self.score), True, (255, 255, 255))
self.rect = self.text.get_rect()
self.rect.center = (x, y)
self.animation_timer = 0
self.animation_duration = 30

def update(self):
    # 分数增加动画效果
    if self.animation_timer < self.animation_duration:
        self.rect.y -= 2
        self.animation_timer += 1
  • 1
  • 2
  • 3
  • 4
  • 5

定义关卡类

class Level:
def __init__(self, target_score, beauties):
self.target_score = target_score # 目标得分
self.beauties = beauties # 美女列表

def is\_completed(self, score):
    return score >= self.target_score
  • 1
  • 2

创建精灵组

all_sprites = pygame.sprite.Group()

创建关卡列表

levels = [
Level(50, [
Beauty(screen_width // 2 - 100, screen_height // 2, “beauty1.png”, 10, “可爱”, 2),
Beauty(screen_width // 2 + 100, screen_height // 2, “beauty2.png”, 20, “性感”, 3)
]),

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/568628
推荐阅读
相关标签
  

闽ICP备14008679号