ゲーム製作」タグアーカイブ

(2)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ CCTextuer2DからCCSpriteを使う

(2)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ CCTextuer2DからCCSpriteを使う

他の関連記事cocos2d-xに移植する過程の記録メモまとめ、Androidクロスプラットフォーム化へ 、(1)〜(6)分

 いろいろと本を3冊買って、cocos2d for iPhone をcocos2d-xに移植する過程を試みていますが、結構進みません。
 objective-cをc++にしようとするとかなり時間がかかりそうです。すんなりとはいきません。
 

・スプライトの作成の場合の比較

C++であるcocos2d-xは、オブジェクトの生成の時にnewを使用します。
一方のobjective-cはそのまま記載して画像を設定します。
・C++ , cocos2d-x

 CCSprite *sprite=new CCSprite();
    sprite->initWithFile("hiyoko_sample.png");
    sprite->setPosition(ccp(0,0);
    this->addChild(sprite);
sprite->autorelease();

・objective-C, cocos2d for iPhone

 CCSprite *sprite=[CCSprite spriteWithFile:@"hiyoko_sample.png"];
 sprite.position=ccp(0,0);
 [self addChild:s];

・スケジュールの設定

C++ , cocos2d-x
int iTimer;
//schedule 1秒ごとに加算する

    bool HelloWorld::init()//この場所にスケジュールをした場合
	{
    this->schedule(schedule_selector(HelloWorld::timer), 1.0);
    this->scheduleUpdate();
    }
  	--
	void HelloWorld::timer(){
  	  iTimer++;
	}

objective-C, cocos2d for iPhone

	[self schedule:@selector(timer:) interval:1.0f];
	-(void)timer:(ccTime*)delta{
		iTimer++;
	}

・座標の取得 position

C++ , cocos2d-x

CCSprite *test
    int x;
    int y;
    x=test->getPositionX();
    y=test->getPositionY();

objective-C, cocos2d for iPhone

CCSprite *test
    int x;
    int y;
    x=test.position.x
    y=test.position.y

・フォーラムの質問のallocのCocos2d-iphone to Cocos2d-X

タイトル:Converting snipets of code from Cocos2d-Iphone to Cocos2d-x

>Cocos2d-iphone
CCArray *spiders = [[CCArray alloc] initWithCapacity:5];

>Cocos2d-X
CCArray *spiders=CCArray::createWithCapacity(5);

Texture2dText.cpp
CCTextureCache使うときは、CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
が必要

void TextureMipMap::onEnter()
{
    TextureDemo::onEnter();
    CCSize s = CCDirector::sharedDirector()->getWinSize();

    CCTexture2D *texture0 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas.png");
    texture0->generateMipmap();
    ccTexParams texParams = { GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE };    
    texture0->setTexParameters(&texParams);

    CCTexture2D *texture1 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas_nomipmap.png");

    CCSprite *img0 = CCSprite::createWithTexture(texture0);
    img0->setTextureRect(CCRectMake(85, 121, 85, 121));
    img0->setPosition(ccp( s.width/3.0f, s.height/2.0f));
    addChild(img0);

    CCSprite *img1 = CCSprite::createWithTexture(texture1);
    img1->setTextureRect(CCRectMake(85, 121, 85, 121));
    img1->setPosition(ccp( 2*s.width/3.0f, s.height/2.0f));
    addChild(img1);
    
    
    CCEaseOut* scale1 = CCEaseOut::create(CCScaleBy::create(4, 0.01f), 3);
    CCActionInterval* sc_back = scale1->reverse();
    
    CCEaseOut* scale2 = (CCEaseOut*) (scale1->copy());
    scale2->autorelease();
    CCActionInterval* sc_back2 = scale2->reverse();

    img0->runAction(CCRepeatForever::create(CCSequence::create(scale1, sc_back, NULL)));
    img1->runAction(CCRepeatForever::create(CCSequence::create(scale2, sc_back2, NULL)));
    CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
}

CCTexture2dを使用するとき

objective-C, cocos2d for iPhone

UIImage     *img        =[UIImage imageNamed:filename];
    CGImageRef  imageRefAll =[img CGImage];
    textureOther            =[[CCTexture2D alloc]initWithCGImage:imageRefAll resolutionType:kCCResolutioniPhoneRetinaDisplay];

COCS2d-x
CCTexure2Dでの注意、initWithTextureだと autorelease() is oK。しかし、CCSprite::createWithTextureでは、autorelease()を設定すると実行後しばらくしてエラーになる。
半自動か、手動管理のメモリ管理を決めましょう。

 CCTexture2D *testTexure=new CCTexture2D();
    CCImage *img=new CCImage();//UIImage
    img->initWithImageFile("hiyoko_sample.png");
    testTexure->initWithImage(img);
    CCSprite *testSprite=new CCSprite();
    //Textureの設定ではinitでも::createでもOKでもautoreleaseはinitになる。
    testSprite->initWithTexture(testTexure);//OK autorelease() is oK.
    //testSprite=CCSprite::createWithTexture(testTexure);//OK //but, not autorerelease()
    this->addChild(testSprite);
    testSprite->setPosition(ccp(120,240));
    
    testTexure->autorelease();
    testSprite->autorelease();//for initWithTexure
    

ゲーム製作のための講座メモ RPGからシミュレーション、ボードゲーム、アルゴリズムなど

ゲーム製作のための講座メモ RPGからシミュレーション、ボードゲーム、アルゴリズムなど

アイフォン向けのRPGゲームを作りたいと思っています。しかし、どのようにしてコードを組んだり、AIを組み込んで良いのかさっぱりわからず、難しい状態です。
そこで、手始めに、ゲームのアルゴリズムやサンプルコードを探し、そこから必要なプログラムコードを学んでいきたいと思っています。

I will plan to make a RPG game for iPhone. But it is difficult to build any code and AI system for me. So first I find any algorithm of game and sample game codes, I learn and pick up its program code.

ジャンル別ゲームの作り方とアルゴリズムまとめ – ネットサービス研究室
00画像
サイト画像

その他、ゲーム製作メモ