スペースキーを押すとバーがにょきにょき伸びる
これを改造して、スペースを押すたびに、ソートアルゴリズムのステップが進むようにしてみよう。
# include <Siv3D.hpp> // 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); } }