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

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

スライド 1

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

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

Processingをはじめよう

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

プログラミング演習 Ⅰ 第 14 回 2017/6/5( 月 ) ゲームを作る クイズ 担当 : 紅林林

Microsoft PowerPoint P演習 第5回 当たり判定(2)【課題】.pptx

pp2018-pp4base

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

プログラミング基礎

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

プログラミングA

プログラミング基礎

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

Processingをはじめよう

プログラミングA

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

課題

Microsoft PowerPoint - [150421] CMP実習Ⅰ(2015) 橋本 CG編 第1回 幾何変換.pptx

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

pp2018-pp9base

課題

計算機プログラミング

Java講座

<4D F736F F D2089A E838D815B838B B838082C582C D834F F08A7782D42E646F6378>

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

課題

Processing入門マニュアル17

大容量情報検索論

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Rerank-By-Example: Rerank Search Results by Operation

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>

使って ソースコードで書かれた処理を実行しています まず ソースコードをバイトコード (byte code) と呼ばれる仮想的な機械語に変換します そのバイトコードを仮想機械 (virtual machine) と呼ばれるインタープリンタが読み込み 実行をしていきます バイトコード呼ばれる命令はシン

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の


JavaプログラミングⅠ

CG

課題

Prog1_3rd

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

8 if switch for while do while 2

1. if~ 1.1. 確認を促す まずは簡単な分岐プログラムを作ってみましょう 以下はそのフローチャートです 開始 charc よろしいですか? (y/n) 変数 c の値が 'y' と等しいかどうか c c='y' Yes よろしいですね No 終了 1: 2: 3: 4: 5: 6: 7: 8

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

プログラミング入門1

PsychoPy Builderにおける 実験の動的な制御の方法

2 個の円の移動サンプル 9-2 float y0,y1; // 円の中心の Y 座標 float x0,x1; // 円の中心の X 座標 float v0,v1; // 円の縦方向の移動速度 int radius; size(300,400); radius = 10; v0 = random(

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - diip ppt

Microsoft PowerPoint - class04.ppt

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

初めてのプログラミング

Microsoft PowerPoint - kougi2.ppt

Microsoft PowerPoint - C_Programming(3).pptx

2

JavaScript演習


2

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

ポインタ変数

PowerPoint プレゼンテーション

プログラミングA

イントロダクション

Microsoft PowerPoint - 10.ppt [互換モード]

情報処理Ⅰ

課題

Prog1_6th

Microsoft PowerPoint - 09.ppt [互換モード]

ToDo: 今回のタイトル

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

配付資料

Microsoft Word - VB_10.doc

もう少し数学っぽい関数もあります 関数名 abs(x) sqrt(x) sq(x) pow(x,n) exp(x) log(x) dist(x1, y1, x2, y2) constrain(v, m0, m1) lerp(v0,v1,t) map(v, low1, high1, low2, hig

3-4 switch 文 switch 文は 単一の式の値によって実行する内容を決める ( 変える ) 時に用いる 例えば if 文を使って次のようなプログラムを作ったとする /* 3 で割った余りを求める */ #include <stdio.h> main() { int a, b; } pri

メンバ変数とインスタンス

Javaによるアルゴリズムとデータ構造

JavaプログラミングⅠ

C#の基本2 ~プログラムの制御構造~

PowerPoint Presentation

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

JavaプログラミングⅠ

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft PowerPoint - ruby_instruction.ppt

課題

Microsoft PowerPoint - 4.pptx

kantan_C_1_iro3.indd

課題

CG

ExcelVBA

JavaプログラミングⅠ

3. 標準入出力


4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

C#の基本

第32回_プレゼン資料_菅原(Unityはじめるよ~上半身だけ動かす2~)

ポインタ変数

Microsoft PowerPoint - comprog11.pptx

PowerPoint プレゼンテーション - 物理学情報処理演習

Transcription:

プログラミング演習 (5) 条件分岐 (2) 中村, 高橋 小林, 橋本 1

目標 Processing で当たり判定に挑戦! 条件分岐を理解する 何らかの条件を満たした時に色を変える! マウスカーソルと動いている円がぶつかったら終了 シューティングゲームやもぐらたたきに挑戦! 課題 : Processing でゲームを作ろう! 占いを作ってみよう

フローチャートと条件分岐 プログラムの流れ 年齢確認 true 20 歳以上 false お酒飲める お酒飲めない

制御文 if( 条件 A ){ // 条件 Aの時の処理内容 else if( 条件 B ){ // 条件 Aでなく, 条件 Bの時の処理内容 else { // 条件 AおよびB 以外の時の処理内容 よくあるミス if( 条件 );{ 条件 A の処理

論理値, 真偽値 (boolean) true か false かを値として持つ それ以外の値は持たない 制御文で 条件 A を満たす時 というのは 条件 A が真 (true) である と同じ意味 制御文で 条件 A を満たさない時 というのは 条件 A が偽 (false) である と同じ意味 x > y の条件をみたす場合, x > y は true, みたさない場合は false x == y は x と y が同じ値の場合 true に, 違う値の場合に false となる

条件の記述方法 演算子意味 プログラム上 x > y x が y より大きい 左記の時に true それ以外で false x < y x が y より小さい 同上 x >= y x が y 以上同上 x <= y x が y 以下同上 x == y x と y が等しい同上 x!= y x と y が等しくない同上!x x は false 同上

~ かつ ~ はどうするのか? 論理積演算子と論理和演算子 ~ かつ ~ のとき && ~ または ~ のとき if ( x > 200 && x < 400 ){ if( 200 < x < 400 ) x が200より大きく,400より小さい時はここに来る if ( n < -10 n > 10 ){ nが-10より小さいか,10より大きければここに来る

~ かつ ~ はどうするのか? if ( x > 200 && x < 400 ){ x が 200 より大きく,400 より小さい時はここに来る 詳しく説明すると 200 400 x = 100 のときは, x>200 が false で x<400 が true となるため, false && true となり, false となる x = 300 のときは, x>200 が true で x<400 が true となるため, true && true となり, true となる x = 500 のときは, x>200 が true で x<400 が false となるため, true && false となり, false となる x

~ かつ ~ はどうするのか? if ( n < -10 n > 10 ){ n が -10 より小さいか,10 より大きければここに来る 詳しく説明すると -10 10 n = -20 のときは, n<-10 が true で n>10 が false となるため, true false となり, true となる n = 0 のときは, n<-10 が false で n>10 が false となるため, false false となり, false となる n = 20 のときは, n<-10 が false で n>10 が true となるため, false true となり, true となる n

色々とつまずくポイント true に何時まで経ってもならない例 if( x < 200 && x > 400 ){ // だめ ずっと true になってしまう例 if( n > -10 n < 10 ){ // だめ 200 400-10 10 x n

(Q) 占い プログラムを起動したときに,0~9 までの値を作成し, その値に応じて占いの結果を表示せよ 0~3 の時は 凶 4~6 の時は 吉 7~9 の時は 大吉 と表示するようにせよ 0 から 9 までの数字を出力する場合は int kuji = (int)random( 0, 10 );

(A) 占い // kuji をひく int kuji = (int)random( 0, 10 ); // 0-3, 4-6, 7-9 if( kuji >= 0 && kuji <= 3 ){ println( " 凶 " ); else if( kuji >= 4 && kuji <= 6 ){ println( " 吉 " ); else { println( " 大吉 " );

ボタン ( 四角形 ) の判定 (Q) 400x300 のウインドウの中央に表示された横 100, 縦 80 のボタンの上にカーソルがあるとボタンを赤色に, そうでなければ白色にするには?

ボタン ( 四角形 ) の判定 考え方 画面の中央は (200, 150) ボタンの左上と右下の座標は?? ボタンは rect( 左上 x, 左上 y, 横幅, 縦幅 ); で描画 マウスカーソルの座標は (mousex, mousey)

ボタン ( 四角形 ) の判定 中央 (200, 150) で, 横幅 100, 縦幅 80 なので 左上の座標は (200-100/2, 150-80/2) = (150, 110) 右下の座標は (200+100/2, 150+80/2) = (250, 190) 150 mousex 250 かつ 110 mousey 190 なら赤色, そうでなければ白色で塗りつぶす つまり,mouseX>=150 かつ mousex<=250 かつ mousey>=110 かつ mousey<=190 の時! かつ は, && で表現する (150, 110) (250, 190)

ボタン ( 四角形 ) の判定 ( 注意 ) 150 <= mousex <= 250 はダメ! 150 <= mousex && mousex <= 250 に分解 void setup(){ size( 400, 300 ); void draw(){ background( 255, 255, 255 ); if( mousex >= 150 && mousex <= 250 && mousey >= 100 && mousey <= 190 ){ fill( 255, 0, 0 ); else { fill( 255, 255, 255 ); rect( 150, 110, 100, 80 );

ボタン ( 四角形 ) の判定 if や else if,else の { の中に if を入れても OK!! ( 多段階の条件分岐 ) void draw(){ background( 255, 255, 255 ); if( mousex >= 150 && mousex <= 250 ){ if( mousey >= 100 && mousey <= 190 ){ fill( 255, 0, 0 ); else { fill( 255, 255, 255 ); else { fill( 255, 255, 255 ); rect( 150, 110, 100, 80 ); さらに 110 mousey 190 ならここに入ってくる 150 mousex 250 ならここに入ってくる さらに 110 mousey 190 でない場合はここに入ってくる

宝探し ( 四角形を探す ) (Q) ランダムな場所に, 縦幅 30x 横幅 20 の大きさで配置された四角形を探す ( カーソルがその上にあるときだけ表示する ) プログラムはどう作るか? あった!

宝探し ( 四角形を探す ) 考え方 四角形の左上の座標を実数の変数に float lefttopx; // 他の変数名でも OK float lefttopy; // hidariuex, hidariuey でも OK 四角形の左上の座標をランダムに決める random( 最小値, 最大値 ); で, 最小値から最大値までの値を求めることができる lefttopx = random( 50, 350 ); // 50~350 のランダムな値 などのように

宝探し ( 四角形を探す ) 考え方 ( 続き ) mousex がどういった条件を満たせば表示する? lefttopx mousex lefttopx+30 mousey がどういった条件を満たせば表示する? lefttopy mousey lefttopy+20 2 つの条件を満たした時に長方形を表示する! 長方形は rect( 左上 x, 左上 y, 横幅, 縦幅 ); で描画

宝探し ( 四角形を探す ) float lefttopx; float lefttopy; void setup(){ size( 400, 300 ); lefttopx = random(0, 390); // 0~390 までの任意の値 lefttopy = random(0, 290); // 0~290 までの任意の値 400 までにしちゃうとはみ出て見つからない void draw(){ background(255,255,255); if( mousex >= lefttopx && mousex <= lefttopx+30 ){ if( mousey >= lefttopy && mousey <= lefttopy+20 ){ rect( lefttopx, lefttopy, 30, 20 );

宝探し ( 四角形を探す ) float lefttopx; float lefttopy; void setup(){ size( 400, 300 ); lefttopx = random(width-10); lefttopy = random(height-10); void draw(){ background(255,255,255); if( mousex >= lefttopx && mousex <= lefttopx+30 && mousey >= lefttopy && mousey <= lefttopy+20 ){ rect( lefttopx, lefttopy, 30, 20 ); もちろん全部 && でつないでも OK 2 行で書いても OK!

演習 ランダムな場所に, ランダムな大きさで配置された四角形を探す ( カーソルがその上にあるときだけ表示する ) プログラムを作成しよう! 四角形の左上の座標, 縦幅横幅を実数の変数に (lefttopx, lefttopy, rectwidth, rectheight など )

色々な条件に挑戦 (Q) 400x300 のウインドウでマウスが画面の左上で赤背景, 右上で青背景, 左下で緑背景, 右下で黒背景にするには?

色々な条件に挑戦 条件 ( < にするか <= にするかは人次第 ) 左上は mousex < 200 かつ mousey < 150 赤色 右上は mousex >= 200 かつ mousey < 150 青色 左下は mousex < 200 かつ mousey >= 150 緑色 右下は mousex >= 200 かつ mousey >= 150 黒色 void draw(){ if( mousex < 200 && mousey < 150){ background(255,0,0); else if( mousex >= 200 && mousey < 150 ){ background(0,0,255); else if( mousex < 200 && mousey >= 150 ){ background(0,255,0); else { background(0,0,0);

補足 if の処理内容が 1 つだけのときは { を省略可能 if( mousex < 200 && mousey < 150){ background(255,0,0); if( mousex < 200 && mousey < 150) background(255,0,0); ただ, 慣れるまでは省略しない!

明治大学総合数理学部先端メディアサイエンス学科値で沢山分岐する場合は? 中村研究室 キーボードからの入力は void keypressed() で取得, 入力キーは変数の key を調べるだけ! 沢山 if else if else if else if else if -... と繋げても良いが, 見通しがやや悪くなる void keypressed(){ if( key == 'a' ){ println( "A が押されました " ); else if( key == 'b' ){ println( "B が押されました " ); else if( key == 'c' ){ println( "C が押されました " ); else { println( " それ以外のキー " ); void keypressed(){ switch( key ){ case 'a': println( "A が押されました " ); break; case 'b': println( "B が押されました " ); break; default: println( " それ以外のキー " ); break;

switch case break switch( 分岐させる変数 ){ case 値 1: 値 1の時の処理 break; // 値 1の時の処理ここまで case 値 2: 値 2の時の処理 break; // 値 2の時の処理ここまで default: // 値 1でも2でもない場合の処理 break;

up/down/left/right key ではなく keycode という 変数を利用 void keypressed() { switch( keycode ) { case UP: println( "up が押されました " ); break; case DOWN: println( "down が押されました " ); break; case LEFT: println( "left が押されました " ); break; case RIGHT: println( "right が押されました " ); break; default: println( " それ以外のキー " ); break;

up/down/left/right で移動 (Q) 上下左右キーで円を動かすにはどうするか? keypressed() で入力を取得 keycode で上下左右ボタンを取得 座標を up/down/right/left で変更

up/down/left/right で移動 void setup(){ size( 400, 400 ); int x = 200; int y = 200; void draw(){ background( 255, 255, 255 ); ellipse( x, y, 50, 50 ); void keypressed() { switch( keycode ) { case UP: y = y - 10; break; case DOWN: y = y + 10; break; case LEFT: x = x - 10; break; case RIGHT: x = x + 10; break;

占いを作ってみる (Q) マウスクリックするたびに標準出力に占い結果を表示するプログラムを作ってみよう!

占いを作ってみる 考え方 マウスクリックした際に 0~9 の乱数を発生 乱数を発生させるのは random(... ); random( 数字 ); 数字までのランダムな値を取得 random( 開始, 終了 ); 開始 ~ 終了のランダムな値を取得 注意点 : 乱数は実数 (0.0000, 0.00001, 0.00002,...) になるので整数と単純に比較してはダメ. 整数に変換してあげる必要がある!( 実数から変数へ (int) で変換!) 乱数の値を変数に格納 num = (int) random( 10 ); 変数の値に応じて占い結果を表示する!

占いを作ってみる void setup(){ size( 100, 100 ); void draw(){ void mousepressed(){ num = (int)random(0,10); switch( num ) { case 0: println( "DAIKICHi!! (^o^)" ); break; case 1: println( "DAIKYO!! (X_X)" ); break; case 2: println( "KICHI (-_-)" ); break; // ~ 以降 3 9 まで繰り返し

予習問題 左から右に動く白色の四角形をマウスでクリックすると赤色で塗りつぶすプログラムに挑戦 画面に表示されていない左から右に動く四角形を探すプログラムに挑戦 惜しい場合はヒントを表示しましょう! 簡単なゲームを作ってみましょう ただ表示されているボタンを全て押すだけのゲーム 動いてくる敵を避けるゲームなど. なんでも OK です 画面のクリック場所によって占いの結果を変更するプログラムを作ってみましょう