2020/2/19

前言

接下来我会在这个号持续更新我的游戏开发日记——这是一款RPG类游戏名为“像素世界”,游戏主体由Python的Pygame库实现,登录系统可能会以Tkinter或Easygui实现。主要是记录我的游戏开发的过程,希望我能坚持下去吧!


实现目标

本期的实现目标:

  1. 整理游戏素材
  2. 搭建游戏窗口
  3. 载入背景图
  4. 载入背景音乐

正文

1.先将图片素材和背景音乐素材分类整理

  1. 图片素材:
  2. 背景音乐素材

2.搭建游戏窗口

第一部分(基本结构)

import pygameclass Main(object):def __init__(self, title, height, width, Fps=60):self.title = titleself.height = heightself.width = widthself.Fps = Fpsself.main()self.events()def main(self):pygame.init() # Pygame初始化pygame.display.set_caption(self.title) # 设置窗口标题# 设置窗口尺寸self.screen = pygame.display.set_mode([self.height, self.width]) # 将屏幕赋值为全局变量方便之后的调用def events(self):while True: # 持续侦测事件 (循环使窗口一直显示 否则窗口会一闪而过)for event in pygame.event.get():if event.type == pygame.QUIT: # 侦测窗口右上角的x是否被按下# 如果x被按下 则关闭窗口pygame.quit() if __name__ == "__main__":Main("Pixel World", 1280, 768)

运行结果:

如上图,现在我们已经成功搭建了一个窗口,且这个窗口可以正常的关闭!但是现在窗口中什么都没有显示,所以接下来要做的就是让窗口中载入游戏背景

第二部分(载入背景图片)

import pygameclass Main(object):def __init__(self, title, height, width, Fps=60):self.title = titleself.height = heightself.width = widthself.Fps = Fpsself.main()self.vars() self.events()def main(self):pygame.init() pygame.display.set_caption(self.title) self.screen = pygame.display.set_mode([self.height, self.width])def vars(self): # 用来存放全局变量# 导入图片self.Old_Default_Background_Pic = pygame.image.load("img/map/Default_Background_Pic.png") # 载入背景图片# 将图片缩放到与窗口一样大self.New_Default_Background_Pic = pygame.transform.scale(self.Old_Default_Background_Pic, (self.height, self.width))pygame.image.load("img/map/Default_Background_Pic.png") def events(self):while True: for event in pygame.event.get():if event.type == pygame.QUIT: pygame.quit()# 将背景图片载入到窗口0,0的位置self.screen.blit(self.New_Default_Background_Pic, (0,0))pygame.display.update() # 刷新背景 (如果不刷新背景屏幕就不会更新)if __name__ == "__main__":Main("Pixel World", 1280, 768)

 将所以变量都放在同一个函数下,避免变量乱七八糟的局面出现

之所以缩放图片是为了让背景图片能自适应屏幕尺寸

可以看到现在已经可以正常的显示出背景图片了!美中不足的是一个休闲类RPG游戏竟然没有背景音乐,所以接下来让我们为游戏添加上背景音乐

第三部分(载入背景音乐)

import pygameclass Main(object):def __init__(self, title, height, width, Fps=60):self.title = titleself.height = heightself.width = widthself.Fps = Fpsself.main()self.vars()self.events()def main(self):pygame.init() #pygame.mixer.init() # pygame播放背景音乐初始化pygame.display.set_caption(self.title) self.screen = pygame.display.set_mode([self.height, self.width])def vars(self): self.Default_Background_Pic = pygame.image.load("img/map/Default_Background_Pic.png") self.Default_Background_Music = pygame.mixer.music.load("sound/Default_Background_Music.mp3") # 载入背景音乐def events(self):pygame.mixer.music.play(-1,0) # 播放背景音乐 (-1表示循环播放,0表示从头0秒开始播放)while True: for event in pygame.event.get():if event.type == pygame.QUIT: pygame.quit()self.screen.blit(self.Default_Background_Pic, (0,0))pygame.display.update()
if __name__ == "__main__":Main("Pixel World", 1280, 768)

运行结果:

播放了一段治愈的BGM,可惜你们听不见那么好听BGM(bushi

(CSDN上传不了视频


本节实现的功能

  1. 整理好了图片素材及音频素材
  2. 成功搭建了一个1280x768的游戏窗口
  3. 成功将背景图片添加到窗口且让其自适应屏幕大小
  4. 成功将背景音乐添加到窗口

Python 2D游戏项目开发日记——像素世界(一)相关推荐

  1. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  2. python疲劳检测代码_【君奉天|开发日记】疲劳驾驶检测

    我之前写的关于DuerOS开发日记: 今天看了2017百度世界大会上李彦宏董事长介绍了百度的疲劳驾驶检测,正好我之前阿德里安·罗斯布鲁克的文章中介绍了利用Facial landmarks + drow ...

  3. 【教程+源码】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏

    在飞翔的小鸟游戏中,玩家只需通过点击方向键操纵让小鸟避开绿色管道等障碍物即可继续前进.如果小鸟碰到管道,游戏立即结束. 那么如何用Java编写一款属于自己的飞翔的小鸟游戏呢?其过程并不复杂,本课程详细 ...

  4. 2D游戏开发 - SkyGameEngine2d 创建一个游戏项目

    2D游戏开发 - SkyGameEngine2d 创建一个游戏项目 一.前期准备 二.获取引擎工具 2.1 下载工具集 2.2 解压并且打开工具 三.使用工具 3.1 工具界面介绍 3.2 设置引擎路 ...

  5. 【源码+图片素材】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java小游戏_Java初级项目_Java课程设计项目

    开发环境: jdk1.8 开发工具: IDEA JavaEE基础: 变量.数据类型.判断语句.循环结构.数组.集合.简单窗口创建.图形图片绘制.双缓存技术.事件-键盘事件.物体的碰撞检测.File [ ...

  6. [Python]WEB编程--个人日记网站搭建(一)

    用Python+Tornado 编写一个个人日记网站(一) 讲道理,用惯了Flask感觉还是不熟悉Djongo,所以先来看一下Tornado(滑稽),记住这是一个最简单的最暴力的网页,毫无细节. 'F ...

  7. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  8. Python 二次开发 SAP2000 概述

    目 录 Blog Links 一.前言 二.pywin32库 三.帮助文档 四.访问SAP2000 4.1 ProgID 五.文件 5.1 新建 5.2 打开 5.3 保存 5.4 退出 六.视图 6 ...

  9. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

最新文章

  1. Metasploit reload命令使用技巧
  2. 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序
  3. linux虚拟网络设备之tun/tap(一)
  4. lucene源码分析(8)MergeScheduler
  5. 初学Java对某些问题的理解
  6. 动态代理案例1:运用Proxy动态代理来增强方法
  7. JQuery validate表單驗證
  8. liferay 如何添加css或者js
  9. 2016国产开源软件Top100(Q1)
  10. 在惨遭勒索病毒攻击之后,微软呼吁重新制定“数字日内瓦公约”
  11. JS实时监听DOM元素变化 - MutationObserver
  12. vue.js入门环境搭建
  13. 2016-08-31
  14. Mysql DDL与DML
  15. 【C语言程序】带你用17行代码编译一个C语言数字雨
  16. c语言中头文件iostream,程序中为什么要包含头文件iostream.h?
  17. 高通QCA61 4A网卡驱动linux,高通创锐QCA61x4蓝牙4.1驱动程序
  18. 硬件算法与软件算法实现区别通俗易懂
  19. HDU-1728-逃离迷宫
  20. W25Q128芯片的SPI驱动设计

热门文章

  1. IBM Rational AppScan保存报告时提示错误的解决方案
  2. 传智播客 php系列,传智播客PHP 2015-JS高级系列视频教程 83集
  3. C++ QT开发人机象棋(评估函数)
  4. VoxelNet论文翻译
  5. 【企业】避免华盛顿合作规律,增强有效合作
  6. html语义化标签是什么,HTML语义化标签探析
  7. 11选5c语言代码,和山山哥一起学EXCEL和VBA,学以致用搞彩票11选5(一)
  8. 两台笔记本电脑共享屏幕(其中一台电脑当做另外一台电脑的扩展屏幕,多屏显示)
  9. Java面试错题集1
  10. UltraEdit 注册码