エンドロール
https://scrapbox.io/files/64d8460e9cc80a001cef5bac.png
code:エンドロール.cpp
# include <Siv3D.hpp>
class EndRoll {
public:
Array<String> strs;
Stopwatch stopwatch;
Font font{ 30 };
static constexpr double size = 50;
static constexpr double speed = 100;
EndRoll(const FilePath& path) {
TextReader reader{ path };
strs = reader.readAll().split(U'\n');
}
void start() {
stopwatch.start();
}
void draw()const {
const double y = Scene::Size().y + size / 2 - Min(movement(), limit());
for (auto i : step(strs.size())) {
font(strsi).drawAt(40, Scene::Center().x, y + i * size); }
}
bool isRunning()const {
return stopwatch.isRunning() && movement() <= limit();
}
private:
double limit()const {
return (strs.size() - 1) * size + Scene::Center().y;
}
double movement()const {
return stopwatch.sF() * speed;
}
};
void Main()
{
EndRoll endroll{ U"エンドロール.txt" };
endroll.start();
while (System::Update())
{
endroll.draw();
}
}
code:エンドロール.txt
企画
○○○○
プログラミング
■■■■
デザイン
▲▲▲▲
制作
◆◆◆◆