・updownの計算 縮小率です。
for(i=23; i >=0; i--){
updown[i] = Math.sin((180*i/23)*(Math.PI/180));
}
で23の割合(1~ 0)に180を掛けてパーセントを算出する。
それをラデイアンに直す。*(Math.PI/180)
・上、下のキーのアクション
if(k==38) draw_road(0, -50); if(k==40) draw_road(0, 50);
・道路の描画モジュール iは(23~0)の変数でした。考慮間違いでした。
function draw_road(di, ud){
//(描画処理)
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, WIDTH, HEIGHT);
ctx.fillStyle = "green";
ctx.fillRect(0, 300, WIDTH, 300);
h = 24;
y = 600 - h;
for (i=23; i >= 0; i--){
ii = i ;
uw = (ii-1)*(ii-1) * 1.5;
ux = 400 - uw / 2 + di*(23-(ii-1));
uy = y + parseInt(updown[i-1]*ud);
bw = ii* ii * 1.5;
bx = 400 - bw/2 + di*(23-ii);
by = y + h + parseInt(updown[i]*ud);
wkcolor = ii % 3;
ctx.beginPath();
ctx.moveTo(ux,uy);
ctx.lineTo(ux+uw,uy);
ctx.lineTo(bx+bw,by);
ctx.lineTo(bx,by);
//全て座標を指定
ctx.closePath();
ctx.fillStyle = bordcolor[wkcolor]
ctx.fill();
h = h - 1;
y = y - h;
}
msg_draw();
}
// ゲームオーバーの表示
function msg_draw(){
ctx.font = "20px 'MS Pゴシック'";
ctx.fillStyle = "white";
ctx.fillText("カーソルキーの上、下を押してください",200,100);
}