DirectX勉強会 第5回.

Slides:



Advertisements
Similar presentations
シミュレーション論Ⅰ 第 7 回 待ち行列のシミュレーション(2). 第 6 回のレポート(解答例) 乱数表より乱数を記入し、到着間隔・サービス時間にした がってグラフを作成する 例) 最大待ち人数:2人 最大待ち時間:5分 平均待ち時間:3分.
Advertisements

イベント イベント: マウスの操作、キーボードの操作、ファイル操作など システムやユーザーからの入力・出力のこと
2001年11月更新 2章 Windowプログラムの構成 Windowsプログラムおよび       PiasTkプログラムの基本構造.
【事例演習1】 CGプログラム基礎      解 説        “Windowsプログラムにおける      ダイアログボックスの作成方法”    
初年次セミナー 第14回 2次元グラフィックス(2).
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
HSPでのミニゲーム作成 早稲田実業学校PC班 Y氏.
基礎プログラミングおよび演習 第4回 担当:花岡 5階522/520.
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
今日の内容 前回の復習 前回の演習の復習 視点操作の実現方法(復習) 視点操作の拡張 変換行列によるアニメーション 演習課題.
Javaでゲーム  山本拓弥.
基礎プログラミングおよび演習 第9回
16.3 関数と構造体 構造体ポインタ 地底探査ゲーム
プログラミング序論演習.
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
【事例演習2】               2001年11月更新      「最短経路探索 (1)」           その1      解 説    “最短ルート探索のアルゴリズム”
アプリケーション共有機能 〈参考〉 (図1) (図2)
ゲームプログラミング体験演習
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
情報学部 プログラミング体験教室 (初級編)
プログラミング演習3 第2回 GUIの復習.
1 Macの基本操作 1-5 文字入力(1/4)  (1)Windows風のキー設定
第四回 ゲーム                 05A1054         前田嵩公.
第7回 条件による繰り返し.
Borland Delphi 6 でビジュアルプログラミング
Cプログラミング演習 中間まとめ2.
DirectX 勉強会 第4回.
EVENT プログラミングのスタイル 手続き型: ある決められた場所から開始され, その後は純粋に上から下に流れて行く方式. 実行したいことを, 順番に記述してゆく. 逐次処理形式コーディングの方法である。 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32やmake 手続き型.
マルチスレッド処理 マルチプロセス処理について
MATLAB測位プログラミングの 基礎とGT (2)
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
OpenGLを使ったプログラム作成 澤見研究室
プログラミング演習3 第2回 GUIの復習.
アルゴリズムとデータ構造勉強会 第6回 スレッド木
第7回 条件による繰り返し.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
プログラミング入門第6回 ~レゴロボットのプログラミング6~
プログラムの制御構造 配列・繰り返し.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
疑似乱数, モンテカルロ法によるシミュレーション
岡村耕二 TCP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
ゲームプログラミング体験演習 :30-14:15 九州産業大学 情報科学部 米元.
Windowsアプリケーション プログラミング
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
C#プログラミング実習 第2回.
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
高度プログラミング演習 (11).
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
C言語講座 制御(選択) 2006年 計算技術研究会.
WindowsグラフィックスとDirectX
プログラミング基礎演習 第4回.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
GUI部品とイベント処理の例 マインスィーパもどきの作成 倉敷芸術科学大学 産業科学技術学部 梶浦文夫.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
3.1 シューティングゲームの当たり判定 当たったら死亡.
ソフトウェア制作論 平成30年10月17日.
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
6.3 インタプリタ (1)インタプリタ(interpreter)とは
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

DirectX勉強会 第5回

座標、物体の位置について y 弾 z x target player (0, 50, 200) 床

移動する物体について (target) 位置の管理 移動 (プログラム Line468~) _TpositionX[j] : j番目のtargetのx座標 _TpositionY[j] : j番目のtargetのy座標 _TpositionZ[j] : j番目のtargetのz座標 移動 (プログラム Line468~) 一回描画する度に、x座標を更新していく _TpositionX[j] = _TpositionX[j] + “移動距離”;

移動する物体について (target) 描画 (プログラム Line446~) D3DXMatrixRotationY(&matRotateY,(float)timeGetTime() / 1800.0f); D3DXMatrixRotationX(&matRotateX,(float)timeGetTime() / 920.0f); D3DXMatrixTranslation(&matTrans,_TpositionX[j], _TpositionY[j], _TpositionZ[j]); matWorld = matRotateX * matRotateY * matTrans; lpD3DDEV->SetTransform(D3DTS_WORLD,&matWorld); // 使用する頂点バッファの設定 lpD3DDEV->SetStreamSource(0,vb[i],sizeof(LVERTEX)); // 描画する lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);

移動する物体について (弾) 位置の管理 移動 (プログラム Line517~) 描画 (プログラム Line500~) _BpositionX[j] : j番目の弾のx座標 _BpositionY[j] : j番目の弾のy座標 _BpositionZ[j] : j番目の弾のz座標 移動 (プログラム Line517~) 一回描画する度に、y座標を更新していく _BpositionY[j] = _BpositionY[j] + “移動距離”; 描画 (プログラム Line500~)

キー入力の処理について プログラム全体の流れを説明 主な関数 WinMain() procMain() Move() DrawMain()

主な関数 procMain() WinMain() キー入力はあるか? ウィンドウの初期化 Dinputの初期化 など メインウィンドウループ Move() 後処理 キー入力により、物体の座標を変える DrawMain() 描画する

キー入力が無い間 procMain() WinMain() キー入力はあるか? ウィンドウの初期化 Dinputの初期化 など メインウィンドウループ Move() 後処理 キー入力により、物体の座標を変える 繰り返し DrawMain() 描画する

キー入力が起こった時 procMain() WinMain() キー入力はあるか? ウィンドウの初期化 Dinputの初期化 など メインウィンドウループ Move() 後処理 キー入力により、物体の座標を変える DrawMain() 描画する

メインウインドウループ (WinMain()の中) PeekMessage() メッセージが送られてきているかどうか調べる

メインウインドウループ (WinMain()の中) MSG msg; while (!end) { // メッセージが来ているか? if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) // メッセージの処理 TranslateMessage(&msg); DispatchMessage(&msg); } else // 描画処理 DrawMain(); windows経由で、procMain()を呼び出す DrawMain()を 呼び出す

procMain() メッセージがあると、Windowsから、この関数が呼ばれる msgに入っている値により、処理を決定できる WM_CLOSE : ウィンドウ上部の[×]ボタンを押したとき等に、この値になる。  →アプリケーションを終了する処理をする WM_KEYDOWN : キーが押されたときに、この値になる  →今回は、Move()を呼び出している

procMain() LRESULT CALLBACK procMain(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) case WM_CLOSE: // 終了フラグ end = 1; return 1;      case WM_KEYDOWN:           Move();           break;      } return DefWindowProc(hWnd,msg,wParam,lParam); } キーが押されたので、Move()を呼び出す

Move() DirectInputを利用して、どのキーが押されたかを判定する 押されたキーに応じて、playerの位置を動かしたり、弾を発射したりする

Move() キーqが押されたので、終了処理をする キーhが押されたので、 playerの位置を変える // キー入力を受けとって、物体の位置を移動する int Move() {   ・・・ BYTE diKeyState[256]; //この構造体にデータを取得 hr = g_pDIDevice->GetDeviceState(sizeof(BYTE)*256, &diKeyState[0]); if (SUCCEEDED(hr)) { //直接データの取得に成功 if (diKeyState[DIK_Q] & 0x80) {     ・・・ } else if (diKeyState[DIK_H] & 0x80) { //「h」が入力された場合は、playerが左へ移動 _PpositionX = _PpositionX - 50.0f;   else if (diKeyState[DIK_SPACE] & 0x80) {   } キーqが押されたので、終了処理をする キーhが押されたので、 playerの位置を変える スペースキーが押されたので、弾を発射する

キー入力の処理について (player) 位置の管理 移動 (プログラム Line326~) _PpositionX : playerのx座標 _PpositionY : playerのy座標 _PpositionZ : playerのz座標 移動 (プログラム Line326~) 押されたキーによって、x座標(左右の移動)かz座標(手前・奥の移動)を更新する _PpositionX = _PpositionX + “移動距離”; _PpositionZ = _PpositionZ + “移動距離”;

キー入力の処理について (player) 描画 (プログラム Line483~) // World 行列設定 D3DXMatrixTranslation(&matTrans, _PpositionX , _PpositionY, _PpositionZ); matWorld = matTrans; lpD3DDEV->SetTransform(D3DTS_WORLD,&matWorld); // 使用する頂点バッファの設定 lpD3DDEV->SetStreamSource(0,vb[i],sizeof(LVERTEX)); // 描画する lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);

実習 game.cppを改良してみる。 例 これ以外にもいろいろとあると思うので、自由にやってみてください 物体のtexture、透過度、形を変えてみる 視点を変えてみる 弾、targetの速さを変えてみる 弾の軌道を変えてみる(斜めに飛んでいく 等) playerを移動させるキーを変えてみる これ以外にもいろいろとあると思うので、自由にやってみてください