Project Board コメントComment
ログイン | ヘルプ | トップ

プロジェクト

ぷよ○よ風落ちゲーサンプル

内容
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

返信

バグ報告ありがとうございます。修正してお... 2006-06-24 22:40 by ラディ