プロつく計画1-2:1週目
プロつく計画1のリファクタリング記事タイトルの表記が統一されていない問題。
とりあえず「プロつく計画1-(Issue番号):w週目」とでもしておこう。
Issue番号1は…新バージョンのライブラリへの移行ということで。
さて、Issue番号2はブロックのアニメーションの実装です。
今の段階だとブロックを消したら
即座に上に積まれているブロックが下に落とされるようになっているので、
その途中のアニメーションを作ろうと思いました。
テストとして作ったのがこれ。
gifアニメで出力するとコマ送りっぽくなるけど、実際はもうちょっと滑らかです。
// クリックすると縮小していって1秒後に消える四角形 # include <Siv3D.hpp> void Main() { ScreenCapture::BeginVideo(); const Font font(30); // 縮小描画用のタイマ Stopwatch stopwatch; int rect_size = 100; Rect rect = Rect(rect_size, rect_size); // Rect の大きさが決まらないと中心も決まらない rect.setCenter(Window::Width() / 2, Window::Height() / 2); while (System::Update()) { // クリックされたらタイマをスタート if (Input::MouseL.clicked) stopwatch.start(); // 新しく四角形のサイズを計算 // 時間が経つほど線形に小さくなり、1000ms後に0になる int rect_new_size = rect_size - rect_size*stopwatch.ms()/1000 ; if (rect_new_size > 0) { rect.setSize(rect_new_size, rect_new_size); rect.setCenter(Window::Width() / 2, Window::Height() / 2); rect.draw(Palette::Turquoise); } font(stopwatch.ms(), L"ミリ秒経過").draw(0, 400); } }