Advanced Search
Search Results
275 total results found
3つの基本的なソートアルゴリズム
3つのソートを手でやってみよう 今日やること これから、同じ6個の数字を使って、 バブルソート 選択ソート 挿入ソート の3種類の並べ替えを、プログラムを書かずに自分の手で実行します。 最初の数字は、すべて同じです。 6 2 5 1 4 3 目標は、小さい順に 1 2 3 4 5 6 と並べることです。 この課題では、まだプログラムの変数や繰り返し処理は使いません。 まずは、 「数字を並べ替えるとき、実際にどんな作業を繰り返しているのか」 を自分の手で確かめてみましょう。 1.バブ...
3つの基本ソートをIPA式疑似言語に
3大ソートを日本語からIPA疑似言語へ このワークでやること これまでに、 バブルソート 選択ソート 挿入ソート を、自分の手で実際に並べ替えました。 ここからは、手でやった処理を 日本語で確認する ↓ 必要な情報に名前を付ける ↓ IPAの疑似言語へ直す という順番で表現していきます。 この授業では、配列の要素番号は 0から始まるものとします。 data[0] data[1] data[2] ... 2つの値を交換するときは、 swap(data[a], data[b]) のように表します。 1.バブ...
最後のまとめレポート(PPTスライド作成)
ゲーム研究 最終まとめPPT課題 課題の目的 これまでの授業では、ゲームを分析するために、次のような観点を学んできました。 ルール 報酬設計 リスク・失敗条件 操作・入力 出力 視覚フィードバック 聴覚フィードバック 触覚フィードバック UI 難易度とバランス AI・行動制御 当たり判定や更新処理などのゲーム処理 プログラマとして力を入れたい処理 今回の課題では、これまでのワークで調べたゲームを使っても、新しくゲームを調べてもかまいません。 授業で学んだ分析項目を使って、自分が作ってみたいジャンルの面白さをPo...
当たり判定やろう
球とAABBの当たり判定 ゲームの当たり判定では、複雑なモデルをそのまま比較するのではなく、扱いやすい形で近似して判定することがあります。 代表的な形が 球(Sphere) と AABB です。 1.球と球の当たり判定 球は、中心と半径で表せます。 2つの球がちょうど接するとき、中心間距離 (d) は半径の合計と等しくなります。 $$ d=r_A+r_B $$ したがって、 $$ d\leq r_A+r_B $$ なら、2つの球は接触または重なっています。 当たり判定では平方根を求めず、 $$ d^2\leq(...
第1部 変数と配列の基本
このワークの目標 ゲームでは、体力・得点・座標・残り時間など、たくさんの値を保存しながら処理を進めます。 このワークでは、値を保存するための変数と、複数の値をまとめて扱う配列について確認します。 変数名・値・アドレスを区別できる C言語の代表的な型を使い分けられる 整数・実数・文字・文字列の違いを説明できる 初期化と代入の違いを説明できる 代入による値の変化を追える 配列の要素を添字で指定できる 配列の要素への代入を追える 要素数と最後の添字を区別できる 1.変数とは何だろう 1-1.変数は、値を入れておく箱...
第2部 3つの基本構造
このワークの目標 どれほど複雑に見えるアルゴリズムでも、基本となる構造は次の3つです。 順次 選択 反復 このワークでは、プログラムの細かな書き方ではなく、処理の組み立て方に注目します。 順次・選択・反復の違いを説明できる 3つの基本構造を組み合わせてアルゴリズムを作れる 複数の処理を一つの大きな処理ブロックとして見られる 大きな処理ブロックの中を、さらに細かな処理へ分けられる アルゴリズム全体を、大きな処理ブロックの順次として捉えられる 1.アルゴリズムを作る3つの基本構造 アルゴリズムは、処理を実行す...
第3部 アルゴリズムの記述方法
このワークの目標 アルゴリズムは、同じ処理でも複数の方法で表せます。 このワークでは、次の3つの記述方法を練習します。 日本語で書く フローチャートで書く IPAの基本情報技術者試験で使われる疑似言語で書く さらに、書かれたアルゴリズムを上から順にたどり、変数や配列の値がどのように変化するかをトレースします。 1.同じアルゴリズムを3通りで表す 記述方法が違っても、表している処理の内容は同じです。 記述方法 特徴 日本語 特別な記号を知らなくても読める フローチャート 処理の分岐や繰り返しを...
第4部 三大馬鹿ソート
このワークの目標 このワークでは、次の3つの基本的なソートを扱います。 バブルソート 選択ソート 挿入ソート 授業では、仕組みが単純で、無駄な比較や交換も多いこの3つを「三大馬鹿ソート」と呼びます。 最初から疑似言語を暗記するのではなく、次の順番で進めます。 自分の手で並べ替える ↓ 1回の比較や交換を言葉にする ↓ 必要な位置や回数に名前を付ける ↓ IPA疑似言語で書く このワークでは、配列の要素番号は 0から始まるものとします。 data[0] data...
第5部 ゲームの基本的な構成
このワークの目標 ゲームは、入力・更新・描画を何度も繰り返して動いています。 このワークでは、次の内容を確認します。 ゲームループの処理順を説明できる Initialize()、Update()、Draw()、Release()の役割を区別できる タイトル・プレイ・クリア・ゲームオーバーの状態遷移を追跡できる 現在の状態に応じて、Update()とDraw()の処理を切り替えられる フレーム・FPS・デルタタイムの関係を説明し、移動量を計算できる 1.ゲームループ 1-1.ゲーム全体の基本形 ゲームは、最初か...
第6部 模擬試験
アルゴリズム 模擬試験 氏名:__________________ 得点:______/100点 注意 第1部から第5部までのワークを見ずに解こう 配列の添字は0から始まるものとする 疑似言語は、授業で扱ったIPAの基本情報技術者試験の表記に合わせる 計算問題では、答えだけでなく途中の式も書く すべて解き終わるまで、最後の模範解答を開かない 大問1 変数と配列の基本【25点】 問1 値の種類とC言語の型【8点】 次の値について、値の種類を「整数・実数・文字・文字列」から選び、C言語で使用する型を書こう。 ...
01.座標・ベクトル
これまでの授業で扱った数学を、ゲームで何に使うのかと結び付けながら振り返ろう! このワークでは、長い公式を丸暗記することよりも、何を求めたいのか → どの数学を使うのか → 求めた値をゲームのどこで使うのかを確認します。 1.座標とアフィン変換 ゲームのモデルは頂点の座標からできています。 そのため、「動かす」「回す」「大きくする」といった処理は、どれも座標を別の座標へ変換する処理として考えることができます。 このような座標の変換をまとめて扱うものの1つが、アフィン変換です。 アフィン変換には、代表的なものとして...
02.行列・角度・視界判定
4.行列で変換をまとめよう 行列を使うと、平行移動・回転・拡大縮小などの変換を、同じ仕組みで扱ったり、複数の変換をまとめたりできます。2Dの回転では、授業で扱った $\cos\theta$ と $\sin\theta$ が回転行列の中に入ります。 $$ R=\begin{bmatrix} \cos\theta & -\sin\theta\ \sin\theta & \cos\theta \end{bmatrix} $$ Q16.単位行列の役割は? 単位行列を座標やベクトルに掛けたときの説明として正しいものを選んで...
03.球とAABBの当たり判定
8.球とAABBの当たり判定 このページでは、授業で扱った3種類の当たり判定を、何を比べればよいかという視点で整理します。 球 vs 球 AABB vs AABB 球 vs AABB Q34.球は何で表す? 球の当たり判定を表すために必要な情報を選んでください。 A.中心座標と半径 B.最小座標と最大座標だけ C.頂点を必ず8個 D.回転角だけ 答え A.中心座標と半径 球は中心 $C$ と半径 $r$ で表せます。 Q35.球同士が当たる条件は? 球Aの中心を $C_A$、半径を $r_A$、球Bの中...
04.補間・スプライン
11.LERPで途中を作ろう LERP(線形補間)は、開始値 $A$ と終了値 $B$ の間を、補間係数 $t$ を使って求める方法です。 Q48.補間係数 $t$ の意味を確認しよう $P=(1-t)A+tB$ について対応させてください。 $t$ $P$ $t=0$ ______ $t=0.5$ ______ $t=1$ ______ 選択肢:A・AとBのちょうど中間・B 答え $t=0$ → A $t=0.5$ → AとBのちょうど中間 $t=1$ → B Q49.LER...
01.キャラクターAI・FSM
これまでの授業で扱ったゲームAIの考え方・状態管理・探索を、ゲーム内での使い方と結び付けながら振り返ろう! このワークでは、長いプログラムを暗記することよりも、何を判断したいのか → どの仕組みを使うのか → その結果どんな行動につながるのかを確認します。 1.キャラクターAIの基本 ゲームのキャラクターAIは、周囲の情報を受け取り、その情報をもとに状態や行動を決めます。授業では、センサ → 判断 → 行動という流れで考えました。 Q01.AIの処理の流れを並べよう 次の処理を、キャラクターAIが行う基本的な順番...
02.Stateパターン・Behavior Tree
3.Stateパターンで状態ごとの処理を分けよう FSMを switch だけで作ると、状態が増えるほど1つのクラスに処理が集まりやすくなります。Stateパターンでは、状態ごとの処理を別クラスに分けることで整理します。 Q15.Stateパターンにすると何が変わる? 敵AIの状態が増え、Enemy::Update() の switch が長くなってきました。Stateパターンへ変更する考え方として最も適切なものを選んでください。 A.各状態の処理を IdleState、ChaseState などのクラスへ分け...
03.グラフ・木・BFS・DFS
5.ゲームAIで使う探索の考え方 ゲームAIには、ルール、状態、Behavior Tree、ゴール、効用など、さまざまな考え方があります。また、移動経路を求めるAIでは、グラフ探索が重要になります。 Q27.AIの考え方を具体例と対応させよう 次の例を、それぞれどのAIの考え方に近いか対応させてください。 例 考え方 「HPが30%未満なら逃げる」のような条件とルールで決める ______ Idle、Chase、Attack を切り替える ______ 「攻撃できる→攻撃、できない→追跡」の...
04.二分木・巡回・経路探索
8.二分木と二分探索木 二分木(Binary Tree)は、各Nodeが最大2つの子を持つ木です。二分探索木(Binary Search Tree: BST)では、値の大小関係を使って探索しやすい形にします。 Q41.二分木の特徴は? 二分木の説明として正しいものを選んでください。 A.各Nodeが持てる子は最大2つ B.必ずNodeが2個しかない C.必ず左の子しか持てない D.グラフではない 答え A Q42.二分探索木のルールを穴埋めしよう 一般的な二分探索木では、あるNodeの値を基準に、 小さ...
05.板書まとめ
板書まとめ これまでの授業で使った板書を、日付順にまとめています。 各日の板書を撮影順に並べているので、授業の流れを思い出しながら振り返ってみましょう。 日付 主な内容 5/26 キャラクターAI・視界判定 6/9 FSM(有限状態機械)・状態遷移 6/16 Stateパターン・ポリモーフィズム 6/23 State実装に必要なC++の補足 6/30 Behavior Tree導入 7/7 ゲームAIの分類・探索アルゴリズム 7/14 Behavior Treeの詳細 7/...
板書まとめ
これまでの授業で撮影した板書を、日付順にまとめています。試験前に「この日に何を扱ったか」を思い出すための振り返りページとして使いましょう。 📆4/21 📝まとめ 座標系とアフィン変換の導入。3Dモデルを頂点座標として捉え、座標を変換してモデルを動かす考え方を確認した。 平行移動・回転・拡大縮小など、座標を別の座標へ変換する処理をゲームのモデル操作と結び付けた。 2次元回転では $\cos$・$\sin$ を使い、$x' = x\cos\theta-y\sin\theta$、$y' = x\sin\theta+y...