在上篇我们完成了子弹和地图碰撞的检测,在这篇我们将完成敌方坦克AI的编写。 具体思路是屏幕中保持有四个敌方坦克,然后坦克随机方向运动,并且子弹消失后1秒发射一次 1.我们新建一个敌方坦克的AI类来控制地方坦克AI行为:   staticconstcharenemyTankType[]= { "normalU.png","speedU.png","armor1U.png" }; classEnemyAI { public: EnemyAI(); EnemyAI(); staticEnemyAIcreateEnemyAIWithTank(Tanktank); void...

  tEcohMEyDsEb   2023年11月02日   60   0   0

象棋描述 在说代码之前,我们先让象棋效果登场,以方便大家对代码的理解 欢迎界面 中国象棋程序,运行起来的第一个界面是一个欢迎界面,该欢迎界面在停留一秒后进入游戏界面   游戏主界面   新局:所有棋子归位,状态复位 开始:在开了[新局]之后,点击[开始]开始游戏,只有点击开始之后,才能移动棋子 悔棋:局面往后退一步 难度:该功能未实现   选中棋子   如果某个棋子选中,该棋子用绿色框围住,表示选中状态   移动棋子 当棋子被选中后,鼠标继续再点空地,如果符合规则,那么棋子就会移动到目标坐标     吃棋子 ...

  tEcohMEyDsEb   2023年11月02日   40   0   0

前情回顾 上一个我们提到象棋运动的函数dealWithChess,但是只是说该函数完成了棋子的选择和移动功能 其实在这个函数里,在移动棋子之前,是要对棋子的移动是否合法进行判断的,我们一起来看看如何对棋子进行判断的  判断移动规则入口 在dealWithChess中,关注如下代码,这个judgeAction就是判断棋子移动是否合法的入口了 这个代码是判断棋子的移动是否合规则,如果不合规则,则清除状态最后返回 judgeAction   boolCCMainMenu::judgeAction(inttx,intty) { if(!m_pCurChess) ...

  tEcohMEyDsEb   2023年11月02日   34   0   0

1.先定义坦克的一些属性   classTank:publicCCSprite { public: Tank(); Tank(); staticTankcreateTankWithTankType(constchartankTypeName); };上面定义很简单,我们暂时只用写一个函数createTankWithTankType,     2.函数功能就是从坦克类型创建坦克精灵,下面看实现:   TankTank::createTankWithTankType(constchartankTypeName) { CCSpriteFrame...

  tEcohMEyDsEb   2023年11月02日   89   0   0

前情回顾 在之前的学习中,我们已经了解到,下棋主界面是由CCMainMenu类实现的,在它的init函数中,初始化了 主界面需要的各种数据,包括:创建控件,初始化32个棋子,初始化执行变量等等,在这个博文中,我们 主要来学习,32个棋子是如何被初始化并显示在界面上的。这个显示和initCoordinate以及 了解32个棋子显示在界面的目的,是为了让大家更好理解32个棋子的数据结构,这些数据结构在当棋子走动 时,需要改动,所以必须要理解。  initCoordinate   voidCCMainMenu::initCoordinate() { /std::strin...

  tEcohMEyDsEb   2023年11月02日   81   0   0

前情回顾 通过CCMainMenu的init函数,已经把所有的按钮,棋子都摆放完毕了,但是这个时候,棋子是不能走动的,只有在开始游戏之后才能移动棋子。 点击按钮,开始游戏,那么点击开始按钮之后,程序究竟发生了什么事,我们继续看代码到创建这个开始按钮的地方。开始按钮的创建 开始按钮的创建代码,在上一篇博文中有所提起,但是没有重点提及,是在CCMainMenu::init()函数中   //开始按钮 pItem=CCMenuItemImage::create(RES_PATH"start.jpg",RES_PATH"start.jpg",this,menu_selector(CC...

  tEcohMEyDsEb   2023年11月02日   53   0   0

  脑波,又称之为脑电波,是人大脑发出的电波,非常的微弱,只能通过设备来检测。 人的脑波在不同状态下,会不同,因此可以通过脑波来量化分析人的精神状态。 科学家讲脑电波分为四种,以下为详细解释(摘自百度百科):   一、α脑波 α脑波,是当人们放松身心、沉思时的脑波。它以每秒钟8~12周波的频率运行着。当人们在做“白日梦”或遐思时,脑波就会呈现这种模式。这种模式下的人应该是处于放松式的清醒状态中。 二、β脑波 β脑波,是一种有意识的脑波,它以每秒钟12~25周波的频率运行着。当人们处于清醒、专心、保持警觉的状态,或者是在思考、分析、说话和积极行动时,头脑就...

  tEcohMEyDsEb   2023年11月02日   90   0   0

上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的, 这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成。   1.我先现在坦克类Tank中添加两个成员变量:   CC_SYNTHESIZE(CCRect,mMovedRect,MovedRect); CC_SYNTHESIZE(bool,IsBlock,Block);mMovedRect是移动后的位置,目的是保存移动后的位置来检测碰撞,   如果发现与其他坦克碰撞了,则不执行移动动作; IsBlock是用来标记坦克是否被碰撞的。   2.然后我们还得在Tank类...

  tEcohMEyDsEb   2023年11月02日   37   0   0

   6月30日,历时32小时的微软开放技术Cocos2d-x编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos2d-x在中国举办黑客松。此次活动共有包括传智播客C/C学院的学员组成的闪游队,以及Hurry队、繁星队等在内的18个团队,70人参加了这场开发盛事,参赛团队中,不乏经验丰富的一线手游团队。 “太空大战”项目演示  微软开放技术Cocos2d-x编程黑客松,是微软开放技术、Cocos2d-x开源引擎联合举办的一场属于游戏编程开发者的聚会,参赛队可带上自己的得意作品及其源代码参加,参赛队员不仅可以展示自己的作品,...

  tEcohMEyDsEb   2023年11月02日   36   0   0

1)下载cocos2dx2.2.3并解压 我的目录在$HOME/Document/cocos2dx-2.2.3   2)安装python,如果需要的话,一般mac已经带,我是没有安装了   3)安装xcode,从appstore安装即可   开发流程: 1)创建工程 打开终端,cd到你到cocos2dx目录的tools/project-creator下,下面是我的目录比较参考 然后执行: ./create_project-projectHelloWorld-packagecom.itcast.xuegl-languagecpp 这个命令将在cocos2d...

  tEcohMEyDsEb   2023年11月02日   25   0   0

通过上面两个文章的分析,我们在这个博文里做个总结: CCEGLView::getFrameSize()返回的是窗口相对于屏幕像素的尺寸,这个尺寸,只要窗口没变化,值就不会变化 CCDirector::getWinSize()返回的是窗口自定义像素的尺寸 CCDirector::getWinSizeInPixels()返回的是窗口自定义像素的尺寸,经过scale之后的值,跟getWinSize和setContentScaleFactor有关系 CCEGLView::getDesignResolutionSize是返回窗口自定义像素的尺寸,跟CCEGLView::setDesignResol...

  tEcohMEyDsEb   2023年11月02日   44   0   0 cocos2dx游戏开发专栏cocos2d-x

前情回顾 上个博客说道我们象棋程序进入了欢迎界面,在欢迎界面下等待一秒进入主界面 进入主界面的关键代码如下: CCScenepScene=CCMainMenu::scene(); 创建scene ... CCDirector::sharedDirector()->replaceScene(ps); 显示scene   最关键的是CCMainMenu::scene函数,说明后面要显示的scene类型是CCMainMenu类型的 所以接下来我们一起来看CCMainMenu是怎么回事  CCMainMenu   typedefstruct...

  tEcohMEyDsEb   2023年11月02日   35   0   0

在上篇我们加上了简单的坦克之间的碰撞检测,这篇我们继续加上子弹之间, 子弹与坦克之间的碰撞检测,对于上一篇碰撞处理不太完美的地方我们继续改进。 1.子弹之间的碰撞   //玩家子弹和敌方子弹之间的碰撞 CCObjectpObj; CCARRAY_FOREACH(mEnemyTanks,pObj) { BulletenemyBullet=((Tank)pObj)->getBullet(); if(playerBullet->getFlyState()&&enemyBullet->getFlyState()) { if(I...

  tEcohMEyDsEb   2023年11月02日   26   0   0

之前两个博客讲述了象棋的规格和工程文件之后,我们继续深入的从代码开始学习cocos2dx 首先从程序入口main函数开始  main函数   intAPIENTRY_tWinMain(HINSTANCEhInstance, HINSTANCEhPrevInstance, LPTSTRlpCmdLine, intnCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); ifdefUSE_WIN32_CONSOLE AllocConsole(); freop...

  tEcohMEyDsEb   2023年11月02日   32   0   0

  cocos2d-x游戏开发前景: 最近企业对于Cocos2D-X开发人才的用人需求很大,而且所提供的薪资相当可观。 为满足广大向往游戏开发行业同学的需求,特推出适合新手的Cocos2D-X手游开发教程。 Cocos2d-X是一个技持多平台的2D游戏引擎,使用C开发,基于OpenGLES, 支持WoPhone、iOS、Android、Windows等操作系统。Cocos2d-X主要是围绕跨平台, 快捷便携地开发移动端游戏。在平板及智能手机日趋成熟与充斥我们日常娱乐时间的趋势下, 移动端的游戏开发已经拥有成熟与稳定的市场。然而,对于移动端的开发人才却是非常紧缺...

  tEcohMEyDsEb   2023年11月02日   29   0   0
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~