O "PORTAL TIME-SPACE"

Muitos dos residentes em ALPHACity trabalham para a "Time-Space Inc." . Essa empresa criou o "Portal Time-Space" que permite viagens através do tempo e do espaço. (É claro que isso é uma brincadeira...)

O Portal suporta várias atividades de História (você pode ver, por exemplo, uma viagem ao ano 3.000 AC, em ALPHACity). Indo para um lugar no tempo, os garotos precisam "conversar" com os habitantes do local e vão aprender coisas da época. A empresa só manda outro Portal, para o retorno ao presente, quando a missão acaba.

O Portal é usado também para viagens a outros planetas. Um desses, muito visitado, é o planeta "Pink", onde existem os valiosos "feijões dourados" para serem apanhados. Um problema, é que os habitantes do planeta são monstrinhos (os Ximbús - conhecidos nos Estados Unidos também como Echoos) que gostam de amolar os visitantes. Enfim: essas viagens no espaço são uma parte "não-educacional" de ALPHACity. É pura diversão.

O Portal é um sprite que tem animação. Na realidade temos três sprites, sendo duas "sombras", uma para fazer o "transporte".

Para fazer a animação, as linhas de código são:

  ts.setAnimationLoop(0,3);	 
  ts.setAnimationSpeed(4); 					 
  ts.setAnimation(0);	 
  ts.setAnimationRepeat(-1);

Nessa lição vamos mostrar o código do "lote" que tem o Portal. Na realidade a demo é completa e você vai ver, nas próximas lições, como se cria outros truques como, por exemplo, o avatar atirar com sua pistola.


<html>
<head>
<script language="Javascript" src="gamelib_core.js"></script> 
<script language="Javascript"  src="gamelib_sprites.js"></script>
<script language="Javascript" src="gamelib_keyboard.js"></script>
<script language="Javascript">

 function init(){

  Sp_linuxcompatible=true;

  Gl_preloader("floorW05N07.gif"); 
  Gl_preloader("transit.gif"); 
  Gl_preloader("avat1.gif"); 
  Gl_preloader("timespace.gif"); 
  Gl_preloader("timespaceS.gif"); 
  Gl_preloader("timespaceS0.gif"); 

  entryt = new Gl_cookie("entt");

   upkey=Kb_trapkey("UP");				 
   downkey=Kb_trapkey("DOWN");			  
   rightkey=Kb_trapkey("RIGHT");	
   leftkey=Kb_trapkey("LEFT");
 
   av=new Sp_Sprite();	 
   av.setImage("avat1.gif",32,32,4,2);  
   av.setXlimits(5,610);
   av.setYlimits(5,385);
   if(entryt.value=="E"){	  
    av.moveTo( 550,165);	 
    av.setFrame(0);
    entryt.setvalue("G");
    }
    else if(entryt.value=="W"){	 
     av.moveTo(30,175);	 
     av.setFrame(1);
     entryt.setvalue("G");
   }
   else{
    av.moveTo( 300,170);	 
    av.setFrame(3);
   }			 
   av.setFrameByDirection(90,90,1,180,180,3,270,270,0,0,0,2);
   av.setAnimation(0);
   av.setZ(10);
   av.collides=true;
   av.useHitEvents(true);
   av.setAnimationSpeed(3);
   av.switchOn();

  floor=new Sp_Sprite();			 
  floor.setImage("floorW05N07.gif",614,390,1,1); 
  floor.setXlimits( 0,616);	 
  floor.setYlimits( 0,390);
  floor.setFrame(0);	 
  floor.moveTo(0 , 0 );				 
  floor.setZ(5);  
  floor.switchOn();				 

  transitW=new Sp_Sprite();			 
  transitW.setImage("transit.gif",20,20,1,1); 
  transitW.setXlimits( 0,614);	 
  transitW.setYlimits( 0,390);
  transitW.setFrame(0);	 
  transitW.moveTo(5 , 180 );		 
  transitW.setZ(12);  
  transitW.makeHard();
  transitW.switchOn();
  
  ts=new Sp_Sprite();	 
  ts.setImage("timespace.gif",114,110,1,4);  
  ts.setXlimits(0,614);	 
  ts.setYlimits(5,280);	 
  ts.moveTo(345, 80);	 
  ts.setFrame(0);		 
  ts.setAnimationLoop(0,3);	 
  ts.setAnimationSpeed(4); 					 
  ts.setAnimation(0);	 
  ts.setZ(6);
  ts.setAnimationRepeat(-1);	 
  ts.collides=true;
  ts.switchOn();
   
  tsS=new Sp_Sprite();			 
  tsS.setImage("timespaceS.gif",62,14,1,1); 
  tsS.setXlimits( 0,614);	 
  tsS.setYlimits( 0,390);
  tsS.setFrame(0);	 
  tsS.moveTo( 385 ,  150 );	
  tsS.setZ(0);  
  tsS.makeHard();
  tsS.switchOn();
   

  tsS0=new Sp_Sprite();			 
  tsS0.setImage("timespaceS0.gif",95,79,1,1); 
  tsS0.setXlimits( 0,614);	 
  tsS0.setYlimits( 0,390);
  tsS0.setFrame(0);	 
  tsS0.moveTo( 355 ,  80 );
  tsS0.setZ(0);  
  tsS0.makeHard();
  tsS0.switchOn();
   
  Gl_hook("timestep()"); 
  Gl_start();	
 } 

 function timestep(){
    av.setSpeed(0); 
    av.setAnimationRepeat(0);
   if(rightkey.pressed){
     av.setDir(1,0);
     av.setAnimationRepeat(-1);
     av.setSpeed(2);
   }
   else if(leftkey.pressed){
    av.setDir(-1,0);
    av.setAnimationRepeat(-1);
    av.setSpeed(2);
   }
   else if(downkey.pressed){
    av.setDir(0,1);
    av.setAnimationRepeat(-1);
    av.setSpeed(2);
   }
   else if(upkey.pressed){
    av.setDir(0,-1);
    av.setAnimationRepeat(-1);
    av.setSpeed(2);
   }

   
   if(av.hasHit(transitW)){
    entryt.setvalue("E");   
    window.location="tut5.html";
   } 

    if(av.hasHit(tsS)){
  window.location="tut6.html";
 } 
 }//timestep

</script>
</head>

<title>TUTCITY  </title>
<body  bgcolor="black"  onload="init()" >
</html>

Veja esse exercício nesse link. Clique na figura para ativar e "ande" com as teclas de setas.


              LIÇÃO ANTERIOR       PRÓXIMA LIÇÃO             
ÍNDICE HOMEPAGE