home *** CD-ROM | disk | FTP | other *** search
/ ring.yamanashi.ac.jp/pub/pc/freem/action/ / action.zip / TQAP.zip / Usr / Mychar.tonyu < prev    next >
Text File  |  2007-06-24  |  12KB  |  549 lines

  1. extends DxChar;
  2.  
  3. $screenWidth =32*15;
  4. $screenHeight=32*12;
  5. $map.setbgcolor(color(0,0,0));
  6.  
  7. vx=0;vy=0;
  8. wsp=2;
  9. jmp=0;ld=0;
  10. p=$pat_chara+0;
  11. f=1;
  12. zOrder=2;
  13. mapX=0;
  14. mapY=0;
  15. magic=0;
  16. enemytouch=0;
  17. key=0;
  18. before=0;
  19. scroll;
  20.  
  21. opening=0;
  22.  
  23. anim=newAnimation();
  24.  
  25. x=trunc(x/32)*32+16;
  26. y=trunc(y/32)*32+16;
  27.  
  28. for (e in $chars){
  29.   if (e is Opening) {
  30.     opening=1;
  31.     f=1;
  32.     Scroll=3;
  33.     $Location.set_x=(trunc(x/32)*32)/32+1;
  34.     $Location.set_y=(trunc(y/32)*32)/32+1;
  35.     
  36.     file=new FileReader("status.txt");
  37.     cleardata=valueOf(file.readLn());
  38.     file.close();
  39.  
  40.     if (cleardata>=1) {
  41.       //Scroll=1;
  42.       $map.set(13,10,$pat_block+12);
  43.       $map.set(13,9 ,$pat_block+12);
  44.       $map.set(14,9 ,$pat_block+6 );
  45.     }
  46.     file.close();
  47.     
  48.     while(1){
  49.       scrollmap();
  50.       Move();
  51.       block_sound();
  52.     }
  53.   }
  54. }
  55.  
  56.  
  57. while(1){
  58.   if (pause==0) break;
  59.   update();
  60. }
  61.  
  62. for (jiki in $chars){
  63.   if (jiki is Mychar) break;
  64. }
  65.  
  66. scrollmap();
  67. toujyou();
  68.  
  69. while(1){
  70.   
  71.   Move();
  72.   if (pause==0) scrollmap();
  73.   break_brick_check();
  74.   door_check();
  75.   if (isout()) out();
  76.   block_sound();
  77. }  
  78.  
  79.  
  80. function WallHit_chk(){
  81.   
  82.   //ì╢é╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwX=-1ü@ëEé╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwX= 1
  83.   //ì╢ëEé╞éαò╟é╔É┌é╡é─é╚éóüFwX= 0ü@ò╟é╔é▀éΦì₧é±é┼éóéΘü@ü@ü@ü@üFwX= 2
  84.   //Åπé╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwY=-1ü@ë║é╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwY= 1
  85.   //Åπë║é╞éαò╟é╔É┌é╡é─é╚éóüFwY= 0ü@Åπë║é╠ò╟é╔ô»Ä₧é╔É┌é╡é─éóéΘüFwY= 2
  86.   
  87.   var left1  ,left2  ,right1 ,right2 ;
  88.   var up1    ,up2    ,down1  ,down2  ;
  89.   var center1,center2,center3        ;
  90.   
  91.   left1  =$map.getAt(x-8+vx,y-12);
  92.   left2  =$map.getAt(x-8+vx,y+12);
  93.   right1 =$map.getAt(x+8+vx,y-12);
  94.   right2 =$map.getAt(x+8+vx,y+12);
  95.   up1    =$map.getAt(x-8,y-17   );
  96.   up2    =$map.getAt(x+8,y-17   );
  97.   down1  =$map.getAt(x-8,y+16+vy);
  98.   down2  =$map.getAt(x+8,y+16+vy);
  99.   center1=$map.getAt(x  ,y      );
  100.   center2=$map.getAt(x+8,y      );
  101.   center3=$map.getAt(x-8,y      );
  102.   
  103.   
  104.   wX=0;wY=0;
  105.   isblock(left1);
  106.   
  107.   //ì╢
  108.   if(isblock(left1  )) wX=-1;
  109.   if(isblock(left2  )) wX=-1;
  110.   //ëE
  111.   if(isblock(right1 ) && wX==0) wX=1;
  112.   if(isblock(right2 ) && wX==0) wX=1;
  113.   //Åπ
  114.   if(isblock(up1    )) wY=-1;
  115.   if(isblock(up2    )) wY=-1;
  116.   //ë║
  117.   if(isblock(down1  ) && wY== 0) wY=1;
  118.   if(isblock(down1  ) && wY==-1) wY=2;
  119.   if(isblock(down2  ) && wY== 0) wY=1;
  120.   if(isblock(down2  ) && wY==-1) wY=2;
  121.   
  122.   //Æåë¢
  123.   if(isblock(center1)) wX=2;
  124.   if(isblock(center2)) wX=2;
  125.   if(isblock(center3)) wX=2;
  126. }
  127.  
  128.  
  129. function Ladder(){
  130.   ld=0;
  131.   if($map.getAt(x  ,y      )==$pat_block+12) ld=1;
  132.   if($map.getAt(x  ,y+15   )==$pat_block+12) ld=1;
  133.   if($map.getAt(x  ,y+16+vy)==$pat_block+12 && ld==0) ld=2;
  134.   //if($map.getAt(x+8,y+16+vy)==$pat_block+12 && ld==0) ld=2;
  135.   //if($map.getAt(x-8,y+16+vy)==$pat_block+12 && ld==0) ld=2;
  136. }
  137.  
  138. function Move(){
  139.   
  140.   var move01,move02,move03,move04,move05;
  141.   var move06,move07,move08,move09,move10;
  142.   var move11,move12,move13,move14,move15;
  143.   var rivs01,rivs02,rivs03,rivs04,rivs05;
  144.   var anim01,anim02,anim03,anim04,anim05;
  145.   var e,sound;
  146.   
  147.   anim.pause();
  148.   sound=0;
  149.   
  150.   while(1) {
  151.     if (pause==0) break;
  152.     update();
  153.   }
  154.   
  155.   //ì╢ëEê┌ô«ü@------------------------------------------------
  156.   
  157.   if (getkey(37)>=2) {vx=-wsp;f=-1;}
  158.   if (getkey(39)>=2) {vx= wsp;f= 1;}
  159.   
  160.   //ê┌ô«ê╚èOé╠âLü[ü@------------------------------------------
  161.   
  162.   MagicOK=1;
  163.   for (e in $chars){
  164.     if (e is Lever && crashTo(e)) MagicOK=0;
  165.   }
  166.   if (getkey(88)==1 && MagicOK==1) appear(new Magic(x,y));
  167.   if (getkey(81)==1) enemytouch=1;
  168.   if (getkey(80)==1) pause();
  169.   if (getkey(69)==1 && $Location.nokori==-100) {
  170.     e=appear(new Editor(x,y));
  171.     e.StageNow=$Location.stage;
  172.   }
  173.   
  174.   //ò╟é╞ânâVâSé╠ö╗ÆΦü@----------------------------------------
  175.   
  176.   WallHit_chk();
  177.   Ladder();
  178.   
  179.   //ê┌ô«ü@----------------------------------------------------
  180.   
  181.   move01=(wX!= 0);
  182.   move02=(wY==-1 && vy!=0);
  183.   move03=(wY>= 1 && wX!=2);
  184.   move04=(wY>= 1 && getkey(32)==1 && wY!=2);
  185.   move05=(wY== 0 && ld==0 && isback($map.getAt(x,y)) && $map.getAt(x,y)!=$pat_block+5);
  186.   move06=(ld== 2 && getkey(40)==0);
  187.   move07=(ld!= 0);
  188.   move08=(ld!= 0 && getkey(40)>0  && wY!= 1 && wY!= 2);
  189.   move09=(ld!= 0 && getkey(38)>0  && ld!= 2 && wY!=-1);
  190.   move10=(ld== 2 && getkey(32)==1 && wY!=-1 && wY!= 2);
  191.   move11=(wY==-1 && isback($map.getAt(x,y)));
  192.   move12=($map.getAt(x,y)==$pat_block+5 && (wY==0 || wY==-1) && ld==0);
  193.   
  194.   if (move01==1)  vx=0;
  195.   if (move02==1)  vy=1;
  196.   if (move03==1) {vy=0;jmp=0;y=trunc(y/32)*32+16;}    
  197.   if (move04==1) {vy=-7;jmp=1;$mplayer.play($se_pi31);sound=1;}
  198.   if (move05==1)  vy+=0.4;
  199.   if (move06==1) {vy=0;jmp=0;y=trunc(y/32)*32+16;} 
  200.   if (move07==1) {vy=0;jmp=0;}
  201.   if (move08==1)  vy= wsp;
  202.   if (move09==1)  vy=-wsp;
  203.   if (move10==1) {vy=-7;jmp=1;if (sound==0) $mplayer.play($se_pi31);}
  204.   if (move11==1)  vy=1;
  205.   if (move12==1)  vy+=0.01;
  206.   
  207.   //ì╫é⌐é╚ê╩ÆuòΓÉ│ü@--------------------------------------------
  208.   
  209.   rivs01=(ld== 1 && wX!=0 && getkey(37)==0 && getkey(39)==0);
  210.   rivs02=(wX==2);
  211.   
  212.   //if (rivs01==1) {x=trunc(x/32)*32+16;}
  213.   if (rivs02==1)  vy=0;
  214.   
  215.   //âAâjâüü[âVâçâôü@--------------------------------------------
  216.   
  217.   anim01=(ld!= 0 && getkey(40)>0  && wY!= 1 && wY!= 2);
  218.   anim02=(ld!= 0 && getkey(38)>0  && ld!= 2 && wY!=-1);
  219.   anim03=(vx!= 0 && jmp==0 && ($map.getAt(x,y)!=$pat_block+5));
  220.   anim04=(ld== 0 && wY== 0);
  221.   anim05=(ld== 2 && wY==-1 && vx==0);
  222.   anim06=(jmp==1);
  223.   anim07=(vy== 0 && wY==-1);
  224.   anim08=(vx!= 0 && jmp==0 && ($map.getAt(x,y)==$pat_block+5));
  225.   anim09=($map.getAt(x,y)==$pat_block+5 && vx!=0 && wY==0);
  226.   
  227.   if (anim01==1)  anim.swing($pat_chara+3,$pat_chara+5,8);    
  228.   if (anim02==1)  anim.swing($pat_chara+3,$pat_chara+5,8);
  229.   if (anim03==1)  anim.swing($pat_chara+0,$pat_chara+2,8);    
  230.   if (anim04==1) {anim.swing($pat_chara+0,$pat_chara+2,8);anim.pause();} 
  231.   if (anim05==1) {anim.swing($pat_chara+0,$pat_chara+2,8);anim.pause();}  
  232.   if (anim06==1)  p=$pat_chara+0;
  233.   if (anim07==1)  anim.pause();
  234.   if (anim08==1)  anim.swing($pat_chara+0,$pat_chara+2,16);
  235.   if (anim09==1)  anim.pause();
  236.   
  237.   //Ä└ì█é╠Ä⌐ï@ì└òWé╓é╠æ½é╡é▒é▌ü@---------------------------------
  238.   
  239.   x+=vx;
  240.   y+=vy;
  241.   
  242.   if ($map.getAt(x,y)!=$pat_block+5) vx=0;
  243.   if ($map.getAt(x,y)==$pat_block+5 && (wY==1 || wY==2 || ld==2)) vx=0;
  244.   if (ld== 1) vx=0;
  245.   
  246.   sound=0;
  247.   update();
  248.   
  249. }
  250.  
  251. //â}âbâvâpâ^ü[âôé╠èmöFüiâuâìâbâNüAöwîiüAânâVâSé╚é╟üj-----------------
  252.  
  253. function isblock(tile){
  254.   
  255.   var tile_bk1,tile_bk2;
  256.   var value;
  257.   
  258.   tile_bk1=$pat_block+6;
  259.   tile_bk2=$pat_block+11;
  260.   
  261.   value=(tile>=tile_bk1 && tile<=tile_bk2);
  262.   
  263.   return value;
  264. }
  265.  
  266. function isback(tile){
  267.   
  268.   var tile_bg1,tile_bg2;
  269.   var value;
  270.   
  271.   tile_bg1=$pat_block+0;
  272.   tile_bg2=$pat_block+4;
  273.   
  274.   value=(tile>=tile_bg1 && tile<=tile_bg2);
  275.   
  276.   return value;
  277. }
  278.  
  279. function isout(){
  280.   
  281.   var value;
  282.   
  283.   value=($map.getAt(x,y)==$pat_block+1 || enemytouch==1);
  284.   return value;
  285. }
  286.  
  287. function out(){
  288.   
  289.   var angle,kira;
  290.   var e;
  291.   
  292.   setVisible(0);
  293.   $mplayer.stop();
  294.   
  295.   for(angle=0;angle<360;angle+=45){
  296.     kira=appear(new Effect(x,y,"kirakira"));
  297.     kira.vx=cos(angle);
  298.     kira.vy=sin(angle);
  299.   }
  300.   
  301.   $mplayer.play($se_puu14,128);
  302.   wait(200);
  303.   
  304.   $Location.nokori--;
  305.   if ($Location.nokori>=0) {
  306.     appear(new load(x,y));
  307.     die();
  308.   }
  309.   
  310.   if ($Location.nokori==-1) {
  311.     appear(new Effect(x,y,"gameover"));
  312.     while(1){
  313.       update();
  314.     }
  315.     
  316.   }
  317.   
  318.   if ($Location.nokori<-100) {
  319.     for (e in $chars){
  320.       if (e is Effect) e.die();
  321.       if (e is Enemy )  e.die();
  322.       if (e is Key   ) e.die();
  323.       if (e is Door  ) e.die();
  324.     }
  325.     e=appear(new Editor(0,0));
  326.     e.StageNow=$Location.stage;
  327.     die();
  328.   }
  329. }
  330.  
  331. function break_brick_check(){
  332.   
  333.   var pat1,pat2,pat3,_x,_y,obj;
  334.   
  335.   obj=$pat_block+8;
  336.   
  337.   pat1=$map.getAt(x  ,y+17);
  338.   pat2=$map.getAt(x-8,y+17);
  339.   pat3=$map.getAt(x+8,y+17);
  340.   
  341.   if (pat1==obj){
  342.     _x=(x   )/32;
  343.     _y=(y+17)/32;
  344.     appear(new Effect(_x,_y,"break"));
  345.   }
  346.   if (pat2==obj){
  347.     _x=(x- 8)/32;
  348.     _y=(y+17)/32;
  349.     appear(new Effect(_x,_y,"break"));
  350.   }
  351.   if (pat3==obj){
  352.     _x=(x+ 8)/32;
  353.     _y=(y+17)/32;
  354.     appear(new Effect(_x,_y,"break"));
  355.   }
  356. }
  357.  
  358. function door_check(){
  359.   
  360.   var e;
  361.   for (e in $chars){
  362.     if (e is Door && crashTo(e) && key==1) {
  363.       
  364.       if (e.p==$pat_door+0){
  365.         e.p=$pat_door+1;
  366.         
  367.         if (e.next_stage!=null){
  368.           
  369.           pause=1;
  370.           setVisible(0);
  371.           
  372.           if ($Location.stage==15) $Location.status_change=1;
  373.           
  374.           $Location.stage=e.next_stage;
  375.           $Location.set_x=e.next_x;
  376.           $Location.set_y=e.next_y;
  377.           if ($Location.nokori!=-100) $Location.nokori++;
  378.           
  379.           $mplayer.stop();
  380.           
  381.           $mplayer.play($se_pyoro57_b);
  382.           kira=appear(new Effect(x,y,"kirakira2"));
  383.           kira.vy=-2;
  384.           updateEx(100);
  385.           appear(new load(x,y));
  386.           updateEx(100);
  387.         }
  388.         
  389.       }
  390.       
  391.       //âGâôâfâBâôâOé╠öα
  392.       if (e.p==$pat_door+2){
  393.         e.p=$pat_door+3;
  394.         
  395.         jiki.pause=1;
  396.         jiki.setVisible(0);
  397.         
  398.         $mplayer.stop();
  399.         $mplayer.play($se_pyoro57_b);
  400.         kira=appear(new Effect(x,y,"kirakira2"));
  401.         kira.vy=-2;
  402.         
  403.         file=new FileReader("status.txt");
  404.         status=valueOf(file.readLn());
  405.         file.close();
  406.         if (status<2){
  407.           file=new FileWriter("status.txt");
  408.           file.writeLn(2);
  409.           file.close();
  410.         }
  411.         
  412.         updateEx(100);
  413.         appear(new Sungeki(x,y,99)); 
  414.         updateEx(100);
  415.       }
  416.  
  417.  
  418.     }
  419.   }
  420.   
  421. }
  422.  
  423.  
  424. function scrollmap(){
  425.   
  426.   var sx,sy,_set1,_set2;
  427.   
  428.   sx=x-$screenWidth/2;
  429.   sy=y-$screenHeight/2;
  430.   
  431.   if (sx<32) sx=32;
  432.   if (sx>$screenWidth+32) sx=$screenWidth+32;
  433.   if (sy<32) sy=32;
  434.   if (sy>$screenHeight+32) sy=$screenHeight+32;
  435.   
  436.   if (Scroll==0){
  437.     $map.scrollTo(sx,sy); 
  438.   }
  439.   if (Scroll==1){
  440.     _set1=trunc($Location.set_y/12)*32+32;
  441.     $map.scrollTo(sx,_set1); 
  442.   }
  443.   if (Scroll==2){
  444.     _set2=trunc($Location.set_x/16)*32+32;
  445.     $map.scrollTo(_set2,sy); 
  446.   }
  447.   if (Scroll==3){
  448.     _set1=trunc($Location.set_x/16)*32*15+32;
  449.     _set2=trunc($Location.set_y/12)*32*12+32;
  450.     $map.scrollTo(_set1,_set2); 
  451.   }
  452. }
  453.  
  454.  
  455.  
  456. function nextstage(){
  457.   
  458.   var file,stagenum;
  459.   var _x,_y,blockline,block,blockzero;
  460.   
  461.   stagenum=valueOf(waitInput("Map Load","Input Load Number"));
  462.   
  463.   if (stagenum!=null){
  464.     
  465.     addzero="";
  466.     if (stagenum<100) addzero="0" ;
  467.     if (stagenum<10 ) addzero="00";
  468.     
  469.     file=new FileReader(addzero+stagenum+".txt");
  470.     
  471.     if (file.error()==0){
  472.       
  473.       blockzero=$pat_block+0;
  474.       for (_y=1;_y<25;_y++){
  475.         blockline=file.readLn();
  476.         for  (_x=1;_x<31;_x++){
  477.           block=blockzero+valueOf(blockline.substring((_x-1)*2,_x*2));
  478.           $map.set(_x,_y,block);
  479.         }  
  480.       }
  481.       file.close();
  482.     }
  483.     
  484.   }
  485. }
  486.  
  487. function toujyou(){
  488.   
  489.   var angle,kira;
  490.   pause=1;
  491.   p=-10;
  492.   $mplayer.play($se_power38);
  493.   for(angle=0;angle<360;angle+=45){
  494.     kira=appear(new Effect(x,y,"kirakira2"));
  495.     kira.vx=cos(angle)*2;
  496.     kira.vy=sin(angle)*2;
  497.   }
  498.   
  499.   wait(50);
  500.   p=$pat_chara+0;
  501.   pause=0;
  502. }
  503.  
  504.  
  505. function pause(){
  506.   
  507.   var x1,y1,x2,y2,x3,y3;
  508.   var _time,e;
  509.   
  510.   x1=$viewX+150;
  511.   y1=$ViewY+150;
  512.   x2=x1+200;
  513.   y2=y1+100;
  514.   x3=x1+50;
  515.   y3=y1+35;
  516.   _time=0;
  517.   
  518.   for (e in $chars){
  519.     if (e is Opening) return;
  520.   }
  521.   
  522.   wait(1);
  523.   pause=1;
  524.   $mplayer.play($se_push05);
  525.   
  526.   while(1){
  527.     /*
  528.     fillRect(x1  ,y1  ,x2  ,y2  ,$clWhite,-2);
  529.     fillRect(x1+3,y1+3,x2-3,y2-3,$clBlack,-3);
  530.     if (_time<50 ) drawText(x3,y3,"PAUSE",$clWhite,24,-4);
  531.     if (_time>100) _time=0;
  532.     _time++;
  533.     */
  534.     if (getkey(80)==1) break;
  535.     update();
  536.   }
  537.   $mplayer.play($se_push05);
  538.   pause=0;
  539. }
  540.  
  541. function block_sound(){
  542.   
  543.   if (wX==2 && before==0) {
  544.     $mplayer.play($se_shoot03);
  545.     before=1;
  546.   }
  547.   if (wX!=2) before=0;
  548. }
  549.