Quanto tempo você consegue ficar em um quarto? Quanto tempo você vai olhar do mesmo? Sim, precisamos de mais salas para explorar. Isso significa que uma maneira de mudar o mapa, criar nova sala de telhas e colocar o herói na posição correta.
Para fazer dois quartos, nós declaramos dois mapas:
CÓDIGO
myMap1 = [
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 2],
[1, 1, 1, 1, 1, 1, 1, 1]
];
myMap2 = [
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[3, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1]
];
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 2],
[1, 1, 1, 1, 1, 1, 1, 1]
];
myMap2 = [
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[3, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1]
];
In The Game objeto também definir o número de mapas usados atualmente:
CÓDIGO
game = (tileW: 30, tileH: 30, currentMap: 1)
Então, nós começamos a explorar na myMap1. Para chamar a função buildMap, calculamos o mapa necessários com _root
CÓDIGO
[ "myMap" + game.currentMap] quando currentMap é 1, vamos obter myMap1:
buildMap (_root [ "myMap" + game.currentMap])
Em seguida temos de novo objeto para representar as portas:
game.Doors = função newMap (, newcharx, newchary) (
this.newMap = newMap;
this.newcharx = newcharx;
newchary this.newchary =;
);
game.Doors.prototype.walkable = true;
game.Doors.prototype.frame = 3;
game.Doors.prototype.door = true;
game.Tile2 = function () ();
game.Tile2.prototype = game.Doors (2, 1, 4);
game.Tile3 = function () ();
game.Tile3.prototype = game.Doors (1, 6, 4);
buildMap (_root [ "myMap" + game.currentMap])
Em seguida temos de novo objeto para representar as portas:
game.Doors = função newMap (, newcharx, newchary) (
this.newMap = newMap;
this.newcharx = newcharx;
newchary this.newchary =;
);
game.Doors.prototype.walkable = true;
game.Doors.prototype.frame = 3;
game.Doors.prototype.door = true;
game.Tile2 = function () ();
game.Tile2.prototype = game.Doors (2, 1, 4);
game.Tile3 = function () ();
game.Tile3.prototype = game.Doors (1, 6, 4);
Como você provavelmente já adivinhou, azulejo porta pode ser pisado, ele mostra o quadro 3 e tem propriedade nova "porta" definido para "true". Usaremos essa propriedade para determinar se o herói está de pé na porta.
As portas de usar algo chamado de "herança", que pode soar horrível, mas é realmente uma coisa boa. As portas "todos os objetos são criados usando" Doors "modelo e todas as peças contêm portas herdar todas as propriedades da" porta "do objeto, por exemplo, todos eles são walkable e show frame 3.
Cada porta que crate deve ter as seguintes informações: qual o número de mapa para mostrar que vem, o que é a nova posição X e Y do nosso caráter. Se você não mover o personagem para a nova posição, em seguida, telhas será alterado, mas permanece herói no mesmo local e isto não parecer correta. Palavra de cautela sobre as novas coordenadas para o herói. Você deve evitar colocar o herói no mapa ao lado também sobre o azulejo porta, como se ele apenas entrou em cena a partir da parede. Se a nova posição x / y é também porta, logo em seguida, à medida que o jogador, este ao lado, no novo mapa é detectado e herói é enviado de volta. Lembre-se, coloque o seu herói ao lado da porta em azulejo novo mapa!
Quando o objeto de nova porta é feita, passamos por 3 variáveis a ele: newmap, newcharx, newchary. E objeto de nova porta terá os valores ligados às suas propriedades. Assim, quando o número 2 está definida na matriz do mapa, nós sabemos que vai ser feita a partir de Tile2 modelo e desde Tile2 objetos são criados a partir de modelos de portas, ele terá todas as propriedades do objeto Doors. Objeto Tile2 passa newmap = 2 para as portas modelo, assim que todos os objetos Tile2 enviará ao herói map2. Você pode ter mais de 1 porta similar em The Game. Você pode querer colocar portas tipo Tile2 em vários mapas, e todos eles enviam para o herói map2.
Mais ações
Na função moveChar adicionar este código ao final, pouco antes de retornar verdadeiro:
CÓDIGO
if (game [ "t_" + ob.ytile +"_"+ ob.xtile]. porta e ob == _root.char) (
changeMap (OB);
)
changeMap (OB);
)
Aqui depois de ter movido o char (ou algum outro objeto em movimento) que irá verificar se o char tile está de pé agora, é porta. Como nós não queremos mapa a mudar quando uma bala ou inimigo passos no azulejo porta, nós também vamos verificar se o objeto atual é o herói. Usaremos a função changeMap para a mudança do mapa:
CÓDIGO
changeMap function (ob) (
var name = "t_" + ob.ytile ob.xtile +"_"+;
jogo game.currentMap = [nome]. newMap;
jogo ob.ytile = [nome]. newchary;
jogo ob.xtile = [nome]. newcharx;
ob.frame = ob.clip._currentframe;
buildMap (_root [ "myMap" + game.currentMap]);
)
var name = "t_" + ob.ytile ob.xtile +"_"+;
jogo game.currentMap = [nome]. newMap;
jogo ob.ytile = [nome]. newchary;
jogo ob.xtile = [nome]. newcharx;
ob.frame = ob.clip._currentframe;
buildMap (_root [ "myMap" + game.currentMap]);
)
Este código deve ser bastante óbvio, obter os valores do azulejo porta e atualizar as variáveis de currentMap, ytile e xtile. O ob.frame novo imóvel vai salvar direção atual do herói. Sem este truque, o nosso herói começaria em frame1 toda vez que ele entra no novo mapa. Você também precisa adicionar linha na função buildMap depois de ter colocado o clipe de char:
CÓDIGO
char.frame (char.clip.gotoAndStop);
É isso, fazer alguns mapas e brincar com as portas. 
Help














