当前位置: 首页 > news >正文

三、小白如何用Pygame制作一款跑酷类游戏(按键图片和距离的计算)

三、小白如何用Pygame制作一款跑酷类游戏(实现移动距离的计算,以及按键指引的添加)


文章目录

  • 三、小白如何用Pygame制作一款跑酷类游戏(实现移动距离的计算,以及按键指引的添加)
  • 前言
  • 一、创建字体文件夹
    • 1.可以从网上自行下载中文字体存入当前文件夹下
    • 2.将计算距离以及按键的图片素材放入对应的目录内
  • 二、代码部分
    • 1.初始化图片和文字
    • 2.屏幕中贴入图片,并将距离按照每6次时钟增加十米更新
    • 3.main方法的完整代码
  • 三、效果展示


前言

本篇主要实现移动距离的计算,以及按键指引的添加


一、创建字体文件夹

1.可以从网上自行下载中文字体存入当前文件夹下

默认字体可能不支持中文,因此需要确保系统中有支持中文的字体,并尝试通过字体名称指定
在这里插入图片描述

2.将计算距离以及按键的图片素材放入对应的目录内

在这里插入图片描述

二、代码部分

1.初始化图片和文字

代码如下:

#距离图
km_image_path= 'material/image/km.png'
km_img_obj=pygame.image.load(km_image_path).convert_alpha()
#按键图
keyUp_image_path= 'material/image/keyboardUpUp.png'
keyUp_img_obj=pygame.image.load(keyUp_image_path).convert_alpha()
keyLeft_image_path= 'material/image/keyboardLEFT.png'
keyLeft_img_obj=pygame.image.load(keyLeft_image_path).convert_alpha()
keyDown_image_path= 'material/image/keyboardDown.png'
keyDown_img_obj=pygame.image.load(keyDown_image_path).convert_alpha()
font_path = 'material/ziti/AlimamaFangYuanTiVF-Thin-2.ttf'  # 例如 'SimSun.ttf'
chinese_font = pygame.font.Font(font_path, 30)
text_surface = chinese_font.render('跳跃', True, (0, 0, 255))
text1_surface = chinese_font.render('疾跑', True, (0, 0, 255))
text2_surface = chinese_font.render('滑行', True, (0, 0, 255))

2.屏幕中贴入图片,并将距离按照每6次时钟增加十米更新

代码如下:

#键位介绍
screen.blit(keyUp_img_obj, (900, 5))
screen.blit(text_surface, (980, 23))
screen.blit(keyLeft_img_obj, (900, 70))
screen.blit(text1_surface, (980, 88))
screen.blit(keyDown_img_obj, (900, 135))
screen.blit(text2_surface, (980, 148))
#路程
screen.blit(km_img_obj, (10, 70))
km_font = pygame.font.SysFont('arial', 30)
km_num_surface = km_font.render(km, True, (0, 0, 255))
screen.blit(km_num_surface, (80, 88))
if index%6==0:km = str(int(km) + margin)

3.main方法的完整代码


import pygame
from Myself import Myself
import ospygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1080, 600))
pygame.display.set_caption('跑酷游戏')
#背景图
bg_image_path1 = 'material/image/background4.jpg'
bg_img_obj1 = pygame.image.load(bg_image_path1).convert_alpha()
#道路图
road_image_path= 'material/image/road1.png'
road_img_obj=pygame.image.load(road_image_path).convert_alpha()
#距离图
km_image_path= 'material/image/km.png'
km_img_obj=pygame.image.load(km_image_path).convert_alpha()
#按键图
keyUp_image_path= 'material/image/keyboardUpUp.png'
keyUp_img_obj=pygame.image.load(keyUp_image_path).convert_alpha()
keyLeft_image_path= 'material/image/keyboardLEFT.png'
keyLeft_img_obj=pygame.image.load(keyLeft_image_path).convert_alpha()
keyDown_image_path= 'material/image/keyboardDown.png'
keyDown_img_obj=pygame.image.load(keyDown_image_path).convert_alpha()
font_path = 'material/ziti/AlimamaFangYuanTiVF-Thin-2.ttf'  # 例如 'SimSun.ttf'
chinese_font = pygame.font.Font(font_path, 30)
text_surface = chinese_font.render('跳跃', True, (0, 0, 255))
text1_surface = chinese_font.render('疾跑', True, (0, 0, 255))
text2_surface = chinese_font.render('滑行', True, (0, 0, 255))
def init():fps = 60running = Trueindex = 0left = 0right = 1080margin = 3myself = Myself()pygame.mixer.music.load(os.path.join('material/music', 'bgm1.mp3'))pygame.mixer.music.play(-1)km = '0'while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.blit(bg_img_obj1, (0, 0))screen.blit(road_img_obj, (left, 465))screen.blit(road_img_obj, (right, 465))#键位介绍screen.blit(keyUp_img_obj, (900, 5))screen.blit(text_surface, (980, 23))screen.blit(keyLeft_img_obj, (900, 70))screen.blit(text1_surface, (980, 88))screen.blit(keyDown_img_obj, (900, 135))screen.blit(text2_surface, (980, 148))if left<=-1080:left=left+2160if right<=-1080:right=right+2160screen.blit(myself.image,myself.rect)myself.update(index)screen.blit(km_img_obj, (10, 70))km_font = pygame.font.SysFont('arial', 30)km_num_surface = km_font.render(km, True, (0, 0, 255))screen.blit(km_num_surface, (80, 88))if index%6==0:km = str(int(km) + margin)index += 1pygame.display.update()clock.tick(fps)left -= marginright -= margin
if __name__=="__main__":init()

三、效果展示

在这里插入图片描述
在这里插入图片描述

相关文章:

  • Android Mainline简介
  • 16位海明码解码电路设计教程
  • Web安全和渗透测试--day6--sql注入--part 1
  • ​使用APlayer前端封装音频播放
  • SPI和IIC的区别
  • 项目优化中ini配置文件解析器
  • 【深度学习】详解矩阵乘法、点积,内积,外积、哈达玛积极其应用|tensor系列02
  • 数据中台(大数据平台)之数据质量管理
  • QML之Overlay
  • 目标分割模型优化自身参数都是梯度下降算法吗?
  • 【shell】终端文本的颜色和样式打印
  • 滑动窗口209. 长度最小的子数组
  • IP-Guard域用户登录后自动登录代理控制台
  • Vue-cli迁移Rsbuild
  • 重置cursor免费次数(2025.4.17可行)
  • MySQL入门:数据操作CURD
  • SSMS中如何把一个库的表移到另一个库中
  • java 多线程之Worker Thread模式(Thread Pool模式)
  • 基于Django框架的图书索引智能排序系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • 大数据开发核心技术难点:数据倾斜问题深度解析
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 《2025城市青年旅行消费报告》发布,解码青年出行特征
  • 2025江西跨境电子商务发展交流会召开,探索行业发展新趋势
  • 消费者在天猫一旗舰店换手机电池疑遭套路致手机损坏,平台已介入
  • 洗衣机无法有效杀菌
  • 两千万粉丝网红“大LOGO”带货茶叶被指虚假宣传,涉事茶企被立案调查