likes
comments
collection
share

使用Pygame制作“嫦娥奔月”小游戏

作者站长头像
站长
· 阅读数 17

前言

中秋节是中国传统的重要节日之一,起源于嫦娥奔月的神话故事。一个名叫逢蒙的人发现了这个秘密,他企图威胁嫦娥交出药丸。在紧急情况下,嫦娥为了保护后羿,不得不吞下了那包药。结果,她立即感觉身体飘离了地面,冲出窗口,向天上飞去。由于她牵挂着丈夫,她飞到了离人间最近的月亮上,成为了仙女。

在中秋节这个特殊的日子里,人们不仅会欣赏明亮的月亮和嫦娥奔月的美丽故事,还会举行一些庆祝活动。接下来,我们使用Pygame制作“嫦娥奔月”小游戏。

使用Pygame制作“嫦娥奔月”小游戏

准备工作

  • pygame
  • sys

Pygame是一个用于开发2D游戏的Python库,它提供了许多用于游戏开发的工具和函数。使用Pygame,你可以创建各种类型的游戏,包括平台游戏、射击游戏、角色扮演游戏等。

程序代码及思路

我们先准备一张背景图,如上所示,嫦娥奔月怎么能少得了嫦娥呢。我们在准备一个嫦娥的图片。我们计划是通过嫦娥的图片实现奔月的过程。

安装相关库

import pygame  
import sys  

初始化

# 初始化pygame
pygame.init()  

# 设置窗口大小
infoObject = pygame.display.Info()
width = infoObject.current_w
height = infoObject.current_h
print(width,height)
window_size =  (width,height-50)
screen = pygame.display.set_mode(window_size)

设置标题

Pygame的初始化和窗口大小设置部分,接下来,我们设置标题和加载相应的图片。

# 设置标题  
pygame.display.set_caption("嫦娥奔月")  
  
# 加载嫦娥的图片  
chang_e = pygame.image.load('chang_e.jpg')
# 加载背景图片  
background_image = pygame.image.load('background.png')
# 缩放背景图片以匹配窗口大小  
background_image = pygame.transform.scale(background_image, window_size)  
# 设置嫦娥的初始位置
chang_e_pos = [width*0.84, height*0.66]

我们执行的效果是这样的:

使用Pygame制作“嫦娥奔月”小游戏

游戏主程序

# 游戏主循环  
while True:  
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:  
            pygame.quit()  
            sys.exit()
        elif event.type == pygame.KEYDOWN:  # 监听键盘按下事件  
            if event.key == pygame.K_q:  # 判断是否按下 Q 键  
                pygame.quit()  
                sys.exit()

嫦娥奔月

我们接下来就是按键控制移动,以及移动到月亮的位置显示奔月成功。

# 检测按键事件  
    keys = pygame.key.get_pressed()  
    if keys[pygame.K_LEFT]:  
        chang_e_pos[0] -= 1  
    if keys[pygame.K_RIGHT]:  
        chang_e_pos[0] += 1  
    if keys[pygame.K_UP]:  
        chang_e_pos[1] -= 1  
    if keys[pygame.K_DOWN]:  
        chang_e_pos[1] += 1  
          
    # 清屏  
    screen.fill((255, 255, 255))  
    # 绘制背景图片  
    screen.blit(background_image, (0, 0))
   
    # 绘制嫦娥  
    screen.blit(chang_e, chang_e_pos)
    # 检查图片是否接近(250,100)  
    if abs(chang_e_pos[0] - 250) < 10 and abs(chang_e_pos[1] - 100) < 10:
        sus = pygame.image.load('嫦娥奔月.jpg')
        font = pygame.font.Font('myfont.ttf', 40)  # 设置字体和大小
        tip = font.render('嫦娥奔月成功', True, (255, 0,0))
        #text = font.render("嫦娥奔月成功!", True, (255, 0,0))  # 创建文本  
        #screen.blit(text, (30, 30))  # 将文本绘制到屏幕上
        screen.blit(sus,(683,350))
        screen.blit(tip,(683,360))
        
    # 更新屏幕显示  
    pygame.display.update()

使用Pygame制作“嫦娥奔月”小游戏

效果展示

使用Pygame制作“嫦娥奔月”小游戏

全部源码

import pygame  
import sys  
  
# 初始化pygame  
pygame.init()  
  
# 设置窗口大小
infoObject = pygame.display.Info()
width = infoObject.current_w
height = infoObject.current_h
print(width,height)
window_size =  (width,height-50)
screen = pygame.display.set_mode(window_size)  
  
# 设置标题  
pygame.display.set_caption("嫦娥奔月")  
  
# 加载嫦娥的图片  
chang_e = pygame.image.load('chang_e.jpg')
# 加载背景图片  
background_image = pygame.image.load('background.png')
 # 缩放背景图片以匹配窗口大小  
background_image = pygame.transform.scale(background_image, window_size)  
# 设置嫦娥的初始位置
#chang_e_pos = [width*0.84, height*0.66]
  
# 游戏主循环  
while True:  
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:  
            pygame.quit()  
            sys.exit()
        elif event.type == pygame.KEYDOWN:  # 监听键盘按下事件  
            if event.key == pygame.K_q:  # 判断是否按下 Q 键  
                pygame.quit()  
                sys.exit()
      
    # 检测按键事件  
    keys = pygame.key.get_pressed()  
    if keys[pygame.K_LEFT]:  
        chang_e_pos[0] -= 1  
    if keys[pygame.K_RIGHT]:  
        chang_e_pos[0] += 1  
    if keys[pygame.K_UP]:  
        chang_e_pos[1] -= 1  
    if keys[pygame.K_DOWN]:  
        chang_e_pos[1] += 1  
          
    # 清屏  
    screen.fill((255, 255, 255))  
    # 绘制背景图片  
    screen.blit(background_image, (0, 0))
   
    # 绘制嫦娥  
    screen.blit(chang_e, chang_e_pos)
    # 检查图片是否接近(250,100)  
    if abs(chang_e_pos[0] - 250) < 10 and abs(chang_e_pos[1] - 100) < 10:
        sus = pygame.image.load('嫦娥奔月.jpg')
        font = pygame.font.Font('myfont.ttf', 40)  # 设置字体和大小
        tip = font.render('嫦娥奔月成功', True, (255, 0,0))
        #text = font.render("嫦娥奔月成功!", True, (255, 0,0))  # 创建文本  
        #screen.blit(text, (30, 30))  # 将文本绘制到屏幕上
        screen.blit(sus,(683,350))
        screen.blit(tip,(683,360))
        
    # 更新屏幕显示  
    pygame.display.update()
    
# 退出游戏前释放资源  
pygame.quit()