home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ring.yamanashi.ac.jp/pub/pc/freem/action/
/
action.zip
/
TQAP.zip
/
Usr
/
Mychar.tonyu
< prev
next >
Wrap
Text File
|
2007-06-24
|
12KB
|
549 lines
extends DxChar;
$screenWidth =32*15;
$screenHeight=32*12;
$map.setbgcolor(color(0,0,0));
vx=0;vy=0;
wsp=2;
jmp=0;ld=0;
p=$pat_chara+0;
f=1;
zOrder=2;
mapX=0;
mapY=0;
magic=0;
enemytouch=0;
key=0;
before=0;
scroll;
opening=0;
anim=newAnimation();
x=trunc(x/32)*32+16;
y=trunc(y/32)*32+16;
for (e in $chars){
if (e is Opening) {
opening=1;
f=1;
Scroll=3;
$Location.set_x=(trunc(x/32)*32)/32+1;
$Location.set_y=(trunc(y/32)*32)/32+1;
file=new FileReader("status.txt");
cleardata=valueOf(file.readLn());
file.close();
if (cleardata>=1) {
//Scroll=1;
$map.set(13,10,$pat_block+12);
$map.set(13,9 ,$pat_block+12);
$map.set(14,9 ,$pat_block+6 );
}
file.close();
while(1){
scrollmap();
Move();
block_sound();
}
}
}
while(1){
if (pause==0) break;
update();
}
for (jiki in $chars){
if (jiki is Mychar) break;
}
scrollmap();
toujyou();
while(1){
Move();
if (pause==0) scrollmap();
break_brick_check();
door_check();
if (isout()) out();
block_sound();
}
function WallHit_chk(){
//ì╢é╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwX=-1ü@ëEé╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwX= 1
//ì╢ëEé╞éαò╟é╔É┌é╡é─é╚éóüFwX= 0ü@ò╟é╔é▀éΦì₧é±é┼éóéΘü@ü@ü@ü@üFwX= 2
//Åπé╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwY=-1ü@ë║é╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwY= 1
//Åπë║é╞éαò╟é╔É┌é╡é─é╚éóüFwY= 0ü@Åπë║é╠ò╟é╔ô»Ä₧é╔É┌é╡é─éóéΘüFwY= 2
var left1 ,left2 ,right1 ,right2 ;
var up1 ,up2 ,down1 ,down2 ;
var center1,center2,center3 ;
left1 =$map.getAt(x-8+vx,y-12);
left2 =$map.getAt(x-8+vx,y+12);
right1 =$map.getAt(x+8+vx,y-12);
right2 =$map.getAt(x+8+vx,y+12);
up1 =$map.getAt(x-8,y-17 );
up2 =$map.getAt(x+8,y-17 );
down1 =$map.getAt(x-8,y+16+vy);
down2 =$map.getAt(x+8,y+16+vy);
center1=$map.getAt(x ,y );
center2=$map.getAt(x+8,y );
center3=$map.getAt(x-8,y );
wX=0;wY=0;
isblock(left1);
//ì╢
if(isblock(left1 )) wX=-1;
if(isblock(left2 )) wX=-1;
//ëE
if(isblock(right1 ) && wX==0) wX=1;
if(isblock(right2 ) && wX==0) wX=1;
//Åπ
if(isblock(up1 )) wY=-1;
if(isblock(up2 )) wY=-1;
//ë║
if(isblock(down1 ) && wY== 0) wY=1;
if(isblock(down1 ) && wY==-1) wY=2;
if(isblock(down2 ) && wY== 0) wY=1;
if(isblock(down2 ) && wY==-1) wY=2;
//Æåë¢
if(isblock(center1)) wX=2;
if(isblock(center2)) wX=2;
if(isblock(center3)) wX=2;
}
function Ladder(){
ld=0;
if($map.getAt(x ,y )==$pat_block+12) ld=1;
if($map.getAt(x ,y+15 )==$pat_block+12) ld=1;
if($map.getAt(x ,y+16+vy)==$pat_block+12 && ld==0) ld=2;
//if($map.getAt(x+8,y+16+vy)==$pat_block+12 && ld==0) ld=2;
//if($map.getAt(x-8,y+16+vy)==$pat_block+12 && ld==0) ld=2;
}
function Move(){
var move01,move02,move03,move04,move05;
var move06,move07,move08,move09,move10;
var move11,move12,move13,move14,move15;
var rivs01,rivs02,rivs03,rivs04,rivs05;
var anim01,anim02,anim03,anim04,anim05;
var e,sound;
anim.pause();
sound=0;
while(1) {
if (pause==0) break;
update();
}
//ì╢ëEê┌ô«ü@------------------------------------------------
if (getkey(37)>=2) {vx=-wsp;f=-1;}
if (getkey(39)>=2) {vx= wsp;f= 1;}
//ê┌ô«ê╚èOé╠âLü[ü@------------------------------------------
MagicOK=1;
for (e in $chars){
if (e is Lever && crashTo(e)) MagicOK=0;
}
if (getkey(88)==1 && MagicOK==1) appear(new Magic(x,y));
if (getkey(81)==1) enemytouch=1;
if (getkey(80)==1) pause();
if (getkey(69)==1 && $Location.nokori==-100) {
e=appear(new Editor(x,y));
e.StageNow=$Location.stage;
}
//ò╟é╞ânâVâSé╠ö╗ÆΦü@----------------------------------------
WallHit_chk();
Ladder();
//ê┌ô«ü@----------------------------------------------------
move01=(wX!= 0);
move02=(wY==-1 && vy!=0);
move03=(wY>= 1 && wX!=2);
move04=(wY>= 1 && getkey(32)==1 && wY!=2);
move05=(wY== 0 && ld==0 && isback($map.getAt(x,y)) && $map.getAt(x,y)!=$pat_block+5);
move06=(ld== 2 && getkey(40)==0);
move07=(ld!= 0);
move08=(ld!= 0 && getkey(40)>0 && wY!= 1 && wY!= 2);
move09=(ld!= 0 && getkey(38)>0 && ld!= 2 && wY!=-1);
move10=(ld== 2 && getkey(32)==1 && wY!=-1 && wY!= 2);
move11=(wY==-1 && isback($map.getAt(x,y)));
move12=($map.getAt(x,y)==$pat_block+5 && (wY==0 || wY==-1) && ld==0);
if (move01==1) vx=0;
if (move02==1) vy=1;
if (move03==1) {vy=0;jmp=0;y=trunc(y/32)*32+16;}
if (move04==1) {vy=-7;jmp=1;$mplayer.play($se_pi31);sound=1;}
if (move05==1) vy+=0.4;
if (move06==1) {vy=0;jmp=0;y=trunc(y/32)*32+16;}
if (move07==1) {vy=0;jmp=0;}
if (move08==1) vy= wsp;
if (move09==1) vy=-wsp;
if (move10==1) {vy=-7;jmp=1;if (sound==0) $mplayer.play($se_pi31);}
if (move11==1) vy=1;
if (move12==1) vy+=0.01;
//ì╫é⌐é╚ê╩ÆuòΓÉ│ü@--------------------------------------------
rivs01=(ld== 1 && wX!=0 && getkey(37)==0 && getkey(39)==0);
rivs02=(wX==2);
//if (rivs01==1) {x=trunc(x/32)*32+16;}
if (rivs02==1) vy=0;
//âAâjâüü[âVâçâôü@--------------------------------------------
anim01=(ld!= 0 && getkey(40)>0 && wY!= 1 && wY!= 2);
anim02=(ld!= 0 && getkey(38)>0 && ld!= 2 && wY!=-1);
anim03=(vx!= 0 && jmp==0 && ($map.getAt(x,y)!=$pat_block+5));
anim04=(ld== 0 && wY== 0);
anim05=(ld== 2 && wY==-1 && vx==0);
anim06=(jmp==1);
anim07=(vy== 0 && wY==-1);
anim08=(vx!= 0 && jmp==0 && ($map.getAt(x,y)==$pat_block+5));
anim09=($map.getAt(x,y)==$pat_block+5 && vx!=0 && wY==0);
if (anim01==1) anim.swing($pat_chara+3,$pat_chara+5,8);
if (anim02==1) anim.swing($pat_chara+3,$pat_chara+5,8);
if (anim03==1) anim.swing($pat_chara+0,$pat_chara+2,8);
if (anim04==1) {anim.swing($pat_chara+0,$pat_chara+2,8);anim.pause();}
if (anim05==1) {anim.swing($pat_chara+0,$pat_chara+2,8);anim.pause();}
if (anim06==1) p=$pat_chara+0;
if (anim07==1) anim.pause();
if (anim08==1) anim.swing($pat_chara+0,$pat_chara+2,16);
if (anim09==1) anim.pause();
//Ä└ì█é╠Ä⌐ï@ì└òWé╓é╠æ½é╡é▒é▌ü@---------------------------------
x+=vx;
y+=vy;
if ($map.getAt(x,y)!=$pat_block+5) vx=0;
if ($map.getAt(x,y)==$pat_block+5 && (wY==1 || wY==2 || ld==2)) vx=0;
if (ld== 1) vx=0;
sound=0;
update();
}
//â}âbâvâpâ^ü[âôé╠èmöFüiâuâìâbâNüAöwîiüAânâVâSé╚é╟üj-----------------
function isblock(tile){
var tile_bk1,tile_bk2;
var value;
tile_bk1=$pat_block+6;
tile_bk2=$pat_block+11;
value=(tile>=tile_bk1 && tile<=tile_bk2);
return value;
}
function isback(tile){
var tile_bg1,tile_bg2;
var value;
tile_bg1=$pat_block+0;
tile_bg2=$pat_block+4;
value=(tile>=tile_bg1 && tile<=tile_bg2);
return value;
}
function isout(){
var value;
value=($map.getAt(x,y)==$pat_block+1 || enemytouch==1);
return value;
}
function out(){
var angle,kira;
var e;
setVisible(0);
$mplayer.stop();
for(angle=0;angle<360;angle+=45){
kira=appear(new Effect(x,y,"kirakira"));
kira.vx=cos(angle);
kira.vy=sin(angle);
}
$mplayer.play($se_puu14,128);
wait(200);
$Location.nokori--;
if ($Location.nokori>=0) {
appear(new load(x,y));
die();
}
if ($Location.nokori==-1) {
appear(new Effect(x,y,"gameover"));
while(1){
update();
}
}
if ($Location.nokori<-100) {
for (e in $chars){
if (e is Effect) e.die();
if (e is Enemy ) e.die();
if (e is Key ) e.die();
if (e is Door ) e.die();
}
e=appear(new Editor(0,0));
e.StageNow=$Location.stage;
die();
}
}
function break_brick_check(){
var pat1,pat2,pat3,_x,_y,obj;
obj=$pat_block+8;
pat1=$map.getAt(x ,y+17);
pat2=$map.getAt(x-8,y+17);
pat3=$map.getAt(x+8,y+17);
if (pat1==obj){
_x=(x )/32;
_y=(y+17)/32;
appear(new Effect(_x,_y,"break"));
}
if (pat2==obj){
_x=(x- 8)/32;
_y=(y+17)/32;
appear(new Effect(_x,_y,"break"));
}
if (pat3==obj){
_x=(x+ 8)/32;
_y=(y+17)/32;
appear(new Effect(_x,_y,"break"));
}
}
function door_check(){
var e;
for (e in $chars){
if (e is Door && crashTo(e) && key==1) {
if (e.p==$pat_door+0){
e.p=$pat_door+1;
if (e.next_stage!=null){
pause=1;
setVisible(0);
if ($Location.stage==15) $Location.status_change=1;
$Location.stage=e.next_stage;
$Location.set_x=e.next_x;
$Location.set_y=e.next_y;
if ($Location.nokori!=-100) $Location.nokori++;
$mplayer.stop();
$mplayer.play($se_pyoro57_b);
kira=appear(new Effect(x,y,"kirakira2"));
kira.vy=-2;
updateEx(100);
appear(new load(x,y));
updateEx(100);
}
}
//âGâôâfâBâôâOé╠öα
if (e.p==$pat_door+2){
e.p=$pat_door+3;
jiki.pause=1;
jiki.setVisible(0);
$mplayer.stop();
$mplayer.play($se_pyoro57_b);
kira=appear(new Effect(x,y,"kirakira2"));
kira.vy=-2;
file=new FileReader("status.txt");
status=valueOf(file.readLn());
file.close();
if (status<2){
file=new FileWriter("status.txt");
file.writeLn(2);
file.close();
}
updateEx(100);
appear(new Sungeki(x,y,99));
updateEx(100);
}
}
}
}
function scrollmap(){
var sx,sy,_set1,_set2;
sx=x-$screenWidth/2;
sy=y-$screenHeight/2;
if (sx<32) sx=32;
if (sx>$screenWidth+32) sx=$screenWidth+32;
if (sy<32) sy=32;
if (sy>$screenHeight+32) sy=$screenHeight+32;
if (Scroll==0){
$map.scrollTo(sx,sy);
}
if (Scroll==1){
_set1=trunc($Location.set_y/12)*32+32;
$map.scrollTo(sx,_set1);
}
if (Scroll==2){
_set2=trunc($Location.set_x/16)*32+32;
$map.scrollTo(_set2,sy);
}
if (Scroll==3){
_set1=trunc($Location.set_x/16)*32*15+32;
_set2=trunc($Location.set_y/12)*32*12+32;
$map.scrollTo(_set1,_set2);
}
}
function nextstage(){
var file,stagenum;
var _x,_y,blockline,block,blockzero;
stagenum=valueOf(waitInput("Map Load","Input Load Number"));
if (stagenum!=null){
addzero="";
if (stagenum<100) addzero="0" ;
if (stagenum<10 ) addzero="00";
file=new FileReader(addzero+stagenum+".txt");
if (file.error()==0){
blockzero=$pat_block+0;
for (_y=1;_y<25;_y++){
blockline=file.readLn();
for (_x=1;_x<31;_x++){
block=blockzero+valueOf(blockline.substring((_x-1)*2,_x*2));
$map.set(_x,_y,block);
}
}
file.close();
}
}
}
function toujyou(){
var angle,kira;
pause=1;
p=-10;
$mplayer.play($se_power38);
for(angle=0;angle<360;angle+=45){
kira=appear(new Effect(x,y,"kirakira2"));
kira.vx=cos(angle)*2;
kira.vy=sin(angle)*2;
}
wait(50);
p=$pat_chara+0;
pause=0;
}
function pause(){
var x1,y1,x2,y2,x3,y3;
var _time,e;
x1=$viewX+150;
y1=$ViewY+150;
x2=x1+200;
y2=y1+100;
x3=x1+50;
y3=y1+35;
_time=0;
for (e in $chars){
if (e is Opening) return;
}
wait(1);
pause=1;
$mplayer.play($se_push05);
while(1){
/*
fillRect(x1 ,y1 ,x2 ,y2 ,$clWhite,-2);
fillRect(x1+3,y1+3,x2-3,y2-3,$clBlack,-3);
if (_time<50 ) drawText(x3,y3,"PAUSE",$clWhite,24,-4);
if (_time>100) _time=0;
_time++;
*/
if (getkey(80)==1) break;
update();
}
$mplayer.play($se_push05);
pause=0;
}
function block_sound(){
if (wX==2 && before==0) {
$mplayer.play($se_shoot03);
before=1;
}
if (wX!=2) before=0;
}