ソースプログラムを覗いてみよう!!

【書籍等の購入はこちら⇒】


【Visual C#.NET プログラム例】


【VBA/Excel式定義】   【VB.net】   【C#.net】   【Android Java】   【C言語】   【Prolog】 【Python】

C言語による【言語処理学習用データ型自由なミニ言語(Type Free Mini Language)】


【目次】

  1. オセロゲーム
  2. マインスィーパ
  3. グモウスキーとミラの写像
  4. 数当てゲーム
  5. BigNumberとこれらを分母・分子にもつ分数
  6. doubleを分母・分子にもつ分数
  7. 四元数関連
  8. テトリス
  9. CSGモデルと透過光
  10. ハッシュ法(チェーン法)のテスト
  11. ハッシュ法(オープンアドレス法)のテスト
  12. ランダムドットの表示
  13. 反復関数系によるシダの葉の描画
  14. 陰線消去
  15. Jag配列による集合演算
  16. 色地図と等高線の表示
  17. シューティングゲーム
  18. BitArrayによる集合演算の表現例
  19. 文字列照合における力任せ法,KMP法,BM法の比較
  20. コッホ曲線
  21. 平面充填問題
  22. 3Dモデル5手法の比較
  23. レイトレーシング法による立体表示
  24. 立体図形の演算表示
  25. 二次曲面(quadric surface)の表示
  26. 改良型マージソート(improved Merge Sort)
  27. ヒープソート(Heap Sort)
  28. 度数ソート(Frequency Sort)
  29. シェルソート(Shell Sort)
  30. クィックソート(Quick Sort)
  31. シェーカソート(Shaker Sort)
  32. 配列による集合演算

【プログラム例】

  1. オセロゲーム

  2. マインスィーパ

  3. グモウスキーとミラの写像

  4. 数当てゲーム
  5. 簡単なプログラムですが、ブリンキングや
    電光掲示板風の文字の動かし方の良い例になっています。

  6. BigNumberとこれらを分母・分子にもつ分数
  7. 計算メソッド、演算子定義を使って
    πやe(自然対数の底)を計算しています。
    精度の良さをお楽しみください。
    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。

  8. doubleを分母・分子にもつ分数
  9. BigNumberを分母・分子にもつ分数は遅いので
    doubleを分母・分子にもつ分数を表現しました。
    BigNumberより精度は悪くなりますが、
    単純なdoubleより精度は良くなります。
    BigNumberより圧倒的に速度は速いです。

  10. 四元数関連
  11. 四元数については以下を参照。
    四元数の説明(PDF)

  12. テトリス
  13. 飾りっけのないプログラムですので、
    改良して面白く可笑しくしてみましょう。

  14. CSGモデルと透過光
  15. 3Dモデルを作成するツールは数多くあるが、プログラムで書くとこうなる。
    なお、画像例等が必要ですのでLZH形式で圧縮しています。解凍してお使い下さい。
    実行確認はC#.net 2008で行っています。

    全体動画透過光
    ソリッドテクスチャリングテクスチャマッピング バンプマッピング
    リフレクションマッピングリフラクションマッピング

  16. ハッシュ法(チェーン法)のテスト
  17. チェーン法を使った簡単なテストです。
    Formに、textBox1, listBox1, button1, button2, botton3, button4, button5
    を配置し、form1_Load, button1_Click, button2_Click, ..., button5_Clickを
    イベントとして指定してください。

  18. ハッシュ法(オープンアドレス法)のテスト
  19. オープンアドレス法を使った簡単なテストです。
    Formに、textBox1, listBox1, button1, button2, botton3
    を配置し、form1_Load, button1_Click, button2_Click, button3_Click,
    listBox1_SelectedIndexChangedをイベントとして指定してください。

  20. ランダムドットの表示

    立体視のためのランダムドットを表示するプログラムです。
    画面上で立体視できない人は画面キャプチャ等で
    印刷してチャレンジしてみましょう。
        拡大画像
    ランダムドットの表示

  21. 反復関数系によるシダの葉の描画

    反復関数系によるシダの描画です。

    Formに, button1を配置し,form1_Load, button1_Clickをイベントとして指定してください。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

    ここに示した例以外の関数系も確かめてみましょう。

  22. 陰線消去

    高さデータを陰線消去して3次元表示します。



    form1_Loadをイベントとして指定してください。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

    高さ[numX,numY]の値を変更して実行してみましょう。

  23. Jag配列による集合演算

    C#特有のJag配列による集合演算の定義例です。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  24. 色地図と等高線の表示

    国土地理院発行の数値地図(50mメッシュ)を読み込んで等高線を描くプログラムです。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  25. シューティングゲーム

    DirectXで音を鳴らせていますので、効果音が必要な方は、
    DirectXをインストール後、「// for DirectX」のコメントがついている行の
    コメントを削除(先頭の//を削除)してください。

    【実行時のキー操作】
    @左右カーソルキー  砲台の左右移動
    Aスペースキー    ミサイル発射
    B[esc]キー      ゲーム再開

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。
    画像、音声ファイルはサブフォルダbin/Debug内の
    拡張子GIF, wavのファイルを使うか、自分で用意してください。

  26. BitArrayによる集合演算の表現例

    BitArrayを使えるようにするためにusing System.Collections;を追加してください。
    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  27. 文字列照合における力任せ法,KMP法,BM法の比較
  28. 文字列照合問題での3種類の手法を比較します。
    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  29. コッホ曲線
  30. 最も簡単な描画プログラムの例となっています。
    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  31. 平面充填問題

    平面充填問題のC#による表現例です。



    button1を貼り付けイベントとしてbutton1_Clickを指定,
    さらに、form1_Loadをイベントとして指定してください。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

  32. 3Dモデル5手法の比較

    3Dモデル表示法の5手法のC#による表現例です。



    button1〜button5を貼り付けイベントとしてbutton1_Click〜button5_Clickを指定,
    さらに、checkBox1を貼り付けてください。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

    立体座標系から平面座標系への変換の簡単な例題は以下が参考になります。

    【立体から平面座標系への変換】

  33. レイトレーシング法による立体表示

    レイトレーシング法で簡単な立体を描くC#のプログラム例です。

    単体の球体球体と床映込みのある球体
    コントロール等の配置はソースプログラムの先頭で説明しています。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

    【手法の概要】

    視点を中心に、2次元方向内の微小な角度(画角)ごとのそれぞれの方向から
    受け取る光線に対して算術演算を行うことによって、光線を逆方向に追跡し、
    その方向に見える光を判定することで描画を行う。


  34. 立体図形の演算表示

    立体図形の演算での表示プログラム例です。

    和(合体)A ∪ B積(共通)A ∩ B差(カット)A − B
    コントロール等の配置はソースプログラムの先頭で説明しています。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。

    【手法の概要】

    以下の表のように演算相手の内部/外部を判定して表面を描画する。

    演算の種類表記描く部分(Aの表面)描く部分(Bの表面)
    和 (合体)A ∪ BBの外部(!in(B))Aの外部(!in(A))
    積 (共通)A ∩ BBの内部( in(B))Aの内部( in(A))
    差(カット)A − BBの外部(!in(B))Aの内部( in(A))

    描く部分がA, B 共に存在する場合、視点に近いほうを描く。


  35. 二次曲面(quadric surface)の表示

    二次曲面を表示するプログラム例です。
    コントロール等の配置はソースプログラムの先頭で説明しています。

    C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
    その他のバージョンではソースプログラムをコピーしてお使いください。


  36. 改良型マージソート(improved Merge Sort)

    マージソートの再帰呼び出しを省略するソートのプログラム例です。
    以下は、再帰的なマージソートです。 改良型マージソートと比較することをおすすめします。

    再帰版マージソート

  37. ヒープソート(Heap Sort)

    ヒープソートのプログラム例です。

  38. 度数ソート(Frequency Sort)

    度数ソートのプログラム例です。

  39. シェルソート(Shell Sort)

    シェルソートのプログラム例です。

  40. クィックソート(Quick Sort)

    クィックソートのプログラム例です。

  41. シェーカソート(Shaker Sort)

    シェーカソート(あるいは双方向バブルソート:Bidirection Bubble Sort)の
    プログラム例です。

  42. 配列による集合演算

    配列による集合演算のプログラム例です。