For文及びグラフィックスメソッドを使用する例題(簡易CG)

・For文、ランダムなどを利用して、面白い(?)グラフィックスを表示させてみよう。
・丁半さいころゲーム(勝ち負けグラフィック表示版)
・ウィンドウのサイズSize.Width, Size.Heightをうまく使おう
(Sleep命令を使って少しずつ描かせるようにしても面白いです)

○ちょっとしたグラフィックス

DrawLine, DrawEllipseなどの簡単なグラフィックスを何本か描いても殆ど役に立たない。
ここでは、For文やランダムなどを利用して、ちょっとしたグラフィックスを書かせてみよう。

下記に表示される絵の例がリンクされているので、これを頼りに作ってみよう。。。できるかな。。。そして他にも色々作ってみよう。

  1. タイムトンネル

    まずは絵を良くみて、数々の円にどのような共通点があるのか、特にDrawEllipseのパラメータとして考えてみよう。
    全ての円の始点が同じ、違うのは幅と高さ。
    つまり始点のX,Y座標は固定で、幅と高さを、それぞれ1,2,3,...とさせれば。。。

    最初は、円の最大の大きさを固定として、例えば1〜200までなどとすると作りやすい。

    次に、画面中央までとか、およそ画面をはみ出さないようにとか、工夫してみるとよいです。

  2. 同心円 (Option)

    ※ちょっと難しいかもしれないけど・・・
    常に円の中心が同じになるようにして半径を変化させて次々と円を書けばよいのだが、
    DrawEllipseの指定は中心座標を指定できないので、うまく変換計算してあげる必要がある。

  3. ふわふわシャボン玉

    適当な位置に適当な大きさの半径の円を適当な数だけ、各々ランダムな色で描く。

    最初は、位置を適当な範囲内(例えばx,yが0〜200など)とし、半径も適当な範囲内(0〜50など)、数も200個などと固定にすると作りやすい。

    次に、位置を画面内全体のどこかとしたり、半径を20〜30のどれかランダム、数も例えば100〜200個のどれか(ランダム)としていくと、段々と面白くなる。
    制限付き(例えば10〜20など)で適当な数を求める方法は、Rnd(1)が0〜1の値、x*Rnd(1)は、0〜xの値となることを理解すれば比較的簡単。

  4. 乱雑な線

    上記2と同じようにしますが、但し円ではなく、線にします。つまり適当なところから適当なところまで、適当な色の線を適当な個数描くというものです。

    はやり最初は固定もしくは適当な制限付きとし、どんどんとランダム性を増していくと面白くなります。
    また、ちょっと難しいかもしれないけど(といっても大したことではないですが)、線の長さに制限をかけるなどを考えても面白いです。線の長さは、始点と終点から計算できますし、指定した範囲でなければ、描かないようにすればよいでしょう。

  5. 迷路?

    ちょっと難しいそうですが、プログラムそのものはそれほど複雑にはなりません。
    「Select文」(option)を使ったほうがIf文よりもスマートに書けるとおもいますが、どちらでも大丈夫です。
    まず、白黒(黒で線を描いていく)とし、描いていく線の回数も決めてしまうと簡単。

    考え方としては、まず適当なある点を出発点とする。
    次に上下左右のどれかを適当に選択して、出発点から選んだ方向に5つ先まで線を引く。
    そしてそこからまた上下左右に5つ線を引く。
    これをある回数だけ繰り返すと迷路のようなものができあがる。なお、繰り返す回数を適当にきめるなどを工夫しても面白い。

    「Doループ」を利用すると、はみ出すまで繰り返すというようにすることも可能です。For文を使って残念ながらウィンドウをはみ出すこともあるけどというものを作ってから、Doループではみ出さないように修正してみましょう。

    毎回描く線をランダムにカラーにすると、結構見栄えがよくなります。

  6. 花火 (絵はありません)
  7. 打ち上げ花火のようなグラフィックスに挑戦してみよう。といってもしょぼくても仕方がないけど。
    小さな丸を画面中央下から上に向かって真ん中まで描く。次に真ん中から2の同心円を描く。
    sleepもしくは無駄なfor文で描画の時間調整をするとよいでしょう。

  8. 迷走花火 (絵はありません)

    風の強い日の打ち上げ花火に挑戦してみては。打ち上げる際の軌跡をちょっとフラフラさせて風の影響を受けているような印象にするとよいでしょう。花火の大きさもランダムに決めるようにしてもよい。ちょっと難しいかな。
    sleepもしくは無駄なfor文で描画の時間調整をするとよいでしょう。

○丁半さいころゲームで、勝ち負けをグラフィックス版に

丁半さいころゲームを作っていた。さいころも表示されるようになったとおもうが、勝った場合には、花火、紙ふぶきが舞い上がるようなグラフィックスを、負けた場合には落ち込むようなグラフィックスを表示させてみよう。

 

 


[「C班」プログラミング基礎のTopに戻る]