==== アソパソマソを動かそう(理想形) ====
{{:game-engineer:classes:2022:game-programing-1:first-term:8:20220829-181708-621.png?400|}}
アソパソマソを動かそう1
{{:game-engineer:classes:2022:game-programing-1:first-term:8:20220829-181710-904.png?400|}}
アソパソマソを動かそう2
{{:game-engineer:classes:2022:game-programing-1:first-term:8:20220829-181716-268.png?400|}}
アソパソマソを動かそう3
{{ :game-engineer:classes:2022:game-programing-1:first-term:8:you_are_an_pan_man.zip |Windows 64bit アンパンマン理想形(プログラムダウンロード)}}
==== 3種類の遅いソートアルゴリズムを可視化してみよう ====
[[https://zenn.dev/reputeless/books/siv3d-documentation/viewer/tutorial-shape#2.8-%E9%95%B7%E6%96%B9%E5%BD%A2%E3%82%92%E6%8F%8F%E3%81%8F|長方形を描く]]\\
[[https://zenn.dev/reputeless/books/siv3d-documentation/viewer/tutorial-keyboard#16.1-%E3%82%AD%E3%83%BC%E3%81%AE%E5%85%A5%E5%8A%9B%E7%8A%B6%E6%85%8B%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8|キー入力]]\\
//スペースキーを押して、放した瞬間をキャッチしたら
if(KeySpace.up())
{
//スペースキーが押された時の処理を描く
}
==== ランダムににょきにょき ====
スペースキーを押すとバーがにょきにょき伸びる\\
これを改造して、スペースを押すたびに、ソートアルゴリズムのステップが進むようにしてみよう。\\
{{:game-engineer:classes:2022:game-programing-1:first-term:8:20221005-145040-213.png?400|}}
ランダムニョキニョキバーの画面
# include // OpenSiv3D v0.6.2
const int xsize = 800; //デフォルトの画面サイズ幅
const int ysize = 600; //デフォルトの画面サイズ高さ
//整数配列のランダムなインデックスの要素に1を足す関数
//_arr 配列名
//_num 配列数
void arrayPlusPlus(int _arr[], int _num)
{
int rnum = rand() % _num;
_arr[rnum]++;
}
void drawArray(int _arr[], int _num)
{
const int barsize = 50;//バーの幅
const int left = (xsize- barsize * _num) / 2; //バーを_num本描いたときに、真ん中揃えになるように位置調整
for (int i = 0; i < _num; i++) //幅50の高さ(長さ)_arr[i]*10のバーを、書いていく
{
//四角形の左上のx座標、 左上のy座標、 幅、高さを指定
Rect(left + i * barsize, 50, barsize, _arr[i] * 10)
.draw(Palette::Darkorange).drawFrame(2.0, 0,Palette::Black); //drawFrameは輪郭を描く関数
}
}
void Main()
{
// 背景の色を設定 | Set background color
Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 });
// 通常のフォントを作成 | Create a new font
const Font font{ 60 };
int value[10] = { 0,0,0,0,0,0,0,0,0,0 };//この配列に入っている整数*10がバーの高さ、配列数がバーの本数になるよ
srand((unsigned int)time(nullptr));
while (System::Update())
{
//スペースキーを押すたびに配列のどれかが1増える
if (KeySpace.up())
{
arrayPlusPlus(value, 10);
}
drawArray(value, 10);
}
}