Commented by: LefTonbo
at 2006-06-23 20:31:40
バグ多数発見。
(マップ縦横を変更すると拡張したところが表示されないバグ(flame))
↓修正
function onBeforeMove() {
//ブロック表示
for (yy=1;yy<=$rows;yy++) {
for (xx=1;xx<=$cols;xx++) {
//drawDxSpriteなので回転・拡大縮小・半透明表示など動きのあるブロックが可能
if ($field.get(xx,yy)!=null) drawDxSprite($width/2+xx*$width,$height/2+yy*$height,$field.get(xx,yy),0,0,0,255,1,1);
}
}(以下省略)
(スペースキーのキーリピートが変更されない(block))
↓修正
if ((getkey(38)==1 || (getkey(38)>=$re*3 && getkey(38)%$re==0)) && $field.get(floor((x+$width*cos(a*90+90))/$width),floor((y+$height*sin(a*90+90))/$height))==null && $map.getAt(x+$width*cos(a*90+90),y+$height*sin(a*90+90))==$pat_map+8) a=amod(a+1,4);
//↑90度(回転先が壁でないとき)
else if ((getkey(38)==1 || (getkey(38)>=$re*3 && getkey(38)%$re==0)) && $field.get(floor((x+$width*cos(a*90+180))/$width),floor((y+$height*sin(a*90+180))/$height))==null && $map.getAt(x+$width*cos(a*90+180),y+$height*sin(a*90+180))==$pat_map+8) a=amod(a+2,4);
//↑180度(回転先が壁で、反対側が壁でないとき)
else if ((getkey(38)==1 || (getkey(38)>=$re*3 && getkey(38)%$re==0)) && $field.get(floor((x+$width*cos(a*90+270))/$width),floor((y+$height*sin(a*90+270))/$height))==null && $map.getAt(x+$width*cos(a*90+270),y+$height*sin(a*90+270))==$pat_map+8) a=amod(a+3,4);
//↑270度(回転の逆方向が壁でないとき)
else if ((getkey(38)==1 || (getkey(38)>=$re*3 && getkey(38)%$re==0)) && $map.getAt(x,y-$height)==$pat_map+8) {y-=$height;a=amod(a+2,4);}
//↑2つ目のブロックで回転(最終回転手段)
(以下省略)
(ブロックが一瞬消える & ブロックの大きさを変えると着地が変になる(fall))
修正↓
//着地
if ($field.get(floor(x/$width),floor((y+16)/$height))!=null || $map.getAt(x,y+16)==$pat_map) {
$field.set(floor(x/$width),floor(y/$height),p);
wait(1);
die();
}
ついでに改造スプリクトを1つ
(ゲームオーバーでブロックをすべて邪魔ブロックに(flame))
if($Gover!=1){
for (yy=1;yy<=$rows;yy++) {
for (xx=1;xx<=$cols;xx++) {
//drawDxSpriteなので回転・拡大縮小・半透明表示など動きのあるブロックが可能
if ($field.get(xx,yy)!=null) $field.set(xx,yy,$jama);
}
}
$Gover=1;
}
また、高速落下の速度、自動落下の速度、キーリピート開始までの時間($re*3のところ)もflameクラスで設定できるようにしてもいいとおもいます。
最後に、わかりやすい設定のヘルプ
$screenWidth=450; //画面横幅
$screenHeight=420; //画面縦幅
$cols=6; //フィールド横幅
$rows=12; //フィールド縦幅
$width=30; //ブロック横幅
$height=30; //ブロック縦幅
$color=6; //通常ブロックの色数(2以上)
$num=4; //最低消去数(2以上)
$jama=$pat_block+6; //邪魔ブロックのパターン番号
$v=1; //落下速度
$re=6; //キーリピート時間(押しっぱなしで何フレームごとにキー反応を起こすか)
$tuki=30; //着地猶予時間(着地してから何フレームで固定するか)
$wait=30; //ウェイト(完全着地から止めるフレーム数)
$map.setBGColor($clWhite); //背景色(color,colorHSLなどで設定)
長文で申し訳ありませんorz
|