这是我正在制作的游戏。当英雄走在组成地球山的第1行,第1层的地砖上时,它会将所有相邻的地砖变成不同类型的地形。
pos是玩家的位置。
需要Level.set来更改图块。
需要Gamescene.update来显示图块。
Dungeon.observe需要停止更改。
输入是指玩家进入图块以更改图块外观。
离开是指播放器离开磁贴时,并更改磁贴外观。
所有实际工作都在下面的代码中进行。
以下是我所拥有的:
public static void enter( int pos ) {
switch(Dungeon.level.map[pos]){
case Terrain.MT_EARTH_R1T1:
Level.set(pos, Terrain.MT_EARTH_SHADOW_R1T1);
Level.set(pos+1, Terrain.MT_EARTH_SHADOW_R1T2);
Level.set(pos+2, Terrain.MT_EARTH_SHADOW_R1T3);
Level.set(pos+3, Terrain.MT_EARTH_SHADOW_R1T4);
Level.set(pos+4, Terrain.MT_EARTH_SHADOW_R1T5);
Level.set(pos+49, Terrain.MT_EARTH_SHADOW_R2T1);
Level.set(pos+50, Terrain.MT_EARTH_SHADOW_R2T2);
Level.set(pos+51, Terrain.MT_EARTH_SHADOW_R2T3);
Level.set(pos+52, Terrain.MT_EARTH_SHADOW_R2T4);
Level.set(pos+53, Terrain.MT_EARTH_SHADOW_R2T5);
Level.set(pos+54, Terrain.MT_EARTH_SHADOW_R2T6);
Level.set(pos+55, Terrain.MT_EARTH_SHADOW_R2T7);
Level.set(pos+99, Terrain.MT_EARTH_SHADOW_R3T1);
Level.set(pos+100, Terrain.MT_EARTH_SHADOW_R3T2);
Level.set(pos+101, Terrain.MT_EARTH_SHADOW_R3T3);
Level.set(pos+102, Terrain.MT_EARTH_SHADOW_R3T4);
Level.set(pos+103, Terrain.MT_EARTH_SHADOW_R3T5);
Level.set(pos+104, Terrain.MT_EARTH_SHADOW_R3T6);
Level.set(pos+105, Terrain.MT_EARTH_SHADOW_R3T7);
Level.set(pos+148, Terrain.MT_EARTH_SHADOW_R4T1);
Level.set(pos+149, Terrain.MT_EARTH_SHADOW_R4T2);
Level.set(pos+150, Terrain.MT_EARTH_SHADOW_R4T3);
Level.set(pos+151, Terrain.MT_EARTH_SHADOW_R4T4);
Level.set(pos+152, Terrain.MT_EARTH_SHADOW_R4T5);
Level.set(pos+153, Terrain.MT_EARTH_SHADOW_R4T6);
Level.set(pos+154, Terrain.MT_EARTH_SHADOW_R4T7);
Level.set(pos+155, Terrain.MT_EARTH_SHADOW_R4T8);
Level.set(pos+156, Terrain.MT_EARTH_SHADOW_R4T9);
GameScene.updateMap( pos );
GameScene.updateMap( pos+1 );
GameScene.updateMap( pos+2 );
GameScene.updateMap( pos+3 );
GameScene.updateMap( pos+4 );
GameScene.updateMap( pos+49 );
GameScene.updateMap( pos+50 );
GameScene.updateMap( pos+51 );
GameScene.updateMap( pos+52 );
GameScene.updateMap( pos+53 );
GameScene.updateMap( pos+54 );
GameScene.updateMap( pos+55 );
GameScene.updateMap( pos+99 );
GameScene.updateMap( pos+100 );
GameScene.updateMap( pos+101 );
GameScene.updateMap( pos+102 );
GameScene.updateMap( pos+103 );
GameScene.updateMap( pos+104 );
GameScene.updateMap( pos+105 );
GameScene.updateMap( pos+149 );
GameScene.updateMap( pos+150 );
GameScene.updateMap( pos+151 );
GameScene.updateMap( pos+152 );
GameScene.updateMap( pos+153 );
GameScene.updateMap( pos+154 );
GameScene.updateMap( pos+155 );
Dungeon.observe();
break;
}
public static void leave( int pos ) {
switch(Dungeon.level.map[pos]) {
case Terrain.MT_EARTH_SHADOW_R1T1:
Level.set(pos, Terrain.MT_EARTH_R1T1);
Level.set(pos+1, Terrain.MT_EARTH_R1T2);
Level.set(pos+2, Terrain.MT_EARTH_R1T3);
Level.set(pos+3, Terrain.MT_EARTH_R1T4);
Level.set(pos+4, Terrain.MT_EARTH_R1T5);
Level.set(pos+49, Terrain.MT_EARTH_R2T1);
Level.set(pos+50, Terrain.MT_EARTH_R2T2);
Level.set(pos+51, Terrain.MT_EARTH_R2T3);
Level.set(pos+52, Terrain.MT_EARTH_R2T4);
Level.set(pos+53, Terrain.MT_EARTH_R2T5);
Level.set(pos+54, Terrain.MT_EARTH_R2T6);
Level.set(pos+55, Terrain.MT_EARTH_R2T7);
Level.set(pos+99, Terrain.MT_EARTH_R3T1);
Level.set(pos+100, Terrain.MT_EARTH_R3T2);
Level.set(pos+101, Terrain.MT_EARTH_R3T3);
Level.set(pos+102, Terrain.MT_EARTH_R3T4);
Level.set(pos+103, Terrain.MT_EARTH_R3T5);
Level.set(pos+104, Terrain.MT_EARTH_R3T6);
Level.set(pos+105, Terrain.MT_EARTH_R3T7);
Level.set(pos+148, Terrain.MT_EARTH_R4T1);
Level.set(pos+149, Terrain.MT_EARTH_R4T2);
Level.set(pos+150, Terrain.MT_EARTH_R4T3);
Level.set(pos+151, Terrain.MT_EARTH_R4T4);
Level.set(pos+152, Terrain.MT_EARTH_R4T5);
Level.set(pos+153, Terrain.MT_EARTH_R4T6);
Level.set(pos+154, Terrain.MT_EARTH_R4T7);
Level.set(pos+155, Terrain.MT_EARTH_R4T8);
Level.set(pos+156, Terrain.MT_EARTH_R4T9);
GameScene.updateMap( pos);
GameScene.updateMap( pos+1 );
GameScene.updateMap( pos+2 );
GameScene.updateMap( pos+3 );
GameScene.updateMap( pos+4 );
GameScene.updateMap( pos+49 );
GameScene.updateMap( pos+50 );
GameScene.updateMap( pos+51 );
GameScene.updateMap( pos+52 );
GameScene.updateMap( pos+53 );
GameScene.updateMap( pos+54 );
GameScene.updateMap( pos+55 );
GameScene.updateMap( pos+99 );
GameScene.updateMap( pos+100 );
GameScene.updateMap( pos+101 );
GameScene.updateMap( pos+102 );
GameScene.updateMap( pos+103 );
GameScene.updateMap( pos+104 );
GameScene.updateMap( pos+105 );
GameScene.updateMap( pos+149 );
GameScene.updateMap( pos+150 );
GameScene.updateMap( pos+151 );
GameScene.updateMap( pos+152 );
GameScene.updateMap( pos+153 );
GameScene.updateMap( pos+154 );
GameScene.updateMap( pos+155 );
Dungeon.observe();
break;
} }
我希望以这样的方式完成这项工作:当玩家移动时,MT_EARTH地形占据的所有位置都会变成MT_EARTH_SHADOW地形。
我可以复制并粘贴所有这些线条并更改每个位置的位置修改器(对于所有四行的每个图块),但这似乎很乏味且不必要。
如何缩短它并使其适用于所有必需的瓷砖?
答案 0 :(得分:1)
我建议更改方法,而不是为每个图块指定一个terran类型,其集合表示地形类型,并在这些集合之间移动这些类型。