Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

tjtmp

Problema com projecto de flash

Recommended Posts

tjtmp

Essa não é a minha intenção de todo, apenas gostaria que me resolvessem o problema já que os meus professores não conseguem resolve-lo. Mas eu explico melhor qual é o problema.

O meu projecto é um jogo, para ser mais explicito é o jogo Pac-man

Quando ponho a correr, o projecto funciona normalmente mas quando é para mudar de nível ai está o problema.

Poderiam ajudar-me?

Share this post


Link to post
Share on other sites
tjtmp

Desculpa não tar a ser muito explicito. O código está aqui:

mapa = [
"11111111111111111111",
"10000010000010000002",
"10001011111011100101",
"10001000000000001101",
"11110001111001111001",
"10111011000000000001",
"10100000011001110001",
"10111111011011110001",
"10000000011000010001",
"10111111011011010001",
"10100000011011010001",
"10100110011000010001",
"11111111111111111111"]

// função que coloca todos os objectos no palco e controla o tempo
iniciar = function() {
tempo=10000; //tempo total do nivel
//px = 0; // posição X inicial do pacman
//py = 0; // posição Y inicial do pacman
direcao = 0;
novadirecao = 0;
animar = false; 
this.createEmptyMovieClip("cenario", this.getNextHighestDepth());
for (i=0; i<mapa.length; i++) // ciclo para percorrer toda a linha array
  for (j=0; j<mapa[i].length; j++) // ciclo para percorrer todo a coluna array
   switch(mapa[i].charAt(j)) {
   case '0':
   case '2':
   	// coloca os objectos no palco
    cenario.attachMovie("chao", "c"+i+"_"+j, cenario.getNextHighestDepth(), {_x:30*j, _y:30*i});
    break;
   case '1':
    cenario.attachMovie("parede", "p"+i+"_"+j, cenario.getNextHighestDepth(), {_x:30*j, _y:30*i});
    break;
   }
attachMovie("pacman", "pacman", this.getNextHighestDepth(), {_x:30*px, _y:30*py});
Key.addListener(ouvinte);
//função do tempo
contador=function(){
 //vai diminuindo
 tempo--;
 //caso chegue a 0, pára
 if (tempo<1){
	 cenario.removeMovieClip();
		pacman.removeMovieClip();
		Key.removeListener(ouvinte);
	tempo=0;
	 stop();
 }};

}

//função para finalizar o nivel
//finalizar = function() {
//cenario.removeMovieClip();
//pacman.removeMovieClip();
//Key.removeListener(ouvinte);
//}

// criação de um novo objecto
ouvinte = new Object();
// função para quando é primida uma tecla
ouvinte.onKeyDown = function()
{
switch (Key.getCode()) {
case Key.UP: novadirecao = 1; break;
case Key.DOWN: novadirecao = 2; break;
case Key.RIGHT: novadirecao = 3; break; 
case Key.LEFT: novadirecao = 4; break; 
}
}
// função para quando não está a ser premida qualquer tecla
ouvinte.onKeyUp = function()
{ novadirecao = 0; }

// função para contolo do jogo
onEnterFrame = function() {
//chama a função que diminui o tempo de 10 em 10 milisegundos
intervaloTempo=setInterval(contador,1000);
if (!animar && novadirecao>0) {
  if (novadirecao==1 && mapa[py-1].charAt(px)==1 ||
   novadirecao==2 && mapa[py+1].charAt(px)==1 ||
   novadirecao==3 && mapa[py].charAt(px+1)==1 ||
   novadirecao==4 && mapa[py].charAt(px-1)==1) return;
  animar=true;
  direcao = novadirecao;
}
if (animar) {
  switch(direcao) {
  case 1:
   pacman._xscale = 100;
   pacman._rotation = -90;
   cenario.attachMovie("chao_vazio", "c"+py+px, cenario.getNextHighestDepth(), {_x:30*px, _y:30*py});
   pacman._y-=3;
   if (pacman._y<=(py-1)*30) {
    py--;
    pacman._y = py*30;
    animar = false;
   }
   break;
  case 2:
   pacman._xscale = 100;
   pacman._rotation = 90;
   cenario.attachMovie("chao_vazio", "c"+py+px, cenario.getNextHighestDepth(), {_x:30*px, _y:30*py});
   pacman._y+=3;
   if (pacman._y>=(py+1)*30) {
    py++;
    pacman._y = py*30;30
    animar = false;
   }
   break;
  case 3: 
   pacman._xscale = 100;   
   pacman._rotation = 0;
   cenario.attachMovie("chao_vazio", "c"+py+px, cenario.getNextHighestDepth(), {_x:30*px, _y:30*py});
   pacman._x+=3;
   if (pacman._x>=(px+1)*30) {
    px++;
    pacman._x = px*30;
    animar = false;
   }
   break;
  case 4: 
   //pacman._rotation = 180;
   pacman._xscale = -100;
   cenario.attachMovie("chao_vazio", "c"+py+px, cenario.getNextHighestDepth(), {_x:30*px, _y:30*py});
   pacman._x-=3;
   if (pacman._x<=(px-1)*30) {
    px--;
    pacman._x = px*30;
    animar = false;
   }
   break; 
  } 
} 
if (mapa[py].charAt(px)=='2'){
 pacman.removeMovieClip();//fim de nível
  gotoAndStop("Nivel_03",2)};
}

Share this post


Link to post
Share on other sites
lugh

Testei e funcionou.

Tu precisas que o ponteiro da timeline salte para a frame 2 que é onde está a chamada à função iniciar.

Share this post


Link to post
Share on other sites
tjtmp

Acho que já percebi, obrigado amigo lugh. Mas dá-me outro problema 😡 , quando corro o projecto ele não começa a jogar, normalmente, é preciso clickar no enter para entrar a cena seguinte.

Será que há algum comando para que o jogo corra normalmente?

🤔

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.