今度、PyData.OkinawaでLT大会があるのでネタ探ししている。
C++で簡単にゲーム作れないかな?って検索したらこんなのがあった。
面白そうなので触ってみた(ちなみにC++は全然触ったことがない)
ダウンロード
自分のPCはmacなので、mac版をインストールしようとした。
インストールして動作確認したけど、うごかなかった。Sierra以降じゃないとダメらしい(El capitan...)
OSをアップデートしてHigh Sierraにしたらうごいたのでおk
チュートリアルを試す
画面を表示
# include <Siv3D.hpp> void Main() { while (System::Update()) { } }
うひょー。これだけで画面が起動した。
画面の座標
# include <Siv3D.hpp> void Main() { const Font font(30); while (System::Update()) { Circle(Mouse::Pos(), 100).draw(); font(Mouse::Pos()).draw(50, 200, Palette::Orange); } }
? エラーになった。Mouse
というモジュール?がない?
よくわからんが、Cursor
に変更したら動いた。
# include <Siv3D.hpp> void Main() { const Font font(30); while (System::Update()) { Circle(Cursor::Pos(), 100).draw(); font(Cursor::Pos()).draw(50, 200, Palette::Orange); } }
左上が(0,0)ということがわかった。
カラフル
# include <Siv3D.hpp> void Main() { Graphics::SetBackground(Palette::White); while (System::Update()) { for (int32 i = 0; i < 36; ++i) { const double radian = Radians(i * 10 + System::FrameCount()); const Vec2 pos = Circular(200, radian) + Window::Center(); RectF(25).setCenter(pos).rotated(radian).draw(HSV(i * 10)); } } }
たのしい(なんでこうなるか全くわからんけど)
フォントとか画像の読み込み
// 間違ったプログラム # include <Siv3D.hpp> void Main() { while (System::Update()) { // NG! 毎フレーム テクスチャを作成する const Texture texture(L"Example/Windmill.png"); // NG! 毎フレーム フォントを作成する const Font font(100); texture.draw(); font(L"Hello").draw(); } }
メインループに作成するのはやめたほうがいいとのこと。だがそもそもうごかぬ。
No matching constructor for initialization of 'const s3d::Image'
なんだろうかこのエラー。
初心者が書き直してみた。
# include <Siv3D.hpp> void Main() { const s3d::Image image(U"../assets/beer_cup_bin.png"); const s3d::Texture texture(image); const Font font(100); while (System::Update()) { texture.draw(); font(U"Hello").draw(); } }
(U""
ってなに?)
雑感
疲れたので寝る.