Advertisement

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

阅读量:

前言

中秋佳节是中国传统文化中极具象征意义的日子之一。它源自嫦娥奔月的神话传说,在那个时期有名为逢蒙的人发现了这一秘密,并试图用威胁手段迫使嫦娥吐出那颗神秘药丸。然而,在危急关头,为了保护丈夫不受伤害的承诺不被违背,嫦娥不得不吞吃了这包珍贵的药丸。随后不久的结果是她感觉身体开始飘离地面,在窗户前向天空飞去。她深知丈夫牵挂着她一家老小的安全与幸福,在这个思念之情驱使下,她最终选择了飞向离人间最近的月亮之上来守护他们

在中秋节这样一个特殊的日子,在这个节日里不仅要欣赏明亮的月亮以及嫦娥奔月美丽的传说故事;除此之外还有一些其他的庆祝活动也会被安排上;随后我们将利用Pygame软件开发一个以‘嫦娥奔月’为主题的互动小游戏。

background.png

准备工作

  • 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)
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/QCRNT5iuOg4VMAZwKDrcpLjBdmt1.png)

设置标题

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]
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/2gK0jycmplbsWw8Z7VvBAYIQuR3D.png)

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

T9H61469PK_0S_Q@ERY6X}G.png

游戏主程序

复制代码
    # 游戏主循环  
    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()
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/ljN6JVuphWy0BabwDEzsTPqRrY4t.png)

嫦娥奔月

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

复制代码
    # 检测按键事件  
    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()
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/hHrmiBVn897kTXEs1f5QoxCYISlR.png)
}`6IAP8@SNMIY\(K@6CB.png

效果展示

录制_2023_09_13_21_22_46_924.gif

全部源码

复制代码
    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()
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/ViQhD64brjwGq5k0NntWAuUlTJYv.png)

---------------------------END---------------------------

题外话

在这里插入图片描述

对Python编程感兴趣的朋友,请问您是否愿意接收我们的免费Python学习资源包?其中包含了丰富的面试题库和专业的简历资料等详细内容,请您关注下方的详细介绍。

👉福利包🎁:全方位Python学习资源包随心获取🆓!(官方链接点击无忧)

一、Python所有方向的学习路线

对Python各个方向的技术要点进行归纳和总结,并建立一个涵盖各个领域知识点的体系结构。其主要作用在于通过下面的知识模块(或章节)可以找到相应的内容模块(或章节),从而确保学习内容比较全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

img

三、最新Python学习笔记

当我在掌握了一定的基础知识后, 会去阅读一些前辈归纳的书籍或手写笔记. 这些笔记本会对某些技术要点进行系统梳理, 并且这种理解具有独特性, 有助于培养创新思维.

img

四、Python视频合集

观看系统性的入门级教学课程,在线学习平台提供高效的学习体验:通过观看教学视频进行学习能够快速掌握所需知识,并且这种自主学习方式能够显著提高学习效率。按照教师讲解的方法逐步掌握核心知识并深入理解相关概念相对容易上手,并且这种循序渐进的学习过程能够帮助学员快速建立扎实的知识体系

img

五、实战案例

通过书本难以深入理解自己的所学知识;为了更好地掌握技术细节,建议按照视频指导逐步实践操作;只有亲自动手练习才能在真实情境中应用所学知识;此时可以通过设计并解决实际案例来提升技能

img

六、面试宝典

在这里插入图片描述
在这里插入图片描述
简历模板
在这里插入图片描述

Chef's Delightful Pythonic Journey

若有侵权,请联系删除

全部评论 (0)

还没有任何评论哟~