OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0
前几天用cocos2d-x写了个贪食蛇!这次是全然在osx下开发的。基本的思路是这种我建立了一个Snake类,当中有两个构造函数一个是用于存放蛇身体sprite的图片和Snake的X坐标和Y坐标。另外一个是用于存放蛇头的sprite图片和Snake的X坐标和Y坐标dir方向,还有snake的生命。再在helloword类中建立一个容器 vector<Snake *> snake; 在helloword中的init中先建立蛇头和两节蛇身体而且添�到snake中
Snake *_head_1= new Snake(500.0, 300.0, 2,true);
this->addChild(_head_1->_snake_body_sprite,3);
_head_1->_snake_body_sprite->setRotation(-90);
snake.push_back(_head_1);
//设置蛇身体图片 通过对象来创建
for(int a=1; a<3;a++)
{
Snake *sna2 =new Snake(500+a*20,300);
this->addChild(sna2->_snake_body_sprite,2);
snake.push_back(sna2);
}
而且在init中注冊触屏事件。
接下来我把屏幕分为了四块 而且当点击响应块的时候让蛇头进行旋转 改变dir的值 (事实上是能够改为用手势的)
bool HelloWorld::onTouchBegan(Touch* touch,Event *event){
if(bar)
{
Point touchpoint = touch->getLocation(); //获取点击之后的点的坐标
printf("touchpoint.x = %f, touchpoint.y =%f",touchpoint.x,touchpoint.y);
float touch_x =touchpoint.x;
float touch_y =touchpoint.y;
if(touch_x >= 0 && touch_x < 350){ //点击了左側的区域 设置蛇头方向为2 上0 下1 左 2,右 3
if(sn_head->_snake_dir != 3){
switch (sn_head->_snake_dir) {
case 0:sn_head->_snake_body_sprite->setRotation(-90);break;
case 1:sn_head->_snake_body_sprite->setRotation(-90);break;
case 2:break;
case 3:break;
default:break;
}
sn_head->_snake_dir = 2; //左
}
}
else if (touch_x >= 350 && touch_x < 785 && touch_y< 320){
if(sn_head->_snake_dir != 0){
switch (sn_head->_snake_dir) {
case 0: break;
case 1: break;
case 2:sn_head->_snake_body_sprite->setRotation(180);break;
case 3:sn_head->_snake_body_sprite->setRotation(180);break;
default:break;
}
sn_head->_snake_dir = 1;
}
}
else if(touch_x >= 350 && touch_x < 785 && touch_y >=320){
if(sn_head->_snake_dir != 1){
switch (sn_head->_snake_dir) {
case 0: break;
case 1: break;
case 2:sn_head->_snake_body_sprite->setRotation(0); //sn_head->_snake_body_sprite->setPosition(Point(sn_head->_snake_x,sn_head->_snake_y+=20));break; //它是相对于原始图片旋转的不是旋转过的图片旋转地
case 3:sn_head->_snake_body_sprite->setRotation(0);break;
default:break;
}
sn_head->_snake_dir = 0;
}
}
else if(touch_x >=785){
if(sn_head->_snake_dir != 2){
switch (sn_head->_snake_dir) {
case 0:sn_head->_snake_body_sprite->setRotation(90);break;
case 1:sn_head->_snake_body_sprite->setRotation(90);break;
case 2: break;
case 3: break;
default:break;
}
sn_head->_snake_dir =3;
}
}
}
}
让蛇移动起来。 这里用了一个二维数组用来存储snake的全部坐标信息。
然后当蛇头移动以后。遍历容器中的全部对象除了蛇头,把二维数组中的x,y值赋给遍历的对象的X,Y。
如图 mac不知道画图工具在哪自己用PS随便画的:
void HelloWorld::body(float bo) {
int length_snake = (int)snake.size();
];
;i<snake.size();i++)
{
Snake *snake_array;
snake_array = snake.at(i);
_a_2array[i][] = snake_array->_snake_x;
_a_2array[i][] = snake_array->_snake_y;
}
if(sn_head->life)
{
switch (sn_head->_snake_dir) {
:;
break;
:;
break;
:;
break;
:;
break;
}
sn_head->_snake_body_sprite->setPosition(Point(sn_head->_snake_x,sn_head->_snake_y));
){
; k <snake.size();k++){
Snake *snake_body;
snake_body = snake.at(k);
snake_body->][];
snake_body->][];
snake_body->_snake_body_sprite->setPosition(Point(snake_body->_snake_x,snake_body->_snake_y));
}
}
}
}
float HelloWorld::impact_round(float x1,float y1,float x2,float y2)
{
float xie = sqrt(pow(abs(x1-x2),2)+pow(abs(y1-y2),2));
return xie;
}
对了昨晚上把之前做过的flappybird移植到了IOS上 可是没有做屏幕适配就发张图上来吧:
OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0的更多相关文章
- cocos2dx 在mac下开发ios和android游戏
这里主要说android,因为ios开发在文章 http://blog.csdn.net/itcastcpp/article/details/24792323 中已经说过. 1)打开工程 打开ecli ...
- mac下开发IOS代码管理
1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.com/server/download/.采 ...
- H5微信页面开发 IOS系统 input输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置,导致弹框里的按钮响应区域错位
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
- iOS开发--iOS及Mac开源项目和学习资料
文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...
- 在Visual Studio中使用MonoTouch开发iOS应用程序
前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序.虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用M ...
- Mac os 进行Android开发笔记(2)
Mac OS X 下开发 Android 1> MAC OS Android环境搭建: 2>MAC OS 配置 Andoid ADB: 3>MAC OS 上进行Android真机 ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结
今天 我对iOS系统下 的手机屏幕尺寸 分辨率 及系统版本做了一次系统总结 供大家参考. 首先 是系统: 随着iOS 系统不断升级,现在已经到iOS7.0了, 并且TA有了很多新变化,最震撼的 ...
- Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)
Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...
随机推荐
- 【DWT笔记】傅里叶变换与小波变换
[DWT笔记]傅里叶变换与小波变换 一.前言 我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图.脑电图.地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到 ...
- 【C#】构造函数的特点
1.它的函数名与类名相同:2.它可以重载:3.不能指定返回类型,即使是void也不行:4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用.但是并不是不能被显示调用.有些时候是一定要 ...
- 安装VMware-tools的问题
今天晚上解决了之前在跟着 Linux学习之CentOS(六)--CentOS下VMware-Tools安装 解压部分,cp 压缩文件时,没有通过命令,直接鼠标操作复制到/home/ranjiewen下 ...
- 使用Eclipse的几个必须掌握的快捷方式(能力工场小马哥收集)
“工若善其事,必先利其器”,感谢Eclipse,她 使我们阅读一个大工程的代码更加容易,在阅读的过程中,我发现掌握几个Eclipse的快捷键会使阅读体验更加流畅,写出来与诸君分享,欢迎补充. 1. C ...
- Thu夏令营 总结
感觉这次thu夏令营简直就是爆RP啊 竟然签了无条件本一 [Waring]RP已空 话说这次考试设定 竟然是下午两点开始考试 考到五点- - 导致中午必须午睡 宾馆里清华也不近 按原本试机安排到12点 ...
- HDU ACM 1515 Anagrams by Stack
Anagrams by Stack Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- tinyxml2简单使用
引入头文件 <span style="font-size:18px;">#include "HelloWorldScene.h" #include ...
- HD1005Number Sequence
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- APP接口版本兼容的问题
现在基本每个公司都做APP,所以大家都面临 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改.新的APP和接口开发后,接口如何兼容老的 ...
- 【CSDN博客之星】2013年CSDN博客之星正在评选,希望大家支持,非常感谢!
首先在此感谢 MoreWindows 秒杀多线程面试题系列让我成长和学习,同时也借鉴了很多优秀观点和示例! 请各位读者可以支持MoreWindows,让更优秀的文章陪伴我们! 各位读者好, 本人博客自 ...