//
// GameScene.cpp
// example11-1
//
// Created by shuoquan man on 12-10-14.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#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(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(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 = new GameObjHero();
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(3);
for(int i = 0;i < 3;i ++){
int type = i + 1;
GameObjEnemy* enemy = new GameObjEnemy();
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();
//创建血量ui
blood = 3;
CCSpriteBatchNode* ui = CCSpriteBatchNode::create("cat.png");
//CCNode *ui = CCNode::create();
blood1 = CCSprite::create(ui->getTexture());
blood1->setPosition(ccp(20,size.height - 20));
blood1->setScale(0.2);
ui->addChild(blood1);
blood2 = CCSprite::create(ui->getTexture());
blood2->setPosition(ccp(50,size.height - 20));
blood2->setScale(0.2);
ui->addChild(blood2);
blood3 = CCSprite::create(ui->getTexture());
blood3->setPosition(ccp(80,size.height - 20));
blood3->setScale(0.2);
ui->addChild(blood3);
addChild(ui,4);
//初始化主角子弹
bullets = CCArray::create(5);
for(int i = 0;i < bullets->capacity();i ++){
GameHeroBullet * mybullet = new GameHeroBullet();
mybullet->setIsNotVisable();
mybullet->setScale(0.5);
bullets->addObject(mybullet);
this->addChild(mybullet,3);
}
//初始化敌人子弹
bullets->retain();
enemybullets = CCArray::create(10);
for(int i = 0;i < enemybullets->capacity();i ++){
GameEnemyBullet * mybullet = new GameEnemyBullet();
mybullet->setIsNotVisable();
mybullet->setScale(0.5);
enemybullets->addObject(mybullet);
this->addChild(mybullet,3);
}
gamemark = new GameMark();
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(){
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(){
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(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(int i = 0;i < enemybullets->capacity();i ++){
if(isCollion(hpos,((GameEnemyBullet *)enemybullets->objectAtIndex(i))->getPosition(),21,22.5,5,13)){
setherohurt();
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
cocos2d-x游戏实例 瞄汪战争
共72个文件
png:51个
cpp:9个
h:9个
5星 · 超过95%的资源 需积分: 10 517 下载量 38 浏览量
2013-04-09
17:51:29
上传
评论 6
收藏 1.48MB ZIP 举报
温馨提示
cocos2d-x游戏实例实例"瞄汪战争" 使用cocos2d-x 2.0.1,纵版射击游戏
资源推荐
资源详情
资源评论
收起资源包目录
example11-1.zip (72个子文件)
example11-1
Resources
sound-on-A.png 11KB
catBody1.png 6KB
catHand2.png 1KB
aboutB.png 17KB
background.mp3 125KB
DrDog2.png 17KB
boom2.png 7KB
catTail.png 7KB
Icon-Small@2x.png 8KB
catBody3.png 6KB
Default.png 87KB
DrDogZD.png 5KB
gameover.png 50KB
newgameA.png 18KB
YuGuZD.png 3KB
catHand1.png 1KB
cat.png 17KB
iTunesArtwork 61KB
Icon.png 9KB
boom3.png 13KB
meowstar.png 54KB
CloseSelected.png 5KB
Icon-Small.png 5KB
CloseNormal.png 6KB
bg.png 312KB
shu.png 8KB
battle.png 34KB
about.png 7KB
HelloWorld.png 136KB
moon.png 174KB
backB.png 7KB
back.png 8KB
DrDog1.png 18KB
continueA.png 17KB
sound-off-B.png 9KB
aboutA.png 16KB
Icon@2x.png 16KB
boom5.png 6KB
sound-off-A.png 10KB
boom4.png 6KB
Icon-Small-50.png 7KB
newgameB.png 22KB
star.png 8KB
boom1.png 7KB
catBody2-4.png 6KB
score.png 5KB
backA.png 7KB
retry.png 4KB
Info.plist 1KB
tb.png 66KB
Icon-72.png 12KB
fps_images.png 7KB
sound-on-B.png 10KB
continueB.png 20KB
Classes
GameAboutScene.cpp 3KB
GameHeroBullet.h 551B
GameObjEnemy.cpp 4KB
GameScene.cpp 8KB
GameMenuScene.cpp 5KB
GameMark.cpp 3KB
GameMenuScene.h 805B
GameAboutScene.h 593B
GameEnemyBullet.cpp 1KB
AppDelegate.cpp 2KB
AppDelegate.h 1KB
GameObjHero.cpp 4KB
GameHeroBullet.cpp 1KB
GameObjHero.h 924B
GameScene.h 1KB
GameMark.h 497B
GameObjEnemy.h 631B
GameEnemyBullet.h 557B
共 72 条
- 1
bill_man
- 粉丝: 2172
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页