Ir para conteúdo
Fórum Script Brasil
  • 0

Arkanoid


hahahaag

Pergunta

Boa tarde galera... estou fazendo o joguinho clássico arkanoid... só que estou com um problema.

Estou fazendo ele totalmente por código... mas estou com um problema.

Criei um quadrado (que é pra ser os blocos do jogo, onde a bolinha vai bater e quebra-los), e o nome desse MC é desenho. Bom, para criar vários, eu fiz um FOR, segue:

for (i=0; i<=5; i++) {
   var treco = "copia"+i;
   this[treco] = _root.createEmptyMovieClip("desenho"+i,  _root.getNextHighestDepth());
   this[treco] = desenho.duplicateMovieClip ("desenho"+i, _root.getNextHighestDepth(), {_x:51*i,_y:0});  
}
Tudo tranquilo até ai. Agora, não consigo fazer com que a bolinha os torne invisível. Não sei onde está o erro, segue o FOR que fiz:
for (i = 0; i <= 5; i++){
   var nome_bar = "copia"+i;
   if (ball.hitTest (this[nome_bar])){
     this[nome_bar]._visible = false;
      ymov *= -1;
     trace (this[nome_bar]);
   }
}

O estranho é que nem o TRACE funciona, não sai nada na Output!

Alguém sabe resolver isso??

Muito Obrigado

Sandro Haag

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

é apenas o primeiro objeto q se torna invisivel??

se for.....tenta criar um loop, pra q ele faca a verificacao em todos os objetos....

porque apenas o for nesse caso, não ta danu conta........

falow!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte... segue o código do joguinho completo... você irá entender...e se puder me ajudar... agradeço muito mesmo...

stop();
var ymov:Number = 3;
var xmov:Number = 1;
//chamar os objetos pro palco
_root.onLoad = function(){
	//barras
	larg = 50; alt = 15; cor = 0x3399CC;
	_root.createEmptyMovieClip("desenho", 100);
	with(_root.desenho){
  beginFill(cor, 100)
  	moveTo(0, 0);
  	lineTo(larg, 0);
  	lineTo(larg,alt);
  	lineTo(0, alt);
  	endFill()
	}
	barra._visible = false;
	//campos
	this.createTextField("life_txt", 0, 400, 100, 200, 100); 
	life_txt.text = "Lifes:"; 

	formatacao = new TextFormat(); 
	formatacao.size = 15; 
	formatacao.font = "verdana"; 
	life_txt.setTextFormat (formatacao);

	this.createTextField("lifes", 1, 440, 100, 200, 100); 
	lifes.text = "3";
	lifes.setTextFormat (formatacao);
	//paddle center
	_root.createEmptyMovieClip ("paddlec", 2);
	paddlec.attachMovie ("paddlec","paddlec1",3);
	paddlec._x = 225;
	paddlec._y = 380;
	//paddle left
	_root.createEmptyMovieClip ("paddlel", 4);
	paddlel.attachMovie ("paddlel","paddlel1",5);
	paddlel._x = 197;
	paddlel._y = 380;
	//paddle right
	_root.createEmptyMovieClip ("paddler", 6);
	paddler.attachMovie ("paddler","paddler1",7);
	paddler._x = 253;
	paddler._y = 380;
	//ball
	_root.createEmptyMovieClip ("ball", 8);
	ball.attachMovie ("ball","ball1",9);
	ball._x = 100;
	ball._y = 70;
	//barra contra
	_root.createEmptyMovieClip ("barraoff", 10);
	barraoff.attachMovie ("barraoff","barraoff2",11);
	barraoff._x = 400;
	barraoff._y = 200;

	//barra1
	for (i=0; i<=5; i++) {
  var treco = "copia"+i;
  this[treco] = _root.createEmptyMovieClip("desenho"+i, _root.getNextHighestDepth());
  this[treco] = desenho.duplicateMovieClip ("desenho"+i, _root.getNextHighestDepth(), {_x:51*i,_y:0});  
	}

_root.onEnterFrame = function(){
	//movement ball
	ball._x += xmov;
	ball._y += ymov;
	//movement barraoff
	barraoff._x += 1.2;
	if (barraoff._x >= 540){
  barraoff._x = 0;
	}
	//detect walls
	if (ball._x > 550){
  ball._x = 550;
  xmov *= -1;
	}else if (ball._x < 0){
  ball._x = 0;
  xmov *= -1;
  gotoAndStop (2);
	}
	if (ball._y > 400){
  ymov = 1;
  xmov = 0;

  if (ball._y > 580){
  	ball._y = 100;
  	ymov = 3;
  	xmov = 1;
  	if (lifes.text == 3){
    lifes.text = 2;
    lifes.setTextFormat(formatacao);
  	}else if (lifes.text == 2){
    lifes.text = 1;
    lifes.setTextFormat(formatacao);
  	}else if (lifes.text == 1){
    lifes.text = 0;
    lifes.setTextFormat(formatacao);
    delete _root.onEnterFrame;
  	}
  }
	}else if (ball._y < 0){
  ball._y = 0;
  ymov *= -1;
	}
	//detect barraoff
	if (ball.hitTest (barraoff)){
  ymov *= -1;
	}
	//detect paddle
	if (ball.hitTest (paddlec)){
  ymov *= -1;
	} else if (ball.hitTest (paddlel)){
  ymov *= -1;
  xmov = xmov - 1.5;
	} else if (ball.hitTest (paddler)){
  ymov *= -1;
  xmov = xmov + 1.5;
	}
	//AQUI TÁ O PROBLEMA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	copia1._visible = false;
	for (i = 0; i <= 5; i++){
  var nome_bar = "copia"+i;
  if (ball.hitTest (this[nome_bar])){
  	this[nome_bar]._visible = false;
  	ymov *= -1;
  	trace (this[nome_bar]);
  }
	}
        
	//paddle move
	if (Key.isDown (Key.LEFT)){
  paddlec._x -= 2;
  paddler._x -= 2;
  paddlel._x -= 2;
	}else if (Key.isDown (Key.RIGHT)){
  paddlec._x += 2;
  paddler._x += 2;
  paddlel._x += 2;
	}
	if (paddler._x >=540){
  paddler._x = 540;
  paddlec._x = 512;
  paddlel._x = 486;
	}else if (paddlel._x <= 12){
  paddlel._x = 12;
  paddlec._x = 40;
  paddler._x = 68;
  
	}
}

O problema que está acontecendo é que a bola ultrapassa os blocos... eles estão sendo vistos como se não tivessem ação, como se eles só foram só criados!

É muito estranho o erro que está dando no FOR!

Muito Obrigado pela atenção cara...

Vlwww

Sandro Haag

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...