Transcript pptファイル
ファーストイヤー・セミナーⅡ
第14回 2次元グラフィックス(2)
グラフィックの利用(復習)
最初に #include
直線を描く関数(復習)
Line(x1, y1, x2, y2) は点(x1, y1)から点(x2, y2)まで直 線を引く関数である Line(10, 10, 50, 50) なら点(10, 10)から点(50, 50)まで直 線が引かれる
直線の設定(復習)
直線を描く場合には、 (1)直線の色を指定する SetLineColor( 色指定 ); (2)直線の形式・太さを指定する SetLineStyle( 形式,太さ ); (3)線を描く Line (始点のx座標, 始点のy座標, 終点のx座標, 終点のy座標) とする。
色指定
色指定は以下のようになる。 色の指定は、実際に描画する部分の直前におこなうこと。
グラフィックの位置(復習)
グラフィックでは左上が(0, 0)となり、x 座標は右へ、y 座 標は下へ行くほど大きくなる (0, 0) x 軸 (10, 10) (50, 50) y 軸
グラフの描画
y = sin x のグラフ(正弦波)を描いてみよう ←math.h
も必要 ← 「 P 」をあらかじめ定義し、プログラム中で使う 角度(°)をラジアンに変換するためのもの ←x 軸、 y 軸の描画 ← 線の色を赤に変更 ← 角度を 1 度ずつ変化させ、 前の点 (x1, y1) から 次の点 (x2, y2) まで線を引く
#define の利用
プログラム中で使用する定数を、あらかじめプログラム ファイルの最初の部分(#include~の後)に書いておくこ とができる 書式: #define 変数名 例) #define Pai 数値 3.14159
ケタの長い数値や、頻繁に出てくる定数などをあらかじ め書いておくと便利
表示例
まずグラフの軸を引き、そのあと少しずつ (x1, y1)、(x2, y2) を 計算しながら連続線を引いていく (50,20) (50,200) (50,370) (700,200)
練習
y = cos x のグラフ(余弦波)を描け
様々な図形の描画
四角形を描く関数 Rectangle (x1, y1, x2, y2); 左上の座標が (x1, y1)、右下の座標が (x2, y2) の四角形 円(だ円)を描く関数 Ellipse (x1, y1, x2, y2); 左上の座標が (x1, y1)、右下の座標が (x2, y2) の四角形 に内接する円(だ円) 図形内部の色指定 SetFillColor ( 色指定 ); 色指定をしない場合は黒で塗りつぶされる
練習:様々な図形の描画
赤い四角形と青い円を描いてみよう
ボールの運動
四角形の中をボールが跳ね回るプログラムを作ってみよう プログラムが長いので資料の方も参照して作成してください プログラム冒頭部分 ←rand 関数を使うので stdlib.h も入れる L: 四角形の左側の R: 四角形の右側の x 座標 x 座標 T: 四角形の上側の B: 四角形の下側の y 座標 y 座標 r: ボールの半径
ボールの運動(2)
メイン関数冒頭部分 x, y : ボールの中心座標 vx, vy : ボールの進行方向と進む距離 x, y, vx, vy の初期化 vx, vy はマイナスの場合もありえるので ランダムに( 50 %の確率で)- 1 をかけておく
ボールの運動(3)
繰り返し部分 白い四角形を描く x, y の位置を計算する x 軸方向に vx 、 y 軸方向に vy だけ移動 x, y の位置を判定し、枠をはみ出したら 枠内に戻し、進行方向を変える ( 左へはみ出したら右へ、 下へはみ出したら上へ、 というように)
ボールの運動(4)
ボール描画部分 塗る色を赤色に設定 x, y を中心に半径 円を描画 r の ↑ このままだと実行が早すぎて見えないので 無意味な計算をして時間稼ぎ (普通は sleep 関数などを使いますが、 Ultra-C では使えないので苦肉の策 ちょっと恥ずかしい力技なので将来 プログラマなどになる人はマネしないように)
第14回のレポート
以下のプログラムを作成し、メールで提出してください 先程のボールの運動で、壁にぶつかるごとに色 がボールの色が変わるようにしてみてください 考え方:vx, vy の正負によって進行方向を4つに 分け、if 文を使ってボールの色を変えてみる