使用Pygame制作中秋嫦娥奔月小游戏

 更新时间:2023年09月14日 10:23:24   作者:极客飞虎  
中秋节是中国传统的重要节日之一,起源于嫦娥奔月的神话故事,在中秋节这个特殊的日子里,人们不仅会欣赏明亮的月亮和嫦娥奔月的美丽故事,还会举行一些庆祝活动,接下来,我们使用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]

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

游戏主程序

# 游戏主循环  
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()

效果展示

全部源码

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()

以上就是使用Pygame制作中秋嫦娥奔月小游戏的详细内容,更多关于Pygame中秋小游戏的资料请关注脚本之家其它相关文章!

相关文章

  • python进度条库tqdm的基本操作方法

    python进度条库tqdm的基本操作方法

    这篇文章主要介绍了python进度条库tqdm的基本操作方法,tqdm实时输出处理进度而且占用的CPU资源非常少,支持windows、Linux、mac等系统,支持循环处理、多进程、递归处理、还可以结合linux的命令来查看处理情况等优点,下面对其更多内容详细介绍,需要的朋友可以参考一下
    2022-03-03
  • springboot aop方式实现接口入参校验的示例代码

    springboot aop方式实现接口入参校验的示例代码

    在实际开发项目中,我们常常需要对接口入参进行校验,本文主要介绍了springboot aop方式实现接口入参校验的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Python多进程池 multiprocessing Pool用法示例

    Python多进程池 multiprocessing Pool用法示例

    这篇文章主要介绍了Python多进程池 multiprocessing Pool用法,结合实例形式分析了多进程池 multiprocessing Pool相关概念、原理及简单使用技巧,需要的朋友可以参考下
    2018-09-09
  • 基于opencv对高空拍摄视频消抖处理方法

    基于opencv对高空拍摄视频消抖处理方法

    这篇文章主要介绍了基于opencv对高空拍摄视频消抖处理,首先对视频进行抽第一帧与最后一帧,为什么抽取两帧?这样做的主要目的是,我们在做帧对齐时,使用帧中静态物的关键点做对齐,需要的朋友可以参考下
    2022-10-10
  • Python机器学习之SVM支持向量机

    Python机器学习之SVM支持向量机

    这篇文章主要为大家详细介绍了Python机器学习之SVM支持向量机,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • python绘制带有色块的折线图

    python绘制带有色块的折线图

    这篇文章主要为大家详细介绍了python绘制带有色块的折线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Python实现删除Android工程中的冗余字符串

    Python实现删除Android工程中的冗余字符串

    这篇文章主要介绍了Python实现删除Android工程中的冗余字符串,本文实现的是删除Android资源(语言)国际化机制中的一些冗余字符串,需要的朋友可以参考下
    2015-01-01
  • TensorFlow实现批量归一化操作的示例

    TensorFlow实现批量归一化操作的示例

    这篇文章主要介绍了TensorFlow实现批量归一化操作的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Django 开发环境配置过程详解

    Django 开发环境配置过程详解

    这篇文章主要介绍了Django 开发环境配置过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python manim实现排序算法动画示例

    python manim实现排序算法动画示例

    这篇文章主要为大家介绍了python manim实现排序算法动画示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论