さて、キーが押されていたら移動するので、
キーカウンタ1で移動するのは間違いないのですが、
それ以降、押しっぱなし移動したばあい、
カウンタ5ずつで移動するようにしてみます。
この場合、
移動が発生するカウンタ値は、
1,6,11,16,21・・・
となりますね。(1で一回、その後は5ずつ
この数列、簡単に判定する方法があります。
5で割って余りが1
です。
割り算の余りを求める演算子は、 「mod」です。
(a mod b)は、aをbで割った余りを返します。
では、実装を見て見ましょう。
TPiece.mainです。
procedure TPiece.Main;
begin
if GetKeyState(VK_LEFT)<0 then k_left:=k_left+1 else k_left:=0;
if GetKeyState(VK_RIGHT)<0 then k_right:=k_right+1 else k_right:=0;
if (k_left mod 5)=1 then begin
if not isHit(-1,0) then x:=x-1;
end;
if (k_right mod 5)=1 then begin
if not isHit(1,0) then x:=x+1;
end;
(略)
end;
もし、5で割って余りが1なら、
それぞれ、「not isHit」で、当たらないならば、
という条件のifのあと、移動しています。
xは負の数は左ですから、
k_leftは -1 、 k_rightは 1 です。
今までの処理と比べたら、
だいぶ簡単だと思うので、
わからなかったらちょっと考えてみてください。
んじゃ実行〜〜
積みあげ積み上げ・・・
初期状態の回転がキツイからこりゃ綺麗にできねえな
コンテンツ
最新の12件
2023-06-12
2021-02-15
2013-06-19
2012-07-14
2012-02-04
2012-01-06
2011-03-31
2010-08-26
2010-03-15
2009-10-21
2009-02-12
2008-11-18
メニュー編集
- counter: 981
- today: 1
- yesterday: 0
- online: 1