当前位置: 首页 > news >正文

西安市住宅和城乡建设局网站baike seotl

西安市住宅和城乡建设局网站,baike seotl,河北定制网站建设调试,北京h5网站建设报价最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d 程序很简单,就一个入门级的小游戏,写完后放手机里运行了下效果还可以 开发环境 vs2010,windows phone sdk 7.1 实现方法如下 …

最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d

程序很简单,就一个入门级的小游戏,写完后放手机里运行了下效果还可以

开发环境 vs2010,windows phone sdk 7.1

实现方法如下

1.创建好 CCLayer 的子类

2.重写 onEnter 方法添加一些基本按钮 跟一些初始化代码

3.通过schedule方法 控制 坦克 子弹的CCSprite对象

4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动

5.通过CCRect的CCRectIntersetsRect函数来进行碰撞检测,实现子弹打击坦克

6.代码完成后 安装zune后 就能把游戏部署到手机里面了 部署前手机要绑定开发者帐号或者学生帐号

具体实现代码

1.在项目里面添加枚举类型

/// <summary>

/// 表示方向的的枚举类型

/// </summary>

public enum Direction { L, U, D, R, STOP }

2.添加子弹类的相关常量,属性

/// <summary>
/// 子弹X轴的速度,单位PX
/// </summary>
public static int XSPEED = 10;

/// <summary>
/// 子弹Y轴的速度,单位PX
/// </summary>
public static int YSPEED = 10;

/// <summary>
/// 子弹的宽度
/// </summary>
public static int WIDTH = 15;

/// <summary>
/// 子弹的高度
/// </summary>
public static int HEIGHT = 15;

/// <summary>
/// 子弹的坐标
/// </summary>
int x, y;

/// <summary>
/// 子弹的方向
/// </summary>
Direction dir;

/// <summary>
/// 子弹的存活状态
/// </summary>
private bool live = true;

/// <summary>
/// TankClient窗体实例
/// </summary>
private TankClient tankClient;

/// <summary>
/// 敌我双方的标记
/// </summary>
private bool good;

CCSprite m_missile;

3.添加draw方法来画出子弹

public void Draw()
{
if (!live)
{
tankClient.removeChild(m_missile, true);
tankClient.missiles.Remove(this);
return;
}
m_missile.position = new CCPoint(x, y);
Move();
}

4.添加子弹打击坦克的方法
public bool HitTank(Tank t)
{
//用IntersectsWith来检测两个矩形相碰撞
//if (GetRectangle().IntersectsWith((t.GetRectangle())) && t.Live && this.live && this.good != t.Good)
if (CCRect.CCRectIntersetsRect(GetRectangle(), t.GetRectangle()) && t.Live && this.live && this.good != t.Good)
{
t.Live = false;
this.live = false;
return true;
}
return false;
}

5.添加坦克类相关属性,常量
/// <summary>
/// 坦克x轴的速度
/// </summary>
public static int XSPEED = 5;

/// <summary>
/// 坦克y轴的速度
/// </summary>
public static int YSPEED = 5;

/// <summary>
/// 坦克的宽度
/// </summary>
public static int WIDTH = 58;

/// <summary>
/// 坦克的高度
/// </summary>
public static int HEIGHT = 58;

/// <summary>
/// 坦克的坐标
/// </summary>
private int x, y;

/// <summary>
/// 标记上下左右键是否按下
/// </summary>
private bool l = false, u = false, r = false, d = false;

/// <summary>
/// 坦克的方向
/// </summary>
private Direction dir = Direction.STOP;

/// <summary>
/// 坦克炮筒方向
/// </summary>
private Direction ptDir = Direction.D;

/// <summary>
/// TankClient窗体实例
/// </summary>
TankClient tankClient;

/// <summary>
/// 标记敌我双方
/// </summary>
private bool good;

/// <summary>
/// 控制敌人坦克不规则运行时使用
/// </summary>
private int step = 0;

/// <summary>
/// 标记坦克的存活状态
/// </summary>
private bool live = true;

public CCSprite m_tank;

6.在tank类中实现画坦克方法
public void Draw()
{
if (!live)
{
if (!good)
{
tankClient.removeChild(m_tank, true);
tankClient.tanks.Remove(this);
}
tankClient.removeChild(m_tank, true);
return;
}
if (good)
{
m_tank.position = new CCPoint(x, y);
}
else
{
//g.FillEllipse(Brushes.Blue, x, y, WIDTH, HEIGHT);
m_tank.position = new CCPoint(x, y);
}
//根据炮筒坦克来画出坦克的炮筒
switch (ptDir)
{
case Direction.D:
m_tank.rotation = 0; //旋转精灵控制 炮筒方向
break;
case Direction.U:
m_tank.rotation = 180;
break;
case Direction.L:
m_tank.rotation = 270;
break;
case Direction.R:
m_tank.rotation = 90;
break;
}
Move();
}

7.tank发子弹的方法

public Missile Fire()
{
if (!live) return null;

int x = this.x;
int y = this.y ;
Missile missile = new Missile(x, y, good, ptDir, tankClient);
tankClient.missiles.Add(missile);
return missile;
}


8.CCLayer加入坦克


myTank = new Tank(60,420, true, this);
for (int i = 0; i < 10; i++)
{
//添加10量坦克间距 为70
tanks.Add(new Tank(50 + 70 * (i + 1), 20, false, this));
}

9.CCLayer中调用子弹打击坦克的方法

for (int i = 0; i < missiles.Count; i++)
{
Missile m = missiles[i];
m.HitTank(myTank);
m.HitTanks(tanks);
m.Draw();
}

10.控制坦克移动射击的部分代码
public override void ccTouchEnded(CCTouch touch, CCEvent event_)
{
myTank.KeyReleased(Microsoft.Xna.Framework.Input.Keys.Down);
}

public void hitCallback(CCObject pSender)
{
myTank.KeyReleased(Microsoft.Xna.Framework.Input.Keys.Enter);
}

11.虚拟机中的运行效果


代码下载 http://download.csdn.net/detail/xiaoxiao108/4545620

程序中控制坦克方向的代码处理的不是很好,没有通过虚拟摇杆实现。

如果你发现有什么不合理的,需要改进的地方,邮件联系328452421@qq.com(qq常年不在线,邮件联系) 朱晓 。相互交流 谢谢

http://www.lbrq.cn/news/2780407.html

相关文章:

  • 网站公司广州360关键词指数查询
  • 江苏省句容建设局网站拼多多关键词怎么优化
  • 信息型企业网站有哪些百度客户端下载
  • 自己做购物网站百度官方推广
  • 专业建站公司设计方案能让手机流畅到爆的软件
  • 河南定制网站建设企业国家卫生健康委
  • 网站中flash怎么做小程序开发多少钱
  • 淘宝客自己做网站教程上海关键词推广公司
  • 百度搜索搜不到网站客户关系管理
  • 网上支付网站怎摸做站长工具 忘忧草
  • 网站域名解析后多久能生效哈尔滨网络推广
  • 贵州网站建设.com十大营销策略有哪些
  • 苏州吴江做网站公司网络公司的推广
  • 手机网站搜索框代码建站
  • 青岛开发区做网站线上推广的公司
  • 电子商务网站建设与管理的实验报告什么是推广
  • 天元建设集团有限公司总裁赵纪峰百度seo排名优化费用
  • 网站上海公安局备案怎么做专业搜索引擎优化电话
  • 导航类网站怎么做排名小说网站排名前十
  • 做电影网站用什么软件叫什么名字吗百度建站平台官网
  • 什么网站有做qq群排名的有哪些网站可以免费推广
  • 北京公司网站建站友情链接怎么购买
  • 外贸销售管理制度优化教程
  • 阿里云手机做网站百度移动开放平台
  • 贵阳网站制作免费品牌维护
  • 餐饮网站网页设计代码微信推广平台哪里找
  • 南通网站制作计划舆情监测系统
  • 网站制作 知乎seo挖关键词
  • 兰州论坛网站建设建立网站的基本步骤
  • 家居网站建设定位分析论文网店怎么推广和宣传
  • LeetCode 刷题【47. 全排列 II】
  • CISP-PTE之路--10文
  • 《算法导论》第 32 章 - 字符串匹配
  • 走进数字时代,融入数字生活,构建数字生态
  • 大数据数据库 —— 初见loTDB
  • 数控滑台的功能与应用范围