...

PDF-10

by user

on
Category: Documents
5

views

Report

Comments

Description

Transcript

PDF-10
2009年度 デザイン情報学科 情報処理III
7月の課題
インタラクティブなゲームの実装
ボールの動作
マウスによるラケットの動作
ブロックの生成
Step 10
「ブロック崩し」の部品
ボール
直径10pixelの円
ラケット
横60pixel × 縦10pixel,マウスにより左右に移動
ブロック
レポートはA4用紙に作成
書式は自由(ただし5月・6月の課題に準じる)
書式は自由(ただし5月
6月の課題に準じる)
締切:7/24(金) 午後4時00分
場所:1階レポート提出ボックス
2009年度デザイン情報学科 情報処理III
状態遷移
横50pixel × 縦20pixel,28個(7個×4段)
壁(フィールド)
横400pixel × 縦600pixel
2009年度デザイン情報学科 情報処理III
状態遷移図
スタート画面
「ブロック崩し」の表示
クリックされたらゲーム画面へ
ゲーム画面
ゲーム本体の実行
すべてのブロックがなくなればクリア画面へ
3回失敗すればゲームオーバー画面へ
クリア画面
クリア画面
スタート画面
「Clear」の表示
クリックされたらスタ ト画面へ
クリックされたらスタート画面へ
ゲーム画面
ゲームオーバー画面
ゲ
オ
画面
ゲームオーバー画面
「Game Over」の表示
クリックされたらスタート画面へ
2009年度デザイン情報学科 情報処理III
インタラクティブなゲーム
2009年度デザイン情報学科 情報処理III
1
2009年度 デザイン情報学科 情報処理III
ゲーム画面
Step 10
ゲーム画面内の状態遷移図
初期設定
「ブロック」の配置
ゲーム本体
「ボール」の移動
「ラケット」の移動
「ラケット」と「ボール」の当たり判定
「ブ ク と「ボ ル の当たり判定
「ブロック」と「ボール」の当たり判定
ゲーム終了判定
クリア画面へ
すべてのブロックが
なくなったら
初期設定
ゲーム本体
残りのボール
がなくなったら
ゲーム本体を繰り返す
ゲームオーバー画面へ
2009年度デザイン情報学科 情報処理III
Flashによる実装
Flash
による実装
状態→フレーム
状態遷移→フレームの移動
モジュール
一つ一つのフレーム
「ボール」
「ラケット」
「ブロック」
ブ ック」
2009年度デザイン情報学科 情報処理III
ゲーム画面を作る
横 400pixel
縦 600pixel
p
フレームレート 60fps
サブモジュール
「ボール」や「ラケット」は移動や跳ね返りなどのサブ
モジュールを持つ
2009年度デザイン情報学科 情報処理III
インタラクティブなゲーム
2009年度デザイン情報学科 情報処理III
2
2009年度 デザイン情報学科 情報処理III
ゲーム画面を作る
レイヤーを2つ用意
上:「ActionScript」
下:「Main」
フレームを3つ用意
「ActionScript」レイヤー
では、独立した3つの
キーフレーム
キ フレ ム
「Main」レイヤーでは、
連続した3つのフレーム
2009年度デザイン情報学科 情報処理III
ボールを作る
「Main」レイヤーに直径10pixelの円を配置
「シンボルに変換」する
変換
名前:「Ball」
タイプ:ムービークリップ
基準点:中央
配置されたムービークリップに名前を付ける
名前:「ball」
ActionScriptで参照される名前
2009年度デザイン情報学科 情報処理III
インタラクティブなゲーム
Step 10
キーフレームとフレーム
キーフレーム
アイテムを配置できる
ActionScriptを記述できる
フレーム
キーフレームとキーフレームをつなぐ
ただ再生されるだけ
2009年度デザイン情報学科 情報処理III
移動するボール
ボールが持つプロパティの初期設定
移動方向(dx, dy)
スピード(speed)
移動位置を計算する関数move()
var dx = 1;
var dy = 1;
var speed = 3;
function move() {
this._x += speed * dx;
this._y += speed * dy;
}
2009年度デザイン情報学科 情報処理III
3
2009年度 デザイン情報学科 情報処理III
Step 10
ボールを動かす
右の壁に当たると跳ね返るボール
ActionScriptレイヤー
右の壁に当たる=ボールのx座標が画面の幅
より大きくなる
フレーム1
移動のx軸方向を反転させる
ボールのx座標を壁と同じところへ
何もしない
フレーム2
ballのmove()関数の呼出し
ball.move();
フレーム3
フレーム2へ戻る
gotoAndPlay(_currentFrame – 1);
function move() {
this._x += speed * dx;
this._y += speed * dy;
if (this._x > Stage.width) {
dx *= -1;
this._x = Stage.width;
}
}
画面の幅
(高さはStage.height)
2009年度デザイン情報学科 情報処理III
2009年度デザイン情報学科 情報処理III
ボールを壁にめり込ませない
ボールは単なる点ではなく大きさを持っている
大きさを考慮した当たり判定
ボールの半径(幅の半分)を調整
function move() {
this._x += speed * dx;
this._y += speed * dy;
ボール(この部品)の幅
(高さはthis._height)
if (this._x > Stage.width – this._width / 2) {
dx *= -1;
this._x = Stage.width – this._width / 2;
}
}
2009年度デザイン情報学科 情報処理III
インタラクティブなゲーム
4
Fly UP