第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)

Slides:



Advertisements
Similar presentations
形状デザイン 様々な形 制御構造.
Advertisements

情報処理演習 (秋学期・樋口担当) 2回目 10/1 日本工業大学 コンピュータリテラシーII.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
初年次セミナー 第14回 2次元グラフィックス(2).
初年次セミナー 第8回 データの入力.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
基礎プログラミングおよび演習 第4回 担当:花岡 5階522/520.
第2章 数値の入力と変数 scanfと変数をやります.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
プログラミング基礎I(再) 山元進.
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
第6章 2重ループ&配列 2重ループと配列をやります.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
情報 第2回:状態遷移 その2.
第7回 条件による繰り返し.
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
プログラミング入門 電卓を作ろう・パートIV!!.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング序論 2. n人のインディアン.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
第7回 条件による繰り返し.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
東京大学人間環境学専攻 奥田・橋本研究室 修士1年 相良 光志
デジタル画像とC言語.
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
プログラミング入門第6回 ~レゴロボットのプログラミング6~
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
Cプログラミング演習資料.
統計ソフトウエアRの基礎.
基礎プログラミング演習 第6回.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミングⅡ 第2回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
第6回:得点を表示しよう! (文字の表示、乱数)
ウェブデザイン演習 第6回.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
情報処理Ⅱ 2006年11月24日(金).
プログラミング基礎演習 第4回.
プログラミング演習I 数値計算における計算精度と誤差
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
情報処理Ⅱ 第2回 2004年10月12日(火).
情報処理Ⅱ 2005年11月25日(金).
プログラミング1 プログラミング演習I 第2回.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
情報処理技法(Javaプログラミング)1 第8回 同じ処理を何回も繰り返すには?
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
情報処理3 第3回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元) 2002年度ゲームプログラミング ゲームプログラミング 第3回:ボールを上下に動かそう!  (オブジェクトの移動、一次元)

物体を動かすしくみ 少しずつ座標をずらして表示すると、 動いているように見える 座標をずらして表示する為に 変数を使う。 2002年度ゲームプログラミング 物体を動かすしくみ 少しずつ座標をずらして表示すると、   動いているように見える 座標をずらして表示する為に   変数を使う。

変数(1) 数値を入れておくための箱 整数(int)、少数(float,double)、 文字列(char)などの種類(型)がある。 2002年度ゲームプログラミング 変数(1) 数値を入れておくための箱   整数(int)、少数(float,double)、   文字列(char)などの種類(型)がある。 使用する前に型の宣言が必要   int x; (整数型の変数xの宣言) 宣言は関数の最初に(javaと違う点)

変数(2) 変数の数値を「値」と呼ぶ 値の入れかた y = 100; などのように、= の右側に入れる数値を書く。 2002年度ゲームプログラミング 変数(2) 変数の数値を「値」と呼ぶ 値の入れかた   y = 100; などのように、= の右側に入れる数値を書く。 型の宣言と値の設定を初期値を同時に行う   こともできる   int y = 100; 初めて使う前に値(初期値)を入れておこう

変数(3) 値の使い方 関数の引数に sp_set ( sp , 0 , 100 , y , 1 ); 式の右辺に 2002年度ゲームプログラミング 変数(3) 値の使い方   関数の引数に     sp_set ( sp , 0 , 100 , y , 1 );   式の右辺に     num = y ;   (y の値をnumに入れる)   条件に     if ( y < 0 )   (もしy が0未満なら)

1、ボールを動かそう set_spの y 座標を変数 y を使って指定 whileの繰り返し(ループ)の中で y の値を少しずつ変えていく 2002年度ゲームプログラミング 1、ボールを動かそう set_spの y 座標を変数 y を使って指定 whileの繰り返し(ループ)の中で y の値を少しずつ変えていく    y = y + 1 ; (yに1を足す) 関数の最初で y を宣言することが必要

残像を消そう ボールの残像が出る理由 →前に描いたボールが残っている ボールを描く前に毎回画面を 真っ黒に塗りつぶそう 2002年度ゲームプログラミング 残像を消そう ボールの残像が出る理由   →前に描いたボールが残っている ボールを描く前に毎回画面を   真っ黒に塗りつぶそう 黒いbitmapを表示して塗りつぶす

真っ黒なビットマップの表示 前回の雛型以外の4行(ボール表示の準備と、ボール表示)を流用して、 2002年度ゲームプログラミング 真っ黒なビットマップの表示 前回の雛型以外の4行(ボール表示の準備と、ボール表示)を流用して、 真っ黒なbitmap(gp2.bmp)を表示させよう。   int bg;   bg=load_bmp("gp2.bmp",,,);   def_char(bg,,,);   sp_set(bg,,,);

2002年度ゲームプログラミング ひとやすみ 皆が残像なくボールを動かせるように   なるまで、しばし休憩。 元気のある人は先に進んでみましょう

反復運動(1) 上から下へ、下から上へを繰り返す。 下向き(↓)に動かす処理 y = y + 1; 上向き(↑)に動かす処理 2002年度ゲームプログラミング 反復運動(1) 上から下へ、下から上へを繰り返す。 下向き(↓)に動かす処理     y = y + 1; 上向き(↑)に動かす処理     y = y - 1;     y = y + (-1);  とも書ける

反復運動(2) y が変化する量も変数にしてみよう。 int dy; yが変化する量 y = y + dy ; yにdyを足す 2002年度ゲームプログラミング 反復運動(2) y が変化する量も変数にしてみよう。   int dy; yが変化する量   y = y + dy ; yにdyを足す dy が1の時、yが1づつ増える   →ボールが下に動く dy が-1の時、yが1づつ減る   →ボールが上に動く

反復運動(3) ボールが下まで来たら、dyの符号を反転 dy = -dy; (1だったら-1になる) ボールが上まで来たら、dyの符号を反転 2002年度ゲームプログラミング 反復運動(3) ボールが下まで来たら、dyの符号を反転     dy = -dy; (1だったら-1になる) ボールが上まで来たら、dyの符号を反転     dy = -dy; (-1だったら1になる) 「○○だったら××する」という処理   にはif文を使う

if 文(条件分岐) 「条件」を満たす時のみ「命令」を実行する。 if (条件) 命令; 実行する「命令」が複数ある場合は{}でくくる。 2002年度ゲームプログラミング if 文(条件分岐) 「条件」を満たす時のみ「命令」を実行する。    if (条件) 命令; 実行する「命令」が複数ある場合は{}でくくる。   if (条件){    命令1;    命令2; }

様々な条件 if(A==B) AがBと等しい if(A>B) AがBより大きい if(A<B) AがBより小さい 2002年度ゲームプログラミング 様々な条件 if(A==B) AがBと等しい if(A>B) AがBより大きい if(A<B) AがBより小さい if(A>=B) AがB以上 if(A<=B) AがB以下   if(A!=B) AとBが等しくない if(A) Aが0以外

2、ボールを反復させよう 以下のような構造になります while ( … ) { y = y + dy ; 2002年度ゲームプログラミング 2、ボールを反復させよう 以下のような構造になります   while ( … ) {     y = y + dy ;     yが0以下なら dy = - dy;     yが448以上なら dy = - dy;     ボール表示; }

3、跳ね返るとスピードUP yの変化の量を増やすとスピードUP →dyの絶対値を大きくしていく 跳ね返った時のみ 2002年度ゲームプログラミング 3、跳ね返るとスピードUP yの変化の量を増やすとスピードUP   →dyの絶対値を大きくしていく 跳ね返った時のみ   →if文{}の中にスピードUPの命令を足す 上で跳ね返った後のdyは正(+)   →さらに1足す 下で跳ね返った後のdyは負(ー)   →さらに1引く

4、背景を描こう gp2.bmpの中身を書き換えてみよう ボールの四隅が黒く表示されてしまう →黒い部分を表示しないようにしよう 2002年度ゲームプログラミング 4、背景を描こう gp2.bmpの中身を書き換えてみよう ボールの四隅が黒く表示されてしまう   →黒い部分を表示しないようにしよう 黒を透明にする命令   def_trans(sp,0);

5、床で弾んでいるように 引力を表現 常に下向きに加速する → dy = dy + 1; 跳ね返り係数を表現 2002年度ゲームプログラミング 5、床で弾んでいるように 引力を表現   常に下向きに加速する    → dy = dy + 1; 跳ね返り係数を表現   跳ね返った瞬間にスピードが減少する    → 跳ね返りのif文で dy を遅く