1小时制作人气游戏《四色方块》

hello,遇见好多好多萌新,心情好好。

前些天 yada给我推荐了一个游戏《四色方块》,《四色方块》是独立开发者xxpsoft最新开发的一款极具创意的休闲安卓游戏:

游戏中点击屏幕让方块旋转对应上面掉下的同色小球即是游戏的全部精华。

下载量也是非常的高:

效果:

这个游戏真的非常简单,但是还是可以用来练练手,再次熟悉类和对象和一些设计技巧。

现在就来教你如何开发属于自己的 《四色方块》。

首先,得来分析一下,游戏的原理,再确定如何开发。

1,小球从上往下落下,并在最高处时会随机改变小球的颜色

2,底下的方块分两个方向旋转

3,小球颜色与方块颜色要一致,否则游戏失败。。

。。。。。。。等等。

这里先想好如何检测,方块与小球颜色是否一致的。

这里的方块并不是用四个三角形组成的,检测的时候也不是检测它与小球的颜色是否相同。

这里的方案是,通过,小球每个index与方块每个三角面的颜色index是否对应相等来判断游戏是否正常进行。

现在为下落的小球写一个类:(下面是主要的方法和数据)

定义:

public:

 CREATE_FUNC(Ball);//创建方法

 virtual bool init();//初始化方法,用与初始化小球颜色和index

 void change();//改变小球颜色

 int  getColorIndex();//外部获取到index

private:

 ImageView*ball;//小球对象

 int colorindex;//index

实现:

bool Ball::init(){

 ball=ImageView::create("ballone.png");//初始化小球

 this->setAnchorPoint(Point(0.5,0.5));

 this->setContentSize(ball->getContentSize());

 ball->setPosition(this->getContentSize()/2);

 this->addChild(ball);

 this->colorindex=1;//index初始化为1

 return true;

}

void Ball::change(){

//这里通过生成0-4的随机数,决定小球随机颜色,同时设置相应的index

 auto c=CCRANDOM_0_1()*4;


 if(c>0&&c<=1){


 ball->loadTexture("ballone.png");

 this->colorindex=1;

    }


 if(c>1&&c<=2){


 ball->loadTexture("balltwo.png");

 this->colorindex=2;

    }

 if(c>2&&c<=3){


 ball->loadTexture("ballthree.png");

 this->colorindex=3;

    }

 if(c>3&&c<=4){


 ball->loadTexture("ballfour.png");

 this->colorindex=4;

    }



}

int Ball::getColorIndex(){

  return   this->colorindex;//返回该index

}

方块:

定义:

下面是方块的一些重要方法是属性。

 CREATE_FUNC(BoxSp);

 virtual bool init();

 void Roll();//右方向转

 void RollR();//左方向转

 int getIndex();//返回index


private:

 int index;


                               实现:

bool BoxSp::init(){

 this->initWithFile("coi.png");

 this->setScale(0.6);

 this->index=1;

 return true;

}

//下面的判断是,如果刚开始就向右转,那么index为4的三角面就朝上。

void BoxSp::Roll(){

 if(this->index==1){

 this->index=4;

    }

 auto c=RotateBy::create(0.02, 90);

 this->runAction(c);

 this->index--;//index往下减,分别对应每一个90度后的颜色的index。

}

void BoxSp::RollR(){

//下面的判断是,如果向左转的时候index为4的三角面朝上,这里就是控制自加,或者自减后,index始终控制在1--4之间。

 if(this->index==4){


 this->index=1;


    }


 auto c=RotateBy::create(0.02, -90);

 this->runAction(c);

 this->index++;

}

int BoxSp::getIndex(){

 return this->index;

}

使用:

    score=0;//分数

 label=LabelTTF::create("0", "Arial", 30);//分数便笺

 label->setPosition(Point(400,400));

 this->addChild(label,10);

auto bac=Sprite::create("background.jpg");

    bac->setScale(0.4);

 this->addChild(bac);

 box=BoxSp::create();//创建方块

 box->setPosition(Point(400,100));

 this->addChild(box);

 ball=Ball::create();//创建小球

 ball->setPosition(Point(400,400));

 this->addChild(ball);

下面代码的图解,小球往下掉路前,先进行颜色的改变,掉落到方块面上就进行检测,看是否三角面的颜色与小球相同,然后小球往上回到起点,由此反复,直到游戏结束。

1小时制作人气游戏《四色方块》

 auto ac1=MoveTo::create(1, Point(400,150));

 auto ac2=CallFunc::create(CC_CALLBACK_0(TestScene::callC,this));

 auto ac3=CallFunc::create(CC_CALLBACK_0(TestScene::callE,this));

 auto ac4=MoveTo::create(1.5,Point(400,400));


 auto seq=Sequence::create(ac2,EaseElasticIn::create (ac1,1),ac3,EaseElasticOut::create (ac4,1),NULL);

 ball->runAction(RepeatForever::create(seq));

void TestScene::callC(){

 ball->change();

}

触摸事件的时候,把屏幕分为左和右,点击不同侧,表示方块往不同的方向转动。

bool TestScene::onTouchBegan(Touch*touch, Event*event){


 auto c=touch->getLocation();

 if(c.x>400){


 box->Roll();



    }else{


 box->RollR();

    }



 return true;

}

改变颜色:

void TestScene::callC(){

 ball->change();

}

检测:

void TestScene::callE(){

 auto i=box->getIndex();

 auto j=ball->getColorIndex();

 log("%i",j);

 check(i, j);


}

//通过获取来的index判断是否为同一颜色。

void TestScene::check(int a,int b){

 if(a==b){

 score++;

 label->setString(__String::createWithFormat("%i",score)->getCString());//写入分数

    }else{


 label->setString("gameover");


    }

}

扩展:

游戏可不是那么简单就完成的,游戏中的速度还是会不断的加快,方块的个数和小球的个数会逐渐变为两个。

这些就交给你们自己去实现吧。

往后的故事:

欢迎关注日宅记~

祝假期愉快~

拜~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容