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

tjtmp

Problema com projecto de flash

11 mensagens neste tópico

Olá comunidade, em primeiro fecito-vos por este magnifico forum muito util mesmo.

Estou a fazer um jogo em Flash 8, que é para entregar a um professor e tenho alguns problemas no código.

Podem ajudar-me?

Está aqui http://www.sendspace.com/file/8qmrex

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Convem expores as tuas dúvidas mais pormenorizadamente, e não esperar que te façam o trabalho :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continuas sem ser muito explicito :D

Podes colar aqui o bloco de codigo que é suposto fazer mudar de nivel?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)};
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Amigo lugh obrigado pela dica, mas dá uma confusão quando meto esse código no final!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Testei e funcionou.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que já percebi, obrigado amigo lugh. Mas dá-me outro problema :rant_01:, 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?

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora