【不是教程的教程】第二弹——小乐教你写游戏送给妹纸(2.2.1版本)

热烈庆祝下我的教程第二弹诞生了,说是教程也真是抬举,其实就是把以前写的东西挖出来,然后加几个字说明一下而已,主要是觉得直接放个源码啥话也不讲怪不好意思的。哦不,我发现我这人真没写注释的习惯,等等,我加几个注释再继续写教程。

好了,加完了,言归正传,为何说是送给学妹呢,因为咱这游戏是以校园作为背景的,所以还是送学妹比较恰当。按照惯例,还是先贴几张截图。

这游戏是我当初写给一个学妹的生日礼物,可惜人家说“最近很忙,没空玩”,目测我写这教程的时候,她都还没玩过呢。你们也可以写个游戏送给妹纸,要是成功追到了,记得请我吃饭。其实当初是想写个解谜游戏,无奈,能力不足啊,变成了一个单纯的寻物游戏了,不过简单倒是没事,毕竟是送给妹纸的,妹纸不会玩你就白写了不是。

然后介绍下游戏,该游戏讲述的是发生在华侨大学厦门校区里,一位学长打算送给一位学妹生日礼物,在校园的各个角落里埋藏了11朵花,当学妹集齐所有的花,并达到指定的地点时,就能得到生日礼物,也就是游戏通关了。有人的评论就是,现实中真敢叫妹纸自己去找东西的话,那就活该单身了。(PS:有木有华侨大学的校友呢)

这游戏我也发布到360、91、安智和豌豆荚上面了,其实只是为了了解下怎么发布而已,游戏名就叫“生日大作战-华侨大学篇”。

好了,开始介绍代码了,首先当然还是说说各个类了。

DataPool数据池,单例模式,所有的配置和用户数据

ConfigMap地图配置(记录地图切换的位置)

ConfigText文字配置(根据id获取对应的的中文文字)

ConfigStory剧情配置(游戏所有剧情对话内容)

ConfigItem物品配置(物品所在地图的ID及位置)

ConfigEvent事件配置(在什么地图以及身上多少物品触发什么剧情)

ConfigPrompt提示配置(每个物品所在地点的提示)

UserData用户数据(获得哪些物品,触发哪些剧情,在哪个地图)

CCRadioMenu还是那个多选一按钮

ChooseLayer确认和取消的一个选择框,写的不太好,没法一个图层里设置多个不同的选择框

HintLayer一个在顶上出现2秒的提示框

InventoryLayer底下的仓库(或者叫背包)以及一些按钮

MapLayer地图图层

PromptLayer每个物品所在地点的提示,为了让妹纸一定可以通关呀

SoundManager用途不大,主要就是个如果切换地图后所播放的背景音乐一样就不重新播放

StoryLayer显示剧情

WorldLayer提示所在位置的世界地图

GameScene游戏场景

MainScene主菜单场景

StartScene最开始显示文字的场景

SceneManager场景管理,切换场景的特效什么的

Global全局变量

看到一堆的配置了吧,那我们就来看看配置文件,用的excel编辑,然后cocostudio的数据编辑器导出json。咱们直接看看excel,就别看json了。这里采用的是libjson的解析库,2.2.2版本自带的解析库换成了rapidjson,本来打算把游戏改成2.2.3版本,发现rapidjson解析的字符串带\t就会解析错误,就放弃了。为何我要用\t呢,因为剧情的对话段落开头不是空两个字嘛,直接用空格在WIN32上是没问题,在android上就有问题了,最后只好用\t了(顺带说下,安卓默认字体\t会显示一个框框)。

其实看看就知道各个参数是什么意思了,也不用过多解释了(代码里的结构体的变量有注释),这里就只说说region这个,这个就是点击判断的区域。例如地图就是点击在这个区域里切换地图,物品就是点击在区域里获得该物品,这四个参数就是一个矩形。为何要用;而不用,呢,因为使用,的话cocostudio会当成是数字(估计因为经常有数字是这么写的1,000)。解析的时候只需这样写sscanf(str, “%f;%f;%f;%f”, &x, &y, &width, &height);还是很方便的。

标题的艺术字用的是PS的3D功能,看着还挺不错的

为何花的名字要起花1、花2······呢,主要是为了可以直观看出来少了哪朵花,然后从提示里面寻找查看。

ChooseLayer其实也就是仿照触摸那样的写法,继承一个代理类,然后重写其方法。只不过我这样写的话,变成一个图层只能有一个选择框了,显然很不科学,所以你们就别学了。

游戏的素材主要是从网上找的,还有失落之城的素材(你们肯定觉得眼熟吧),然后校园的照片是我自己亲自拍的了,那些个花就是我自己ps抠图抠出来的。

保存玩家数据,不用说,肯定是用CCUserDefault,不过这货好像没看到有删除数据的操作,所以重玩游戏是将数据初始化赋值。

为何我的配置类的容器里面要用指针呢,因为返回一个指针变量比返回整个结构体变量效率高,不过清空容器的时候得自己释放指针的内存,比较蛋疼。

其实这个游戏也就是整个框架的搭建比较蛋疼,逻辑上嘛,其实没啥复杂的逻辑,你们都能看得懂的,不懂的话还是老样子,回帖问我咯。我发现我这篇教程基本都是一堆废话的说,各位见谅啊。

帖子沉得太快了,看来还是得设置下回复可见
代码下载(上传不了,百度网盘地址):
http://pan.baidu.com/s/1qWCYGaC

1赞

一大早睡不着!就看到教人把妹游戏真是太棒了!赞

这绝对是经(ba)典(mei)教(li)程(qi)!

话说这游戏一开发出来我就下载完了,很棒日系风格对话解密游戏,这类教程应该还没有。开源出来赞一个!:801::801::801:

楼下有眼尖的童鞋可以看出这是哪里么?

卧槽,神器啊,必须看看

把妹游戏真是太棒了

感谢楼主啊。

一大早睡不着!就看到教人把妹游戏真是太棒了!赞

非常的赞啊。:7:

卧槽,神器啊,必须看看

灰常赞!
码农也要把妹!

:14::14::14::14::14:好东西啊

:2: :2: :2: :2: :2: 非常赞,大赞啊

感谢楼主的把妹游戏

:2::2::2::2::2:

卧槽,神器啊,必须看看

赞一个,学习把妹技能

:10::10::10:下载学习了

泡妹子利器,价格网络聊天功能是不是就能在自己游戏里泡妹子了

把妹游戏真是太棒了,感谢楼主啊

— Begin quote from ____

引用第17楼by3721by于2014-04-14 13:48发表的 :
泡妹子利器,价格网络聊天功能是不是就能在自己游戏里泡妹子了 http://www.cocoachina.com/bbs/job.php?action=topost&tid=197784&pid=926408

— End quote

想太多了