博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python制作galgame引擎(二)
阅读量:6872 次
发布时间:2019-06-26

本文共 1992 字,大约阅读时间需要 6 分钟。

hot3.png

  上一篇主要涉及的其实是我个人的一些初期目标,以及解决方式。虽然提了提Parser类的实现,但是代码毕竟不是主要讨论的对象。而且很明显的,上一篇几乎与galgame制作无关……

  这一篇主要讨论的实现,中心目标是实现一个“能显示背景图片,播放背景音乐,如同galgame般显示文本”的试验程序。称之为试验程序的主要原因是:它的代码可能很乱,命名也是随意命名的,无视耦合……这部分代码只用来显示相关代码是否正常运行------不过说起来,大多数人都是这样做的?

  上一篇忘了说,这个项目已经完成的部分我已经上传至github(最近应该没问题了吧?),有兴趣的欢迎围观和clone,branch也是大大欢迎的。地址是这个:。

  关于git已经github的使用,有需要的话,请看一下这篇博客 ,或者看看官方的文档。

  不多说了,接下来是正文部分。

   

  上一篇中,通过Parser类,可以得到三个变量,分别是背景图片的名字,背景音乐的名字,和剧情文本的内容,但是我不准备引用这三个变量。原因是,文件读入的文字,会受操作系统的文字编码影响。当然一般来说是没问题的,但是若是编写跨平台的程序时,就会很麻烦。最终完成的程序是能够跨平台运行的,文字编码这部分当然使得我很是困扰,这部分说长不长,说短不短,我留到最后来说说。

  后面的内容涉及了许多pygame的内容,官方文档很棒,eyehere的系列文章也相当棒,没接触过pygame的建议都去看看。

  下面这几个变量已经是所要处理的全部内容了……相当简单,名字是随意写的。

backgound = 'test.jpg'

bgm = 'sanae.wav'

text = u'博主正在下一盘大棋……'

   

  完成上文那个简单目标的代码如下

# -*- coding: utf-8 -*-import pygamefrom pygame.locals import *from sys import exitbackground = 'test.jpg'bgm = 'sanae.wav'text = u'博主正在下一盘大棋……'##以下三行几乎是定式,至少我都有用pygame.init()screen = pygame.display.set_mode((800,600),0,32)clock = pygame.time.Clock()##标题栏上的名字,或许你习惯写成游戏的名字?pygame.display.set_caption('Sanae')##这个是把图片转成surface,surface是pygame中一个很重要的概念background = pygame.image.load(background).convert()##读入bgmpygame.mixer.music.load(bgm)##载入字体,我这里用的是hksn,你可以随便下,雅黑很不错。记住是要能显示中文的font = pygame.font.Font("hksn.ttf",20)##把text内容转成surface,True那个是字体平滑还是什么的,最后那个是颜色text_surface = font.render(text,True,(0,0,255))##初始化一个供绑定的TextRectTextRect = pygame.Surface((200,200))##白色填充TextRect.fill((0xFF,0xFF,0xFF))##把文本内容绑定到TextRect上去TextRect.blit(text_surface,(0,0))##播放背景音乐pygame.mixer.music.play(-1,0,0)##游戏主循环while True:    for event in pygame.event.get():        exit()        ##限定帧为5,事实上,galgame的帧数通常都很低很低,我估计1都行    clock.tick(5)        ##下面把背景图片和文字绑定到游戏屏幕上去,注意顺序    screen.blit(background,(0,0))    screen.blit(TextRec,(0,0))    pygame.display.update()

 

  就这样,现在一个能播放音乐,能展示一幅图片,还能丑丑地显示文字的小玩意就做好了。当然始终要明白:这只是为了测试相关功能实现的试验程序而已,真正的程序可不能这么水。但是你要知道,真正程序的核心,也就这样……很简单?

  这篇内容不多,我本来想接着写下去的,但是考虑到下面的代码很多,估计篇幅很长,干脆拆成两篇,阅读更省力~~下一篇的主要是封装,以及异常。

 

转载于:https://my.oschina.net/AproSanae/blog/105395

你可能感兴趣的文章
链表的游标实现
查看>>
Linux下查看CPU信息、机器型号等硬件信息命令
查看>>
Lync Server 2013 部署 _ 部署简介及系统要求
查看>>
前端小随笔
查看>>
view属性大全
查看>>
Java文件编码示例
查看>>
CactiFans V1.0中文版发布
查看>>
HTML如何显示小于号“<”等特殊符号?
查看>>
别伤了虚拟桌面管理员的"心"
查看>>
Windows系统使用IntelliJ IDEA 搭建Hadoop的开发调试环境(一)
查看>>
yum安装lamp
查看>>
Web.Config文件中数据库连接配置
查看>>
[Unity 3D] Unity 3D 性能优化 (一)
查看>>
spring Quartz定时任务调度 时间设置
查看>>
SymmetricDS: 数据库数据同步Database synchronization
查看>>
Disabling OOM killer on Ubuntu 14.04
查看>>
VBS备份脚本
查看>>
CentOS 6.5 自动安装镜像
查看>>
Storm与Spark Streaming比较
查看>>
我的友情链接
查看>>