インタラクティブ・ゲーム制作 <プログラミングコース>

Slides:



Advertisements
Similar presentations
UGUI を 使ってみよう ( 導入・紹介?編 ) 1. uGUI とは O Unity 4.6 から使えるようになった UI (ユー ザーインターフェース)システム O 8 月: Unity4.6 β uGUI 試用版公開 O 11 月: Unity4.6 uGUI 正式版公開 正式版公開で、 機能紹介ブロ.
Advertisements

プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
C言語システムプログラミング クラス分け 1の人:紫合クラス(302教室) 学籍番号を3で割った余りが、 0の人:冬爪クラス(208教室)
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
航空レーザ測量の 概要と利用法 西村徳真.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
技術トピックス 2014/08.
インタラクティブ・ゲーム制作 <プログラミングコース>
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
第6章 2重ループ&配列 2重ループと配列をやります.
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
MSBuild 色々出来るよ 2011/04/02 お だ.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
インタラクティブ・ゲーム制作 <プログラミングコース>
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
インタラクティブ・ゲーム制作 <プログラミングコース>
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
CG講座 裏 Mental-ray編.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
インタラクティブ・ゲーム制作 <プログラミングコース>
WPF、MVVMパターン構成.
プログラミング 平成23年12月21日 森田 彦.
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
前回の練習問題.
0.2 プロジェクトの準備 DXライブラリを使うための準備.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
第1章 いよいよプログラミング!! ~文章の表示 printf~
アルゴリズムとプログラミング (Algorithms and Programming)
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
nativeの基礎知識 「ポインタ」てなによ!?
精密工学科プログラミング基礎 第7回資料 (11/27実施)
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
標準入出力、変数、演算子、エスケープシーケンス
データ構造とアルゴリズム論 第9章 連結リスト
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プログラミング 平成24年12月11日 森田 彦.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
プロジェクト演習Ⅱ インタラクティブゲーム制作
第10回 関数と再帰.
プロジェクト演習Ⅱ インタラクティブゲーム制作
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
情報処理Ⅱ 小テスト 2005年2月1日(火).
C言語講座第5回 2017 構造体.
第5回 配列.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

インタラクティブ・ゲーム制作 <プログラミングコース> 第12回 Boostと数学

今日の内容 Boostの導入 今時C++を使うならやはり外せない 乱数やアルゴリズム周りなど、 AI構築に有用な機能も盛りだくさん

闇の魔術の粋を味わうがいい Boost入門

Boostとは 闇の魔術師達が築いた叡智の結晶 ある程度の機能はC++11として、 正式に採用されている 標準ライブラリのみでは不便な機能を補強 「俺の知ってるC++と違う」としか思えない言語の拡張 ある程度の機能はC++11として、 正式に採用されている Visual C++ 2010でも一部の仕様は搭載済み 不足も多いので、Boostを併用

導入方法 「Let’s Boost」を参照のこと 授業時間内のインストールは厳しいので、授業資料ページからもダウンロード可能 http://www.kmonos.net/alang/boost/ ここを見ておけば大抵なんとかなる 授業時間内のインストールは厳しいので、授業資料ページからもダウンロード可能 1.47のパッケージ(300MB) パスの設定は別添えの資料を参考に

すぐに使えそうな機能(1) boost::random srand()&rand()よりも手軽に精度の良い 乱数が使える オセロのAIにもオススメなのは、 「メルセンヌツイスター」で 「小さな整数の一様乱数」のパターン

すぐに使えそうな機能(2) BOOST_FOREACH 配列やリスト(コンテナ全般)に対して、 最初から最後まで1つずつ処理するような ループが、絶望的に綺麗に書ける 配列の場合だとこういうやつ for(int i = 0; i < arraySize; ++i) { array[i] = ほげ~; }

Listのループをスマートに これが こうなる for(ListIte ite = puttingList.begin(); ite != puttingList.end(); ++ite) { if((*ite).x > maxX) { choicePos = (*ite); maxX = (*ite).x; } foreach(CellPosition &pos, puttingList) { if(pos.x > maxX) { choicePos = pos; maxX = pos.x; }

是非使いましょう BOOST_FOREACHという名前だが、 foreachに直して使うのがおすすめ 詰め込んでいるのが配列でもvectorでもlistでも何でもイケちゃうあたりが 闇魔術

合わせると 事前にリストのサイズを得る 0~サイズ-1までの乱数を得る リスト名.size() 0~サイズ-1までの乱数を得る boost::random 整数のカウンタを用意し、 foreachでループしつつ、 乱数が指した順番の時点での値を 選んだ手として使う なんてやればモンテカルロの仕込みに

他にも使えそうなもの boost::thread boost::progress_timer モンテカルロの計算は並列化しやすい 一気に複数手のシミュレーションを進める 私は使う予定です boost::progress_timer あるスコープ内での所要時間計測に便利 コンストラクタとデストラクタを利用 そんな難しい実装ではない

オセロに使えるか分からんけど オススメ boost::bind,function,signals2 boost::lambda 「関数を自由に持ち運ぶ」ことができる signals2はイベントと関数呼び出しを 結び付けるのに非常に有用 boost::lambda 関数の中で関数を即席で作れちゃう やりすぎると別言語になるが、わざわざ 関数に分けたくないような時に便利

最終回にむけて ルール再確認

ルール(1) 対決用プロジェクト内のAIBaseクラスを 継承し、自分のアルゴリズムを実装 それ以外のファイルには手を加えてはいけない 外部ライブラリは原則利用可能 ただし「オセロAIライブラリ」みたいなルーチンを他者に 丸投げするようなものは不可 getHand()から参照できる情報以外は利用禁止 自分で作ったクラスの利用は可 1手の計算に使える時間は30秒まで

ルール(2) 難易度は4段階用意 提出期限は7/23(火)23:59まで 自分に合った難易度で挑戦してね! Sチャレンジができるのは最高難易度 漏れなくライブで実況します 提出期限は7/23(火)23:59まで 組み込みチェックなどが必要なので、 それ以降は受け付けません

To be continued…