[自己紹介][工学を学ぶ][電子工作][プログラミング入門]

C言語用簡易グラフィックライブラリを公開しました。

C言語によるプログラミング入門

このページでは担当した講義用に作成した資料等から抜粋してプログラミング(C言語)の入門用の資料を自習用に公開します。お役に立てれば幸いです。ただし、

をしないでください。このページへのリンクを張っていただいたり、メールで友人に知らせていただくのは、ご自由にどうぞ。なお、講義等で使いたいという奇特な方がいらっしゃればご連絡ください。また誤りやご感想があればお知らせください。

1 C言語入門

1.1 はじめに

講義では、開発環境として Windows PC 上の Code::Blocks を利用しました。以下に自習用として、配布資料と演習問題に必要なソースファイルを公開します。

1.2 少し遊んでみる

1.2.1 音を出して遊んでみる

押したキーによって違う音を出すプログラムを作ってみました。ex-beep.cです。ゲームのビープ音がします。キーと音の対応は、ソースファイルを眺めてください。 プログラムで使っている関数は以下の通りです。

1.2.2 マウスカーソルで遊んでみる

マウスカーソルを移動させるプログラムを2つ作ってみました。ex-mouse.cex-mouse2.cです。ex-mouse.cはプログラムを実行するとマウスカーソルを(0,0)(左上)に移動します。ex-mouse2.cはプログラムを実行中にマウスカーソルのx座標が1000を超えるとカーソルを左端に移動します。使用している関数は以下の通りです。

1.2.3 演習問題

1.3 自習用書籍

以下の本が役に立つのではないかと思います。

2.ODEで遊んでみよう

ODE は Open Dynamics Engine の略で、動力学計算(大学で習う剛体の運動計算)のライブラリです。物体の運動(等速直線運動、投下速度運動、回転など)の計算、衝突・摩擦の計算、グラフィカルな表示の3つのライブラリが収められています。ODEを使うと簡単に物理シミュレーションで、ゲーム(ボーリングやドミノなどなど)を作ることが出来ます。

2.1 ODE で遊んでみる

ODE を使って物理シミュレーションをする簡単なサンプルプログラムhello-ode.cppで遊んでみてください。実行すると赤いボールと青いボールが表示されます:

キーボードから以下の操作が出来ます。 うまい位置で赤いボールを落とすと、青いボールに衝突します。またウィンドウ内でマウスをクリックしドラッグすると視点が変わります(ODEのDrawStuffの機能)。 2.2 と 2.3 にインストールとコンパイル方法を書いています。以下が演習問題などです。 上のサンプルや演習を基に、いろいろな物体(ボーリングのピンやドミノ、的、玉)を配置して操作できるようにしてみてください。すると、物体の運動や衝突判定などは ODE にお任せして、 ボーリング、ドミノ、射的、迷路などの物理シミュレーションを簡単に作成できます。

2.2 ODEのインストール

Code::Blocks を使った ODE の開発環境は、 http://demura.net/9ode/3850.html(出村先生の文章)の通りにすると準備できます。

2.3 Code::Blocks のプロジェクトの作り方

2.3.1 自分のプログラム用のディレクトリを用意する(プロジェクトを作る準備)

ODEをインストールしたディレクトリ (c:\ode-0.11.1) の中に myprogs というディレクトリを作ります。この作業は1回だけで OK です。「ディレクトリ」と「フォルダ」は同じものと思ってOKです。

2.3.2 プロジェクト用のディレクトリを用意する

c:\ode-0.11.1\myprogs の中に、プロジェクト用のディレクトリを作ります。新しいプロジェクト(プログラム)を作るときに毎回作ります。ディレクトリの名前は、英数字のみを使うこと。今回は hello というのを作ってみます。

2.3.3 プロジェクトのテンプレートをコピーする

ODE のライブラリを使うためのプロジェクトを作ります。Code::Blocks のプロジェクト作成の手順で作っても良いのですが、簡単に出来上がったものをコピーして使ってしまいます。

  1. template090611.zipをダウンロードして適当なディレクトリに展開します。
  2. 展開してできた template.cbp を先ほど作った hello ディレクトリ (c:\ode-0.11.1\hello) にコピーします。

2.3.4 ソースファイルを登録してコンパイルする

コンパイルするプログラムをプロジェクトに登録します。ここでは hello.cpp を登録してみましょう。 hello.zipをダウンロードして、展開してできた hello.c を先ほどのディレクトリ (c:\ode-0.11.1\myprogs\hello) にコピーしておいてください。

ソースファイルの登録は次のようにします。

  1. template.cbp をダブルクリックして Code::Blocks を起動します。
  2. メニューから「プロジェクト」→「ファイルを追加」をクリックし、hello.cpp を追加します。
  3. いつも通り「ビルドして実行」ボタンを押せば、コンパイルが始まり実行されます。

ODE は C++ ですが、基本は C と変わらないので怖がる必要はありません :-)

2.3.5 プロジェクトタイトルと出力ファイル名を変えよう(もっとかっこよく)

上の手順で作ると template.exe というのが出来てしまいます。自分でつけた名前にするには次のようにします。

  1. Code::Blocks を起動する前に template.cbp と template.layout の名前を、適切な名前 hello.cbp と hello.layout に変えておきます。
  2. 「プロジェクト」→「プロパティ」をクリック
  3. 表示されたウィンドウの「プロジェクト設定」タブで、タイトルを template から、適切な名前、たとえば hello に変える
  4. 「ビルドターゲット」タブで、出力ファイル名が template.exe になっているので、適切な名前、たとえば hello.exe に変える

2.4 参考資料

ODE について、インターネットでは以下が参考になります。

3 その他のメモ

3.1 Code::Blocks のデバッグ機能がうまく動かない

Code::Blocks でデバッグ機能を使うことが、できない場合には以下を確認してみてください。

デバッグ機能を使っていておかしくなったときは、タスクマネージャから gdb.exe をとめてみるとよい。

3.2 Code::Blocksと日本語文字

printf関数で日本語を使うと全部の文字が文字化けして表示されることがあります。そのときは、Code::Blocks のメニューの「編集」→「ファイルエンコーディング」で、「システムデフォルト」を選択して、「ファイル」→「保存」をクリックしてから、再度ビルド・実行してみてください。「保存」しないと、うまく変更が反映されないことがあるようなので、注意してください。
特定の文字がうまく表示できないのは、漢字コードの関係(shift-jisとgccの組み合わせ)です。簡単な対応方法はないので、その文字を使わないようにしてください。

3.3 ODEの衝突検出

ODEの衝突検出は、計算の高速化などのためか円柱(cylinder)同士の衝突や、円柱(cylinder)とカプセル(capsule)の衝突などが検出されません(すり抜けてしまう)。詳しくは次のページの表を見てください。


戻る

Copyright (c) 2009 Noriaki Mitsunaga
(本を出しました: はじめてのPICアセンブラ入門 | センサとデジカメで遊ぶ電子工作入門 | 玄箱PROと電子工作で遊ぼう )