//
// GameScene.cpp
// example11-1
//
// Created by shuoquan man on 12-10-14.
//
#include "GameAboutScene.h"
#include "GameMenuScene.h"
#include "GameScene.h"
#include "GameObjHero.h"
#include "GameHeroBullet.h"
#include "GameEnemyBullet.h"
using namespace cocos2d;
CCScene* GameMain::scene()
{
CCScene *scene = CCScene::create();
GameMain *layer = GameMain::create();
scene->addChild(layer);
return scene;
}
void GameMain::releaseenemyBullet(int x,int y)
{
for(unsigned int i = 0; i<enemybullets->capacity(); i++){
if(!((GameEnemyBullet *)enemybullets->objectAtIndex(i))->getIsvisble()){
((GameEnemyBullet *)enemybullets->objectAtIndex(i))->setPosition(ccp(x,y));
((GameEnemyBullet *)enemybullets->objectAtIndex(i))->setIsVisable();
break;
}
}
}
void GameMain::releaseheroBullet(int x,int y)
{
for(unsigned int i=0; i<bullets->capacity(); i++){
if(!((GameHeroBullet *)bullets->objectAtIndex(i))->getIsvisble()){
((GameHeroBullet *)bullets->objectAtIndex(i))->setPosition(ccp(x,y));
((GameHeroBullet *)bullets->objectAtIndex(i))->setIsVisable();
break;
}
}
}
bool GameMain::init()
{
if(!CCLayer::init()){
return false;
}
CCSize size=CCDirector::sharedDirector()->getWinSize();
bg1=CCSprite::create("bg.png");
bg1->setScale(0.5);
bg2=CCSprite::create("bg.png");
bg2->setScale(0.5);
bg1->setAnchorPoint(ccp(0,0));
bg2->setAnchorPoint(ccp(0,0));
bg1->setPosition( ccp(0,0) );
bg2->setPosition( ccp(0,size.height) );
this->addChild(bg1, 0);
this->addChild(bg2, 0);
hero = GameObjHero::create();
hero->setPosition(ccp(size.width/2,-50));
hero->setScale(0.5);
addChild(hero,2,1);
hero->runAction(CCMoveBy::create(0.5,ccp(0,150)));
enemys = CCArray::create();
for(int i=0; i<3; i++){
int type = i + 1;
GameObjEnemy* enemy = GameObjEnemy::create();
enemy->setPosition(ccp(size.width/4 * type,size.height + 50));
enemy->setScale(0.5);
enemy->setType(type);
enemys->addObject(enemy);
addChild(enemy,1);
enemy->movestart();
}
enemys->retain();
blood = 3;
CCSpriteBatchNode* ui = CCSpriteBatchNode::create("cat.png");
//CCNode *ui = CCNode::create();
blood1 = CCSprite::createWithTexture(ui->getTexture());
blood1->setPosition(ccp(20,size.height - 20));
blood1->setScale(0.2f);
ui->addChild(blood1);
blood2 = CCSprite::createWithTexture(ui->getTexture());
blood2->setPosition(ccp(50,size.height - 20));
blood2->setScale(0.2f);
ui->addChild(blood2);
blood3 = CCSprite::createWithTexture(ui->getTexture());
blood3->setPosition(ccp(80,size.height - 20));
blood3->setScale(0.2f);
ui->addChild(blood3);
addChild(ui,4);
bullets = CCArray::create(/*5*/);
for(unsigned int i=0; i<bullets->capacity(); i++){
GameHeroBullet * mybullet = GameHeroBullet::create();
mybullet->setIsNotVisable(this);
mybullet->setScale(0.5);
bullets->addObject(mybullet);
this->addChild(mybullet,3);
}
bullets->retain();
enemybullets = CCArray::create();//10
for(unsigned int i=0; i<enemybullets->capacity(); i++){
GameEnemyBullet * mybullet = GameEnemyBullet::create();
mybullet->setIsNotVisable(this);
mybullet->setScale(0.5);
enemybullets->addObject(mybullet);
this->addChild(mybullet,3);
}
gamemark = GameMark::create();
addChild(gamemark,4);
enemybullets->retain();
gameover = CCSprite::create("gameover.png");
gameover->setAnchorPoint(ccp(0.5,0.5));
gameover->setPosition(ccp(0,0));
gameover->setPosition(ccp(size.width/2,size.height/2 + 70));
gameover->setVisible(false);
gameover->setScale(0.5);
addChild(gameover,5);
CCMenuItemImage *pCloseItem = CCMenuItemImage::create("back.png","back.png", this, menu_selector(GameMain::menuBackCallback));
pCloseItem->setPosition( ccp(size.width/2,size.height/2 - 50) );
pCloseItem->setScale(0.5);
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition( CCPointZero );
this->addChild(pMenu,5,25);
pMenu->setVisible(false);
pMenu->setEnabled(false);
isreduce = false;
isover = false;
scheduleUpdate();
return true;
}
void GameMain::menuBackCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->replaceScene(GameMenu::scene());
}
bool GameMain::isCollion(CCPoint p1,CCPoint p2,int w1,int h1,int w2,int h2)
{
if(abs(p1.x - p2.x) < w1 + w2 && abs(p1.y - p2.y) < h1 + h2){
return true;
}
return false;
}
void GameMain::setover()
{
CCMenu* pMenu = (CCMenu *)this->getChildByTag(25);
pMenu->setVisible(true);
pMenu->setEnabled(true);
gameover->setVisible(true);
gameover->setScale(0);
pMenu->setScale(0);
pMenu->runAction(CCScaleTo::create(0.5,1));
gameover->runAction(CCScaleTo::create(0.5,0.5));
}
void GameMain::setherohurt()
{
hero->stopAllActions();
switch(blood){
case 3:
blood1->setVisible(false);
blood --;
break;
case 2:
blood2->setVisible(false);
blood --;
break;
case 1:
blood3->setVisible(false);
blood --;
break;
case 0:
if(! isover){
isover = true;
setover();
}
break;
}
CCActionInterval* action = CCBlink::create(5, 10);
hero->runAction(action);
schedule(schedule_selector(GameMain::resetreduce), 5.0f);
isreduce = true;
}
void GameMain::resetreduce(float dt)
{
isreduce = false;
}
void GameMain::update(float time)
{
bg1->setPosition(ccp(bg1->getPosition().x,bg1->getPosition().y - 2));
bg2->setPosition(ccp(bg2->getPosition().x,bg2->getPosition().y - 2));
if(bg2->getPosition().y < 0){
float temp = bg2->getPosition().y + 480;
bg1->setPosition(ccp(bg2->getPosition().x,temp));
}
if(bg1->getPosition().y < 0){
float temp = bg1->getPosition().y + 480;
bg2->setPosition(ccp(bg1->getPosition().x, temp));
}
CCPoint hpos = hero->getPosition();
for(int i=0; i<3; i++){
GameObjEnemy * enemy = ((GameObjEnemy *) enemys->objectAtIndex(i));
CCPoint epos = enemy->getPosition();
if(enemy->islife){
for(unsigned int i=0; i<bullets->capacity(); i++){
if(((GameHeroBullet *)bullets->objectAtIndex(i))->getIsvisble()){
if(isCollion(((GameHeroBullet *)bullets->objectAtIndex(i))->getPosition(),epos,5,13,21,28)){
enemy->setdie();
gamemark->addnumber(200);
break;
}
}
}
}
if(!isreduce && enemy->islife && isCollion(hpos,epos,21,22.5,21,28)){
enemy->setdie();
setherohurt();
}
}
if(!isreduce){
for(unsigned int i=0; i<enemybullets->capacity(); i++){
if(isCollion(hpos,((GameEnemyBullet *)enemybullets->objectAtIndex(i))->getPosition(),21,22.5,5,13)){
setherohurt();
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
《Cocos2d-x权威指南》第11章实例代码
共69个文件
png:41个
h:11个
cpp:10个
5星 · 超过95%的资源 需积分: 9 21 下载量 9 浏览量
2013-05-15
03:57:27
上传
评论 2
收藏 1.15MB ZIP 举报
温馨提示
《Cocos2d-x权威指南》第11章实例代码,针对Cocos2d-x2.1.3版修正代码,WinXP通过编译并测试。
资源推荐
资源详情
资源评论
收起资源包目录
mxwar.zip (69个子文件)
proj.win32
mxwar.win32.vcxproj.filters 3KB
resource.h 490B
mxwar.win32.vcxproj 9KB
mxwar.win32.vcxproj.user 763B
res
mxwar.ico 47KB
main.cpp 863B
mxwar.rc 2KB
main.h 270B
Classes
GameScene.h 1002B
GameObjEnemy.cpp 4KB
AppDelegate.cpp 2KB
GameMenuScene.cpp 5KB
GameHeroBullet.cpp 964B
GameAboutScene.h 527B
GameEnemyBullet.h 535B
GameMenuScene.h 792B
GameHeroBullet.h 528B
GameObjEnemy.h 618B
GameObjHero.h 890B
GameObjHero.cpp 4KB
AppDelegate.h 1KB
GameAboutScene.cpp 3KB
GameEnemyBullet.cpp 1KB
GameScene.cpp 7KB
GameMark.h 457B
GameMark.cpp 3KB
Resources
meowstar.png 54KB
catBody2-4.png 6KB
Info.plist 1KB
cat.png 17KB
catTail.png 7KB
sound-off-B.png 9KB
backA.png 7KB
bg.png 312KB
aboutB.png 17KB
backB.png 7KB
aboutA.png 16KB
sound-off-A.png 10KB
boom4.png 6KB
continueB.png 20KB
shu.png 8KB
newgameB.png 22KB
sound-on-A.png 11KB
background.mp3 125KB
moon.png 174KB
back.png 8KB
battle.png 34KB
about.png 7KB
boom1.png 7KB
YuGuZD.png 3KB
catBody3.png 6KB
catHand2.png 1KB
score.png 5KB
sound-on-B.png 10KB
DrDogZD.png 5KB
retry.png 4KB
newgameA.png 18KB
boom5.png 6KB
catBody1.png 6KB
boom3.png 13KB
star.png 8KB
continueA.png 17KB
DrDog1.png 18KB
catHand1.png 1KB
tb.png 66KB
boom2.png 7KB
DrDog2.png 17KB
gameover.png 50KB
fps_images.png 7KB
共 69 条
- 1
资源评论
- Androidcc2013-06-06android中英翻译2
- liying4262013-07-27改了很错 能完美运行!
dj0379
- 粉丝: 1775
- 资源: 90
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功