Microsoft PowerPoint - diip ppt

Similar documents
MMC Unity講座

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Java講座

IT プロジェクト

デジタルコンテンツ 1 最終レポート チーム名 :10 トリス 作品名 :10TRIS メンバー 飯田佳徳 下田圭介 丸山隆太 疋田暁大

Javaプログラムの実行手順

最終レポート

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

JavaプログラミングⅠ

バスケットボール

スライド 1

スライド 1

プログラミング基礎I(再)

設問 println はそこで指定されている内容を出力して改行するものである. 一方,print は内容を出力して改行しないものである. 下記のプログラムそれぞれについて出力結果がどうなるか回答せよ. 下記のプログラム - を実行すると, fms という文字列が 回表示される. プログラム - vo

AutoSway_Gaide_kari4

Java講座

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java講座

MCDRS_tutorial_advanced_v1.pptx

PowerPoint プレゼンテーション

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

情報システム設計論II ユーザインタフェース(1)

プログラミング基礎

人工知能入門

< F2D F B834E2E6A7464>

プログラミングA

プログラミング入門1

Graphical User Interface 描画する

Processingをはじめよう

PowerPoint プレゼンテーション

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

ガイダンス

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

JavaScript 1.! DOM Ajax Shelley Powers,, JavaScript David Flanagan, JavaScript 2

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

情報システム設計論II ユーザインタフェース(1)

19 コピー

JAVA入門

Microsoft PowerPoint - enshu4.ppt [äº™æ‘łã…¢ã…¼ã…›]

Microsoft Word - VB.doc

sinfI2005_VBA.doc

Prog2_12th

XNA Framework

プログラミングA

12 コピー

PowerPoint プレゼンテーション

JavaプログラミングⅠ

医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から ここから Javascript のプログラミング入門 次はどうする--

レコードとオブジェクト

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - lec06 [互換モード]

Cir

Microsoft PowerPoint - chap10_OOP.ppt

アプリケーション

Taro-リストⅠ(公開版).jtd

Calendar Plus JavaScript API リファレンス ラジカルブリッジ Ver

ガイダンス

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

JavaプログラミングⅠ

編集する ファイルを開く マイクロデータの設定を行うファイルまたはファイルを開きます 開かれたファイルは編集画面に表示されて ブラウザ表示した時のプレビューも同時に表示されます HTML ファイルの選択 編集する ファイルを開くためにメインメニューから ファイル 開く を選びます ファイル選択ダイア

Microsoft PowerPoint - kougi4.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - ?????????????H27.pptx

< F2D834F838C A815B A CC>

ガイダンス

< F2D B838A835882CC8CF68EAE2E6A7464>

PowerPoint プレゼンテーション

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

セミオート追尾再生卓 取扱説明書

Java KK-MAS チュートリアル

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

講習No.9

オブジェクト指向

テキストファイルの入出力1

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング スプライトの衝突判定 スプライトの衝突判定 スプライトの衝突判定の例として インベーダーゲームのコードを 下記に示す PYTHON3 #coding: utf-8 import pygame from pygame.lo

プロシード

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

< F2D82B682E182F182AF82F12E6A7464>

ランボール

講習No.10

情報実習Ⅱ

レコードとオブジェクト

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

Taro-リストⅢ(公開版).jtd

課題

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

Java言語 第1回

Prog1_10th

2/17 目次 I. はじめに... 3 II. 操作手順 (Controlの場合) 断面の作成 寸法測定 異なる断面間の寸法測定 繰り返し処理...11 III. 操作手順 (Verifyの場合) 断面の作成... 1

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

Microsoft PowerPoint - C4(反復for).ppt

Transcription:

2006 年度デザイン情報学科情報処理 III 第 12 回マウスによる制御 ブロック崩し の部品 ボール直径 10pixel の円ラケット横 60pixel 縦 10pixel, マウスにより左右に移動ブロック横 50pixel 縦 20pixel,28 個 (7 個 4 段 ) 壁 ( フィールド ) 横 400pixel 縦 600pixel 2006 年度デザイン情報学科情報処理 III 2 ゲーム画面 ゲーム画面内の状態遷移図 初期設定 ブロック の配置ゲーム本体 ボール の移動 ラケット の移動 ラケット と ボール の当たり判定 ブロック と ボール の当たり判定ゲーム終了判定 初期設定 ゲーム本体 ゲーム本体を繰り返す クリア画面へ すべてのブロックがなくなったら 残りのボールがなくなったら ゲームオーバー画面へ 2006 年度デザイン情報学科情報処理 III 3 2006 年度デザイン情報学科情報処理 III 4 Flash による実装 状態 フレーム状態遷移 フレームの移動モジュールの候補一つ一つのフレーム ボール ラケット ブロック サブモジュール ボール や ラケット は移動や跳ね返りなどのサブモジュールを持つ ラケットを作る Main レイヤーに 60pixel 10pixel の長方形を配置 シンボルに変換 する名前 : Racket タイプ : ムービークリップ基準点 : 上端中央配置されたムービークリップに名前を付ける名前 : racket ActionScript で参照される名前 2006 年度デザイン情報学科情報処理 III 5 2006 年度デザイン情報学科情報処理 III 6

マウスの動きに連動したラケット 移動位置を計算する関数 move() function move(mx) { this._x = mx; mx; ActionScript レイヤーフレーム 2 racket の move() 関数の呼出し ball.move(); racket.move(_xmouse); マウスの x 座標 2006 年度デザイン情報学科情報処理 III 7 ラケットに当たると跳ね返るボール ラケットとボールの当たり判定ボールがラケットより下に来たときに ボールの x 座標がラケットの幅の内側にあるかどうかで判定オブジェクト同士の当たり判定を利用 a.hittest(b) a が b に重なっているときに真 今回はこっちを利用 ball.move(); racket.move(_xmouse); if if (racket.hittest(ball)) { 2006 年度デザイン情報学科情報処理 III 8 ラケットに当たると跳ね返るボール モジュール構成 跳ね返り処理をボールに記述 ( 関数 bound()) var var dx dx = 1; 1; var var dy dy = 1; 1; var var speed speed = 3; 3; function move() { this._x += += speed speed * dx; dx; this._y += += speed speed * dy; dy;...... function bound() { dy dy *= *= -1; -1; ゲーム画面 ボール (ball) ラケット (racket) 2006 年度デザイン情報学科情報処理 III 9 2006 年度デザイン情報学科情報処理 III 10 モジュール構成 モジュール仕様 ( ゲーム画面 ) ゲーム画面 初期設定 本体 mx ボール (ball) move bound move 機能ブロック崩しのゲーム画面を表すインタフェースなし内部変数なし論理なし ラケット (racket) 2006 年度デザイン情報学科情報処理 III 11 2006 年度デザイン情報学科情報処理 III 12

モジュール仕様 ( ゲーム画面. 本体 ) モジュール仕様 (ball) 機能ブロック崩しゲームの進行および描画を行うインタフェースなし内部変数なし論理 ボールの移動ラケットの移動 if if ( ボールがラケットに当たる ) { ボールの跳ね返り 機能ボールを表すインタフェースなし 内部変数 dx: 移動方向 (x 軸 ) dy: 移動方向 (y 軸 ) speed: 移動速度論理なし 2006 年度デザイン情報学科情報処理 III 13 2006 年度デザイン情報学科情報処理 III 14 モジュール仕様 (ball.bound) 機能 y 軸の移動方向を反転するインタフェースなし内部変数なし論理 dy に -1 をかける ブロックを作る Main レイヤーに 50pixel 20pixel の長方形を配置 シンボルに変換 する名前 : Brick タイプ : ムービークリップ基準点 : 中央リンケージ : アクションスクリプトに書き出し最初のフレームに書き出し 2006 年度デザイン情報学科情報処理 III 15 2006 年度デザイン情報学科情報処理 III 16 ブロックを作る 配置されたムービークリップは削除アクションスクリプトで配置するため初期設定のフレームで ブロックを生成 var var b_x b_x = 7; 7; var var b_num b_num = b_x; b_x; する ActionScript for for (i (i = 0; 0; i < b_x; b_x; i++) i++) { tmp_brick tmp_brick = new new Object(); Object(); tmp_brick._x tmp_brick._x = i*50 i*50 + 50; 50; tmp_brick._y tmp_brick._y = 160; 160; attachmovie("brick", "brick"+i, "brick"+i, (i+1)*10, (i+1)*10, tmp_brick); tmp_brick); シンボルの名前 ActionScript で操作する名前 横に 7 個ブロックを配置 深度 ( 重なり順 ) 初期化オブジェクト 2006 年度デザイン情報学科情報処理 III 17 ブロックを作る ActionScript で操作する名前 brick0 ~ brick6 深度 ( 重なり順 ) 10, 20,..., 60 同じ深度には一つのオブジェクトしか置けないボールやラケットも深度を持つ初期化オブジェクト座標 (_x, _y) をブロックに設定する 2006 年度デザイン情報学科情報処理 III 18

ブロックを作る ( 複数段 ) ブロックを作る ( 複数段 ) 50 100 150 200 250 300 350 (0, 0) x brick7 100 120 140 160 brick0 brick1 brick2 brick6 y brick21 brick27 brick28 brick13 2006 年度デザイン情報学科情報処理 III 19 var var b_x b_x = 7; 7; var var b_y b_y = 4; 4; var var b_num b_num = b_x b_x * b_y; b_y; for for (j (j = 0; 0; j < b_y; b_y; j++) j++) { for for (i (i = 0; 0; i < b_x; b_x; i++) i++) { k = j*b_x j*b_x + i; i; tmp_brick tmp_brick = new new Object(); Object(); tmp_brick._x tmp_brick._x = i*50 i*50 + 50; 50; tmp_brick._y tmp_brick._y =...;...; attachmovie("brick", "brick"+k, "brick"+k, (k+1)*10, (k+1)*10, tmp_brick); tmp_brick); 大きく意味が異なることに注意 attachmovie("brick", "brick"+j*b_x+i,...); j=2, i=3 のとき brick143 になる ( 正解は brick17) 2006 年度デザイン情報学科情報処理 III 20 ブロックに当たると跳ね返るボール ブロック (brick0) とボールの当たり判定 ball.move(); racket.move(_xmouse); if if (racket.hittest(ball)) { if if (brick0.hittest(ball)) { 2006 年度デザイン情報学科情報処理 III 21 ボールが当たると消えるブロック...... if if (racket.hittest(ball)) { if if (brick0.hittest(ball)) { brick0.removemovieclip(); ブロックの存在を確認 if if (brick0!=!= null) null) { if if (brick0.hittest(ball)) { brick0.removemovieclip(); 2006 年度デザイン情報学科情報処理 III 22 すべてのブロックとの当たり判定 for for (k (k = 0; 0; k < b_num; b_num; k++) k++) { if if (brick(k) (brick(k)!=!= null) null) { if if (brick(k).hittest(ball)) { brick(k).removemovieclip(); for for (k (k = 0; 0; k < b_num; b_num; k++) k++) { tmp_brick tmp_brick = eval("brick"+k); eval("brick"+k); if if (tmp_brick (tmp_brick!=!= null) null) { if if (tmp_brick.hittest(ball)) { tmp_brick.removemovieclip(); 2006 年度デザイン情報学科情報処理 III 23 クリアの判定 is_clear = true; true; for for (k (k = 0; 0; k < b_num; k++) k++) { tmp_brick = eval("brick"+k); if if (tmp_brick!=!= null) null) { is_clear = false; if if (tmp_brick.hittest(ball)) { tmp_brick.removemovieclip(); for 文を抜けた後も is_clear が true ならば ブロックは残っていない ( ただし 最後のブロックが消えた瞬間はクリアではない ) 2006 年度デザイン情報学科情報処理 III 24

クリア画面への状態遷移 is_clear = true; true; for for (k (k = 0; 0; k < b_num; k++) k++) { tmp_brick = eval("brick"+k); if if (tmp_brick!=!= null) null) { is_clear = false; if if (tmp_brick.hittest(ball)) { tmp_brick.removemovieclip(); if if (is_clear == == true) true) { gotoandplay("clear"); clear とラベルの付けられたフレームに移動 クリア画面を作る レイヤーを 1 つ追加 ActionScript と Main の間名前 : Message フレームを 2 つ追加 ActionScript レイヤーでは 独立した 2 つのキーフレーム Message レイヤーでは 連続した 2 つのフレーム Main レイヤーでは ゲーム画面から連続した 5 つのフレーム 2006 年度デザイン情報学科情報処理 III 25 2006 年度デザイン情報学科情報処理 III 26 クリア画面 クリア画面 Message レイヤーの 4 フレーム目にラベルを設定 clear Message レイヤーの 1 フレーム目にラベルを設定 game Message レイヤーの 4 フレーム目にクリアメッセージを配置 シンボルに変換 する名前 :Clear タイプ : ボタン配置されたボタンに名前を付ける名前 : bclear ActionScript で参照される名前 2006 年度デザイン情報学科情報処理 III 27 2006 年度デザイン情報学科情報処理 III 28 Clear を押したときの動作 ActionScript レイヤーの 4 フレーム目に bclear.onpress = function() { 現状は何もしない最終的には スタート画面に移動する ActionScript レイヤーの 5 フレーム目に スタート画面を作る 先頭にフレームを 2 つ挿入 ActionScript レイヤーでは 独立した 2 つのキーフレーム Message レイヤーでは 連続した 2 つのフレーム Main レイヤーでは 連続した 2 つのフレーム gotoandplay(_currentframe - 1); 1); 1 つ前のフレームに移動 ( 繰返し ) 2006 年度デザイン情報学科情報処理 III 29 2006 年度デザイン情報学科情報処理 III 30

スタート画面 スタート画面 Message レイヤーの 1 フレーム目にラベルを設定 start Message レイヤーの 1 フレーム目にスタートメッセージを配置 シンボルに変換 する名前 :Start タイプ : ボタン配置されたボタンに名前を付ける名前 : bstart ActionScript で参照される名前 2006 年度デザイン情報学科情報処理 III 31 2006 年度デザイン情報学科情報処理 III 32 ブロック崩し を押したときの動作 ActionScript レイヤーの 1 フレーム目に bstart.onpress = function() { gotoandplay("game"); ゲーム画面に移動する ActionScript レイヤーの 2 フレーム目に gotoandplay(_currentframe - 1); 1); ミスの判定 ball の ActionScript function move() {...... function miss() { if if (this._y > Stage.height-this._height/2) { return true; true; else else { return false; 1 つ前のフレームに移動 ( 繰返し ) 2006 年度デザイン情報学科情報処理 III 33 2006 年度デザイン情報学科情報処理 III 34 ボールの初期化 ball の ActionScript function miss() {...... function init() { 乱数による初期位置 dy dy = 1; 1; (x 方向 ) の決定 speed speed = 3; 3; this._y = 250; 250; this._x = Math.round(Math.random() * Stage.width); if if (Math.random() > 0.5) 0.5) { dx dx *= *= -1; -1; 乱数による移動方向の決定 ゲームオーバーの判定 ゲーム画面の初期設定 ( ActionScript レイヤーの 3 フレーム目 ) var var life life = 3; 3; ゲーム画面のゲーム本体 ( ActionScript レイヤーの 4 フレーム目 ) if if (ball.miss()) { life--; if if (life (life == == 0) 0) { gotoandplay("gameover"); ball.init(); 2006 年度デザイン情報学科情報処理 III 35 2006 年度デザイン情報学科情報処理 III 36

ゲームオーバー画面を作る ゲームオーバー画面 フレームを 2 つ追加 ActionScript レイヤーでは 独立した 2 つのキーフレーム Message レイヤーでは 連続した 2 つのフレーム Main レイヤーでは ゲーム画面から連続した 7 つのフレーム 2006 年度デザイン情報学科情報処理 III 37 2006 年度デザイン情報学科情報処理 III 38 ゲームオーバー画面 Message レイヤーの 8 フレーム目にラベルを設定 gameover Message レイヤーの 8 フレーム目にゲームオーバーメッセージを配置 シンボルに変換 する名前 :GameOver タイプ : ボタン配置されたボタンに名前を付ける名前 : bgameover ActionScript で参照される名前 GameOver を押したときの動作 ActionScript レイヤーの 8 フレーム目に bgameover.onpress = function() { gotoandplay("start"); スタート画面に移動する ActionScript レイヤーの 9 フレーム目に gotoandplay(_currentframe - 1); 1); 1 つ前のフレームに移動 ( 繰返し ) 2006 年度デザイン情報学科情報処理 III 39 2006 年度デザイン情報学科情報処理 III 40 スコアの表示 Main レイヤーの 3 フレーム目にダイナミックテキストとして 5 桁 ( 適当な長さ ) の数字を配置インスタンス名を指定 score ActionScript で参照される名前同名の変数に値を代入すると その値が出力されるゲーム画面の初期設定 ( ActionScript レイヤーの 3 フレーム目 ) var var score score = 0; 0; 2006 年度デザイン情報学科情報処理 III 41 スコアの加算 ブロックにボールが当たったらスコアを加算 is_clear = true; true; for for (k (k = 0; 0; k < b_num; k++) k++) { tmp_brick = eval("brick"+k); if if (tmp_brick!=!= null) null) { is_clear = false; if if (tmp_brick.hittest(ball)) { tmp_brick.removemovieclip(); score score += += 100; 100; 2006 年度デザイン情報学科情報処理 III 42

ボールのスピードを取得する スコアにボールのスピードを加味するために ball に getspeed() を記述 function getspeed() { return speed; score の計算に利用 score score += += ball.getspeed() * 100; 100; 2006 年度デザイン情報学科情報処理 III 43