游戏里有简单关,也有困难关.什么哪些因素让人变老关卡简单

2381人阅读
window phone编程(44)
cocos2d-x for windows phone(22)
本教程基于子龙山人翻译的cocos2d的IPHONE教程,用cocos2d-x for XNA引擎重写,加上我一些加工制作。教程中大多数文字图片都是原作者和翻译作者子龙山人,还有不少是我自己的理解和加工。感谢原作者的教程和子龙山人的翻译。本教程仅供学习交流之用,切勿进行商业传播。
子龙山人翻译的Iphone教程地址:
Iphone教程原文地址:
上一篇教程我们有一个可以旋转的炮塔,有怪物可以射杀,还有很棒的音效。
  但是,我们的炮塔觉得这太简单了。这些怪物只要开一枪就挂了,而且现在只有一个关卡!它还没有热身呢!
  在这个教程里,我将会扩展我们的工程,并增加一些不同种类和难度的怪物,然后实现多个关卡。
为了好玩,让我们创建两种不同类型的怪物:一种不怎么经打,但是移动速度很快,还有一种很能抗(坦克级别),但是移动速度很慢!为了使玩家可以区分这两种不同类型的怪物,下载修改的并把它们添加到工程里。同时,下载,也把它们添加到Content工程中去。图片添加到images文件夹,音效添加到resource文件夹。
好了,让我们来创建Monster类。这里有许多方法来为Monster类建模,但是,我们选择最简单的方式,即把Monster类当作CCSprite的一个子类。同时,我们会创建两个Monster类的子类:一个为我们的虚弱快速怪创建,另一个为我们的强悍缓慢怪创建。
添加一个类到Classes文件夹。命名为Monster.cs。并让之继承于CCSprite
接下来,把Monster.cs中的代码替换成下面的:
using System.Collections.G
using System.L
using System.T
using cocos2d;
namespace cocos2dSimpleGame.Classes
class Monster:CCSprite
private int _curHp;
private int _minMoveD
private int _maxMoveD
public int hp { get {
return _curHp;
public int minMoveDuration {
return _minMoveD
_minMoveDuration =
public int maxMoveDuration {
return _maxMoveD
_maxMoveDuration =
class WeakAndFastMonster : Monster
public static WeakAndFastMonster monster()
WeakAndFastMonster monster = new WeakAndFastMonster();
if (monster.initWithFile(@&images/Target&))
monster.hp = 1;
monster.minMoveDuration = 3;
monster.maxMoveDuration = 5;
class StrongAndSlowMonster : Monster
public static StrongAndSlowMonster monster()
StrongAndSlowMonster monster = new StrongAndSlowMonster();
if (monster.initWithFile(@&images/Target2&))
monster.hp = 3;
monster.minMoveDuration = 6;
monster.maxMoveDuration = 12;
这里非常直白:我们从CCSprite派生一个Monster类,然后增加了一些成员变量来记录monster的状态。然后,我们又从Monster类派生出两个不同的monster子类。这里代码很简单的,只有我们为每个类添加的一个静态方法,用来返回这个类的实例。然后初使化了默认的HP和移动所需要的时间。
然后,返回到GamePlayLayer里面,修改addTarget方法来构造我们新创建的类的实例,而不是直接创建精灵(sprite)。替换spriteWithFile那一行,如下所示:
Monster target =
if (random.Next() % 2 == 0)
target = WeakAndFastMonster.monster();
target = StrongAndSlowMonster.monster();
这里将会有50%的机率来出现不同类型的monster。当然,我们把怪物的speed定义移到了类当中,因此,我们需要修改min/max移动间隔,把它改成下面的样子:
float minDuration = target.minMoveD//2.0f;
float maxDuration = target.maxMoveD//4.0f;
最后,在updates方法里面做一些修改。首先,在遍历所有的_targets前,也就是foreach (CCSprite target in _targets)前,添加一个boolean值。
bool monsterHit =
然后,在CCRectIntersetsRect里面,不是马上把对象添加到targetsToDelete里面,而是改成下面的:
//targetToDelete.Add(target);
monsterHit =
Monster monster = (Monster)
monster.hp--;
if (monster.hp &= 0)
targetToDelete.Add(target);
  这里,我们不是马上杀死怪物,而是减少它的HP,而且只有当它的生命值小于0的时候,才kill它。注意,如果projectile击中一个怪物的话 我们就跳出循环,这意味着一个飞盘射击一次只能打一个怪物。
  最后,我们把projectilesToDelete测试的这段代码:
if (targetToDelete.Count & 0)
projectilesToDelete.Add(projectile);
改成下面所示:
if (monsterHit)
projectilesToDelete.Add(projectile);
SimpleAudioEngine.sharedEngine().playEffect(&resource/explosion&);
编译并运行代码,如果一切顺利,那么你将会看到两种不同类型的怪物在屏幕上飞过---这使得我们的炮塔的生活更加富有挑战了!
  为了使游戏支持多个关卡,首先我们需要重构。这个重构的工作非常简单,但是在这个项目里,有许多工作要做。如果把所有的内容都放在这个帖子上,那将会是一篇又长又乏味的帖子。
  相反,我会从一个更高的角度来谈谈我做了什么,并且提供一个功能完整的样例工程。
  抽象出一个Level类。目前,HelloWorldScene类里面把“level”的概念硬编码进去了,比如发射哪种类型的monster,发射频率如何等等。因此,我们的第一步就是要把这些信息提取出来,放到一个Level类里面。这样,在HelloWorldScene里面我们就可以为不同的关卡重用相同的逻辑。
  重用场景。目前,我们每一次转换场景(scene)的时候都是重新创建了一个新的场景类。这里有一个缺点就是效率问题。每一次在场景对象的init方法里加载资源,这会影响游戏frame。
  因为我们是一个简单的游戏,我们需要做的就是,每一个scene创建一个实例,并且提供一个reset方法来清除任何老的状态(比如上一关中的飞盘或者怪物)。
  使用应用程序委托来当做跳板。目前,我们并没有任何全局的状态,比如:我们在哪一个关卡或者当前关卡的设置是什么。每一个场景仅仅是硬编码它需要跳转的下一个场景是谁。
  我们将会修改这些内容,使用App Delegate来存储指向一些全局状态(比如关卡信息)的指针。因为,所有的场景(scene)都可以很方便地得到delegate对象。我们也会在App Delegate类里面放置一些方法,用来实现不同场景之间的切换的集中控制。并且减少场景之间的相互依赖。
  好了,上面就是我所做的主要的重构内容,记住,这只是实现功能的方式之一,如果你有其它更好的组织场景和游戏对象的方法,请在这里分享出来吧!
上面多个关卡的设计是原作者的话。但是对于入门者来说,讲了那么多的理论还是不会。。。
下面我就不怕帖子又长又乏,来彻底实现下多个关卡吧。虽然设计得可能不是太好,不过还是能用了。。。
现在来看下我们的游戏逻辑实现。我们如要重构出Level。那么level类包含什么元素呢,Monster的hp,speed.还有每个关卡需要完成的打击数。我们决定用Level类来完成当前关卡的Monster获取。
那么修改Monster.cs里面的代码,修改如下:
class WeakAndFastMonster : Monster
public static WeakAndFastMonster monster(int _hp,int _minMoveDuration,int _maxMoveDuration)
WeakAndFastMonster monster = new WeakAndFastMonster();
if (monster.initWithFile(@&images/Target&))
monster.hp = _
monster.minMoveDuration = _minMoveD//3;
monster.maxMoveDuration = _maxMoveD//5;
class StrongAndSlowMonster : Monster
public static StrongAndSlowMonster monster(int _hp, int _minMoveDuration, int _maxMoveDuration)
StrongAndSlowMonster monster = new StrongAndSlowMonster();
if (monster.initWithFile(@&images/Target2&))
monster.hp = _//3;
monster.minMoveDuration = _minMoveD//6;
monster.maxMoveDuration = _maxMoveD//12;
我们把速度和hp作为参数了。
那么我们新建一个类添加到Classes。命名为Level.cs。Level类的代码如下:
class Level
int _levelC
public int levelCount { get { return _levelC } }
public int level { get { return _ } }
public Level()
/// &summary&
/// 默认有7个关卡
/// &/summary&
/// &param name=&l&&&/param&
public Level(int l)
if (l &= 0 || l & 7)
_level = 1;
_levelCount = GetLevelCount(_level);
/// &summary&
/// 获取每个关卡要完成的打击数
/// &/summary&
/// &param name=&level&&&/param&
/// &returns&&/returns&
private int GetLevelCount(int level)
switch (level)
return 10;
return 10;
return 35;
case 4: return 50;
case 5: return 55;
case 6: return 60;
case 7: return 65;
return 30;
/// &summary&
/// 跳转到下一关
/// &/summary&
public void NextLevel()
if (_level & 7)
_level = 1;
_levelCount = GetLevelCount(_level);
/// &summary&
/// 有Level来生成怪兽。每个关卡的怪兽都不一样。
/// &/summary&
/// &returns&&/returns&
public Monster GetMonster()
Random random = new Random();
switch (level)
case 1: monster = WeakAndFastMonster.monster(1, 5, 8);
case 2: monster = WeakAndFastMonster.monster(1, 4, 7);
case 3: monster = WeakAndFastMonster.monster(1, 3, 5);
if (random.Next() % 7 == 0)
monster = StrongAndSlowMonster.monster(3, 6, 12);
monster = WeakAndFastMonster.monster(1, 3, 6);
if (random.Next() % 5 == 0)
monster = StrongAndSlowMonster.monster(3, 6, 12);
monster = WeakAndFastMonster.monster(1, 3, 6);
if (random.Next() % 4 == 0)
monster = StrongAndSlowMonster.monster(3, 6, 12);
monster = WeakAndFastMonster.monster(1, 2, 6);
if (random.Next() % 3 == 0)
monster = StrongAndSlowMonster.monster(3, 6, 12);
monster = WeakAndFastMonster.monster(1, 3, 6);
monster = WeakAndFastMonster.monster(1, 3, 7);
接下来要修改GamePlayLayer类。在类中添加两个声明:
Level level = new Level(1);
int life = 40;
如果下载了我前两个教程的工程代码,就发现我在GamePlayLayer里面添加了一个Label作为信息显示,如果您现在的工程没有添加。那么在类再添加一个声明:
CCLabelTTF
下面在init里面添加label的初始化:
string msg = String.Format(&Count:{0},life:{1},Level:{2}&, projectilesDestroyed, life, level.level);
label = CCLabelTTF.labelWithString(msg, &Arial&, 24);
label.position = new CCPoint(label.contentSize.width / 2, screenHeight - label.contentSize.height / 2);
addChild(label);
这里用这个label来显示杀敌数,大炮剩余的生命值,和当前关卡。
然后,修改addTarget方法来构造我们新创建的类的实例,用level来创建Monster。
//CCSprite target = CCSprite.spriteWithFile(@&images/Target&);
Monster target =
//if (random.Next() % 2 == 0)
target = WeakAndFastMonster.monster();
target = StrongAndSlowMonster.monster();
target = level.GetMonster();
接着修改spriteMoveFinished方法。
if (sprite.tag == 1)//target
_targets.Remove(sprite);
string msg = String.Format(&Count:{0},life:{1},Level:{2}&, projectilesDestroyed, life, level.level);
label.setString(msg);
if (life &= 0)
GameOverScene pScene = new GameOverScene(false);
CCDirector.sharedDirector().replaceScene(pScene);
上面修改了个判断,当生命值为0的时候,跳转到GamOverScene。
下面修改胜利判断。找到updates方法中foreach (CCSprite target in targetToDelete)这里。修改如下:
foreach (CCSprite target in targetToDelete)
_targets.Remove(target);
projectilesDestroyed++;
string msg = String.Format(&Count:{0},life:{1},Level:{2}&, projectilesDestroyed, life, level.level);
label.setString(msg);
if (projectilesDestroyed &= level.levelCount)
GameOverScene pScene = new GameOverScene(true);
CCDirector.sharedDirector().replaceScene(pScene);
this.removeChild(target, true);
上面胜利判断的做法很明显了。就不多说了。
到这里,逻辑修改好了,Level的重构就算是完了。
大家应该发现了,上面GameOverScene的调用改了。一会再说怎么修改。
接下来要做的场景重用,场景重用,就要保留原来的场景,但是在WP7的程序里面,全局变量怎么保存呢,我们用PhoneApplicationService来保存。
首先添加两个引用。Microsoft.Phone.dll和System.Windows.dll这两个引用。
场景重用要去掉场景中原来的需要去掉的精灵等元素,我们添加一个方法到GamePlayLayer来完成。
/// &summary&
/// 清除任何老的状态
/// &/summary&
/// &param name=&replay&&是否重玩当前关卡&/param&
public void Reset(bool replay)
foreach (var item in _targets)
this.removeChild(item,true);
foreach (var item in _projectiles)
this.removeChild(item, true);
_targets.Clear();
_projectiles.Clear();
projectilesDestroyed = 0;
nextProjectile =
if (replay)
life = 40;
level.NextLevel();
this.schedule(gameLogic, 1.0f);
this.schedule(updates);
string msg = String.Format(&Count:{0},life:{1},Level:{2}&, projectilesDestroyed, life, level.level);
label.setString(msg);
注意,场景一旦跳转,重回场景后那些schedule事件都无效了。所以要重置。这里设置的逻辑是不重玩就是下一关。在这里,我们主要清除的状态也就是_targets和_projectiles里面的精灵,remove后,把这两个List清空。
那么,我们要保存这个GamePlayScene。
GamePlayScene这个类修改如下:
class GamePlayScene:CCScene
public GamePlayScene()
CCLayerColor colorLayer = CCLayerColor.layerWithColor(new ccColor4B(255, 255, 255, 255));
this.addChild(colorLayer);
GamePlayLayer pLayer = (GamePlayLayer)GamePlayLayer.node();
pLayer.tag = 3;
this.addChild(pLayer);
PhoneApplicationService.Current.State[&PlayScene&] =
为了获取到游戏层,我们为其添加了一个tag元素。并且在构造函数中,把这个类保存到了PhoneApplicationService里面。
接下来修改的是GameOverScene。我们要使这个GameOverScene这个场景作为一个跳板。来实现关卡的跳转。
下面是胜利的界面:
拥有三个选项,重玩,回到菜单,下一关。那么我们就需要一些图片。可以到这里下载:,并且将图片添加到Content工程的images目录下。
PS;图片有些大,懒得整了,将就着用吧。
GameOverScene类修改如下:
class GameOverScene:CCScene
public CCLabelTTF
public GameOverScene()
public GameOverScene(bool isWin)
CCLayerColor colorLayer = CCLayerColor.layerWithColor(new ccColor4B(255, 255, 255, 255));
this.addChild(colorLayer);
CCSize winSize = CCDirector.sharedDirector().getWinSize();
if (isWin)
msg = &YOU WIN&;
msg = &YOU LOSE&;
label = CCLabelTTF.labelWithString(msg, &Arial&, 32);
label.Color = new ccColor3B(0, 0, 0);
label.position = new CCPoint(winSize.width / 2, winSize.height / 2 + 100);
this.addChild(label);
//this.runAction(CCSequence.actions(CCDelayTime.actionWithDuration(3), CCCallFunc.actionWithTarget(this, gameOverDone)));
var itemReplay = CCMenuItemImage.itemFromNormalImage(@&images/reload&, @&images/reload&, this, replay);
var itemMainMenu = CCMenuItemImage.itemFromNormalImage(@&images/mainmenu&, @&images/mainmenu&, this, mainMenu);
var itemNextLevel = CCMenuItemImage.itemFromNormalImage(@&images/nextlevel&, @&images/nextlevel&, this, nextLevel);
if (!isWin)
itemNextLevel.visible =
var menu = CCMenu.menuWithItems(itemReplay, itemMainMenu, itemNextLevel);
menu.alignItemsHorizontally();
menu.position = new CCPoint(winSize.width / 2, winSize.height / 2 - 100);
this.addChild(menu);
void nextLevel(object sender)
GamePlayScene pS
if (PhoneApplicationService.Current.State.ContainsKey(&PlayScene&))
pScene = (GamePlayScene)PhoneApplicationService.Current.State[&PlayScene&];
GamePlayLayer pLayer = (GamePlayLayer)pScene.getChildByTag(3);
pLayer.Reset(false);
pScene = new GamePlayScene();
CCDirector.sharedDirector().replaceScene(pScene);
void mainMenu(object sender)
CCScene pScene = CCScene.node();
pScene.addChild(cocos2dSimpleGame.Classes.MainMenu.node());
CCDirector.sharedDirector().replaceScene(pScene);
void replay(object sender)
GamePlayScene pS
if (PhoneApplicationService.Current.State.ContainsKey(&PlayScene&))
pScene = (GamePlayScene)PhoneApplicationService.Current.State[&PlayScene&];
GamePlayLayer pLayer = (GamePlayLayer)pScene.getChildByTag(3);
pLayer.Reset(true);
pScene = new GamePlayScene();
CCDirector.sharedDirector().replaceScene(pScene);
void gameOverDone()
CCScene pScene = CCScene.node();
pScene.addChild(cocos2dSimpleGame.Classes.MainMenu.node());
CCDirector.sharedDirector().replaceScene(pScene);
上面基本的逻辑估计都能看懂了。就是添加了三个菜单选项。在重玩和下一关中,先取到那个场景,然后取到游戏层,调用Reset,完成重玩或者下一关的设置。然后场景跳转。
  到这里,不管怎么说,我们有一个非常不错的游戏了----一个旋转的炮塔,成千上万的不同类型的敌人,多个关卡,win/lose场景,当然,还有很棒的音效!
本次工程下载:
继续学习:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:278037次
积分:3007
积分:3007
排名:第11818名
原创:62篇
评论:136条
(1)(1)(1)(1)(1)(1)(1)(6)(7)(15)(33)无论是战力太强的boss、考验操(智)作(商)的关卡还是坑爹的副本,总是让我们印象深刻!来说说这些被坑的经历吧!
#游戏最难打的关卡#
一次玩mc,打僵尸.跑酷什么的还算简单的.但我闺蜜把这两个综合起来给我玩……又跑酷又打僵尸.还是困难卧槽.
我可以说1是以前红白机玩的快杰洋枪3吗..其实并不难 而是被移植到电脑上..真的不会玩了!!哪里可以跳!?这要怎么走!?水下面都是蓝色的什么鬼啊!?还有一直跳屏又是什么鬼啊!?不说了,发几张图你们随意感受下
好玩吗?{(-_-)}
?(?ε`)?(?ε`)
几何冲刺各种关卡我的眼睛……我的手……(?Д`)嗷……
当然是sans了,,,,所以说入UT坑的小伙伴千万不要打GEsans你可能会打不下几百遍,,,
想当年打sans死了50多次
玩王牌女特工时,进入水池打开密码总是破解不了。
罪恶都市的开遥控飞机放***那一关卡
又是这一关
闪闪的神秘圣诞礼物\(^o^)/~,我只有一直存档才能通关0.0
王者荣耀的排位最难打
大概是少女前线2-6的BOSS,虽然卡住了几次拔刀攻击,但是一砍,前排T倒下了······可怜我汤哥
王者的时候遇到坑队友
正在加载...
没有更多了,别戳咯~
Copyright&2004 -
All Rights Reserved. 四三九九网络股份有限公司 版权所有《迷人的残酷》全关卡流程简单攻略 迷人的残酷剧情难点攻略_单机游戏_金陵热线
当前位置:&>&&>&&>&正文
《迷人的残酷》全关卡流程简单攻略 迷人的残酷剧情难点攻略
&&《迷人的残酷》自从发售起获得了不少玩家的喜爱,游戏怎么玩?流程怎么做?接下来就为大家带来玩家&crow1989104&分享的全关卡简单攻略,一起来看看吧。&&攻略:&&第一关& 老头翻保险柜的时候在门口偷窥 会发现有个空心弹掉出来 等他走了进去捡起来 然后到放枪的房间Z一下就过了&&第二关&&先到地图右侧最下房间A(可以隔着玻璃看到男人和死神对赌)最左蓝色圈点一下获得监视器密码&&&然后到地图右侧最上房间B 监视器3按一下&&变绿色 回到A房间 按一下监视器 过关 时间不够就先拿密码 F1重启 一样有效&&第三关&&到房间B门口偷窥等剧情&&杀手输入密码的时候按住空格获得密码&&&房间B左边的房间往上 探索 捡到发条钥匙后激活本层地图中下时钟 换成存档点 快进到晚上8点 往右捡到骨钥匙&&&来到死去的魔女房间 用钥匙开箱子 获得配方 下午2点左右跟踪偷窥魔女可以进到画室暗门 准备完以上F1重启&&往左拿饥饿符咒&返回对着时钟右边的鱼缸用符咒 右转往上第二个门进去 有个大鱼缸 继续用符咒 直接闯到画室暗门2楼 激光照射魔女的时候激活左边机关&&第四关&&左拐往上偷窥触发剧情 一路跟着幽灵&&跟拦路幽灵对话就让开了 往上就是时钟房 到处探索一下找到激活时钟的钥匙 改存档点后F1重启&&起来往左从点唱机拿出胶片&返回往右到更衣室 进入右上房间把胶片放进点唱机 出来在左边门口等着 杀手出来后进去舞台 从钢琴上拿红钥匙 等杀手进去关点唱机的时候用钥匙把他锁在里面&&第五关&&地图右侧中房间剧情后可以拿打火机&拿到后回到时钟房 点蜡烛 跟鬼对话 去右上角移开书架 激活后面的机关 看到闸门变红&&过关要求两边电闸一起拉 等时间到八点多 NPC会去拉右上房电闸 我们在左上房间不断拉就可以了
(责任编辑:jl514)
金陵热线热点频道:
免责声明:本(栏目、频道等)内容由SP提供。欢迎大家对侵犯版权等不合法和不健康的内容进行监督和举报。
[增值电信业务经营许可证A2.B1.B2-]&[文网文[号]&[国新网许可证:]&
版权所有:中国电信股份有限公司南京分公司&&技术支持:江苏知能邮电通信技术有限公司当前位置: &
> 能量魔方苹果版下载
能量魔方苹果版(手机休闲娱乐游戏) v2.0 免费版
非常奇幻的一款iOS手机休闲娱乐游戏推荐给你,让你玩过能量魔方苹果版菜知道什么才是真正的科学奇幻,并且配合极富美感的声光演出,打造完美的小游戏,76个简单到困难关卡,享受极致冲击,能量魔方苹果版期待您的玩耍。
能量魔方苹果版特色:
76个由简到难丰富多彩的迷你关卡
2个和朋友一决高下的无限关卡
5个享受华丽声光演出的音乐关卡
能量魔方苹果版下载
高速下载器通道
其他下载地址
下载不了?
72.6 MB | 简体中文 | 0分
绝对令人上瘾,3年拥有无数玩家在升空求生记iOS版(AmigoPancho)中玩...
109 MB | 简体中文 | 0分
动漫是我们在我们心中永远有一个位置是不?暴走忍者iPhone版是一款...
77.5 MB | 简体中文 | 0分
这款越野旅游巴士司机苹果版是一款手机模拟经营游戏这款游戏让您驾...
478 MB | 简体中文 | 0分
经典的魂斗罗,陪伴小编躲过许多个日夜,而这个腾讯魂斗罗英雄归来...
下载排行榜5星简单关卡5-5搭配方法?花语学园5-5 - noYes游戏王国
欢迎来到noYes游戏王国
5星简单关卡5-5搭配方法?花语学园5-5
发表时间: 19:15:02浏览:23次
大小:1.45MB更新:分类:美化
在上一篇文章中,小编为您详细介绍了关于《》相关知识。 本篇中小编将再为您讲解标题5星简单关卡5-5搭配方法?花语学园5-5。
之前本站也有不少关于类似内容介绍:1.2.3.
【普通级】成熟保暖
发型:夜色波浪(商店)
长袍:琴键裙装(困难④-④)
外套:织梦外套(困难④-②)
鞋子:初罗勒鞋子(商店)
头饰:原色草帽(商店)、秋红(简单④-⑦)
耳环:玛索索(商店)
项链:初月光曲(挖宝兑换)、初玫瑰之瓣(困难③-③)
手饰:循环旋律(商店)、毛绒手套(商店)
配饰:深蓝制服腰带(商店)、颠倒王冠(商店)
道具:灵玫瑰之赐(培育)、枯骨天使(商店)、就是小公举(挖宝兑换)
面饰:知性(简单③-⑤)、晚安吻(挖宝兑换)
袜子:深蓝制服袜子(商店)
关卡掉落:普兰(⑤星掉落)、素纹
编后语:关于《5星简单关卡5-5搭配方法?花语学园5-5》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。
下一篇内容是有关《》,感兴趣的同学可以点击进去看看。
【普通级】可爱华丽
发型:翩然美人(制作)
外套:初蔷薇礼服(制作)
上衣:舞会抹胸礼服(困难⑥-⑤)
下装:浅蓝(培育)
鞋子:藤桎(制作)
头饰:蝶迹(制作)、初蔷薇礼帽(制作)
耳环:灵玫瑰之露(培育)
项链:月光石(制作)、灵玫瑰之瓣(培育)
手饰:光叶白兰(制作)、灵玫瑰之荆(培育)
配饰:花熊围裙(困难⑤-③)、针织暖腿袜引(商店)
道具:骑士团武器(商店)、夏日祭金鱼(困难②-①
● ● ● ● ● ● ● ● ● ● ● ● ● ●
类型:射击
501万+次下载
类型:益智
199万+次下载
类型:益智
176万+次下载
类型:休闲
131万+次下载
类型:休闲
106万+次下载
类型:休闲
102万+次下载
类型:角色
101万+次下载
类型:休闲
101万+次下载
类型:休闲
101万+次下载
类型:棋牌
101万+次下载

我要回帖

更多关于 亚马逊关联因素 的文章

 

随机推荐