使用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()
转载自:https://juejin.cn/post/7278246015181537295