(NO.00001)iOS游戏SpeedBoy Lite成形记(十三)
游戏特效部分就先这样了,因为毕竟是Lite版本,而且是第一个App,所以咱们把主要精力放在游戏可玩逻辑上吧(虽然已经厚颜无耻的加了不少特效了).
说句题外话:游戏美工是独立开发者不可逾越的鸿沟,是无法治愈之痛.本猫三脚猫的美工素养暂时也只能实现这样了.这个不仅仅要恶补制图工具的使用技术,而且还需要一点点美学上的天赋吧.我看过网上有位国外的很热爱独立开发App游戏的仁兄,也在自己的blog上写开发的心路,开始前几个作品画的那叫一个丑啊…但是人家不放弃,后来越画越好了.虽说不能和专业人士相比,但事在人为,不是吗 ;)
好吧,言归正传.下面要添加的大致有3个功能:
1.选择一个选手,就是赌他最后跑赢
2.然后玩家可以输入赌注的金额
3.最后如果他是冠军则赢钱,否则输钱.
很简单,不是吗?下面从第1项内容开始依次实现.
首先是选择选手的功能,因为选手大头贴本身就比较小,手指比较难点中.所以我把需求稍微改一下,只要点中选手所在的赛道,就是选择了该选手.我们在GameScene.m中添加一个数组:
NSMutableArray *_trackRects;
里面存放的是每条赛道矩形框的Rect结构,因为还好每条赛道是正规长方形,所以可以很简单的用Cocos2D的内置函数判断玩家手指是否点在对应的矩形框里.
我们接下来自然是要初始化每个赛道矩形的Rect结构,添加如下方法:
-(void)initTrackRects{
NSInteger trackHeight = _viewSize.height/PlayerCount;
NSInteger trackWidth = _viewSize.width;
CGRect trackRect;
for (int i = 0; i < PlayerCount; i++) {
trackRect = CGRectMake(0, i*trackHeight, trackWidth, trackHeight);
[_trackRects addObject:[NSValue valueWithCGRect:trackRect]];
//CCLOG(@"%d:rect is %@",i,NSStringFromCGRect(trackRect));
}
}
代码很简单,每条赛道的长和宽都是不变的,x坐标也都是不变的,都是0.只有y坐标是规律变化的,就是i*trackHeight的关系.因为NSArray里是不能直接存标量的,所以要转换为对象再存入数组.
不知大家是否看出了点问题,就是这里赛道的编号正好和实际跑道上的编号是反过来的.就是_trackRects[0]对应的是实际的8号赛道的坐标.这个在后面再修正.
(NO.00001)iOS游戏SpeedBoy Lite成形记(十三)的更多相关文章
- (NO.00001)iOS游戏SpeedBoy Lite成形记(一)
这是本猫第一个原创iOS游戏,留此为证!看编号貌似要写9万多个,千锤百炼还是太少吧!? ;) 这是一个赛跑游戏,几位选手从起点跑到终点看谁用的时间最少.现在需要实现的功能是: 1.8位选手从起点移动至 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(三十):增加排行榜功能3
在这个例子中,我们的显示代码只需要选手的名字以及对应的成绩.根据选手名字取对应的成绩可以用前面实现的playerRecord:方法,我们只需要将按照成绩排序后的选手名字返回就可以了. 我只需要再实现一 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)
之前的10篇内容主要实现了选手从起点移动至终点的动作,比较随机的模拟了选手的速度变化,另外完成了选手到达终点时该做的事情. 接下来的几篇中我们进一步完善SpeedBoy Lite项目,使它真正成为一个 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
游戏大体上基本也就完成了,还差一个排行榜.否则如何激励各位选手创造新纪录呢? 排行榜功能也没什么难的,不过需要一点点排序的算法上的考虑. 这里我们把排行榜记录数据和排序都放在GameState类中,在 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十七)
切换回Xcode,在GameScene.m中添加新的实例变量:_winLayer. 接下来在第一个选手到达终点时,我们可以完成选手胜利的动画特效了. 首先,在GameScene.m中添加一个新方法pl ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十四)
我们回到Xcode,打开GameScene.m,首先要添加实例变量: CCNode *_trackLine; 为了根据选中的赛道更新_trackLine的位置,我们添加一个显示方法: -(void)s ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)
现在还有一个视觉上的问题:玩家每次在游戏开始前选择某一赛道时,无法直观的看到所选的是哪条赛道.只能通过界面上方的gambleLabel中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)
自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)
现在游戏中如果钱用光了赌场也是不管的,所以我们要加上Game Over的逻辑. 出现游戏结束条件很简单,就是GameState的totalMoney <= 0.而在游戏结束时我们要做些什么呢?有 ...
随机推荐
- 关于java的Synchronized,你可能需要知道这些(上)
对于使用java同学,synchronized是再熟悉不过了.synchronized是实现线程同步的基本手段,然而底层实现还是通过锁机制来保证,对于被synchronized修饰的区域每次只有一个线 ...
- Nodejs 模块查找机制还不错(从当前目录开始逐级向上查找node_modules)
比如 m.js是能够调用a.js的, 这样子目录就可以避免重复安装node_modules. 够用了.
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- Device Mapper 代码分析
Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备. DM以块设备的形式注册到Linux内核中,凡是挂载(或者说&quo ...
- android ActionBarActivity设置全屏无标题
新建的Activity继承自ActionBarActivity,设置全屏无标题本来很简单的事,但是没想到app竟然无缘无故的挂,要么就是白屏一片,要么就是黑屏.坑了我一个多小时!!! 原因是Actio ...
- Swift对象实例方法名混淆的解决
在Xcode7.x中,比如有以下一个类: class Foo{ func test(v:Int,before:Int)->Int{ return v + 1 } } 我可以直接这么做: let ...
- SLAMCN资料收藏转载
网页链接地址:http://www.slamcn.org/index.php/%E9%A6%96%E9%A1%B5 资料非常丰富,内容如下: 首页 目录 [隐藏] 1 SLAM 介绍 1.1 什么是 ...
- activiti 数据库连接配置
1.1.1. 前言 在activiti 动态配置 activiti 监听引擎启动和初始化(高级源码篇)一文中,我们讲解了如何动态的配置DataSource 当我们程序配置了DataSource,act ...
- SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
一个SpriteKit项目在其他设备上运行都无问题(无论是真机或是模拟器),但是在iPhone6 Plus上会出现精灵对象纹理被过度放大的现象: 从上图中大家可以看到无论是主角或是道具球都过大了. 看 ...
- TortoiseSVN使用
TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费. TortoiseSVN是 Subversion 的 Windows 扩展.它使你避免接触 Subv ...