PowerPoint プレゼンテーション

Similar documents
メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

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

Prog2_12th

Microsoft PowerPoint - prog03.ppt

02: 変数と標準入出力

PowerPoint プレゼンテーション

Prog2_9th

02: 変数と標準入出力

memo

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

Microsoft PowerPoint - lec06 [互換モード]

Microsoft PowerPoint ppt

JavaプログラミングⅠ

Microsoft PowerPoint - prog04.ppt

JavaプログラミングⅠ

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Microsoft Word - C言語研修 C++編 3.doc

<4D F736F F D2091E63589F182628CBE8CEA8D758DC08E9197BF2E646F6378>

Prog1_6th

Javaプログラムの実行手順

JavaプログラミングⅠ

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

演算増幅器

Microsoft PowerPoint - chap10_OOP.ppt

Slide 1

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

レコードとオブジェクト

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

基礎プログラミング2015

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

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

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

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

プログラミング入門1

PowerPoint プレゼンテーション

JavaプログラミングⅠ

Microsoft PowerPoint pptx

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Undestand の解析 Understand の C 言語で抽出できない依存関係について サンプルコードを用いて説明します 確認バージョン Understand 3.0 (Build 640) Understand 3.1 (Build 700) Understand 4.0 (Build 78

Microsoft PowerPoint - C++_第1回.pptx

Java言語 第1回

プログラミングI第10回

プログラミング実習I

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

Microsoft PowerPoint - 09.pptx

基本情報STEP UP演習Java対策

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

プログラミング基礎

PowerPoint プレゼンテーション

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

Microsoft Word - Training10_プリプロセッサ.docx

memo

PowerPoint プレゼンテーション

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

Microsoft PowerPoint - 04.pptx

Taro-ポインタ変数Ⅰ(公開版).j

プログラミング入門1

02: 変数と標準入出力

file:///D|/C言語の擬似クラス.txt

JavaプログラミングⅠ

プログラミング基礎

02: 変数と標準入出力

JAVA入門

プログラミング入門1

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

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

ガイダンス

GEC-Java

PowerPoint プレゼンテーション

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

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

JavaプログラミングⅠ

program7app.ppt

第3回 配列とリスト

情報処理Ⅰ演習

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

C言語講座

Microsoft PowerPoint - OOP.pptx

JavaプログラミングⅠ

ガイダンス

ガイダンス

gengo1-11

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

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

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

ソフトゼミC 第二回 C++の基礎

memo

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

GEC-Java

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

関数 C 言語は関数の言語 関数とは 関数の定義 : f(x) = x * x ; 使うときは : y = f(x) 戻り値 引数

PowerPoint プレゼンテーション

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

デジタル表現論・第6回

Microsoft PowerPoint - 計算機言語 第7回.ppt

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

Microsoft PowerPoint pptx

Transcription:

プログラマー勉強会 1 回

basic.h

補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ ここ以下をコンパイルする #endif 条件コンパイル部分の終了を示す

補足 2 [ インクルードガード ] なぜ条件コンパイルを付けたのか 同じヘッダーファイルを複数回インクルードした場合 同じ内容のプログラムが複数回コンパイルされ コンパイルエラーを起こしてしまう それを防止するために #ifndef を付け 直後に #ifndef の条件マクロを定義することによって最初の一回だけヘッダーファイルの内容をコンパイルし エラーを防止する これをインクルードガードと呼び ヘッダーファイルにはほぼ確実に付けてある [ 一回目のインクルード ] #ifndef _BASIC_H_ まだ定義されていないため条件を満たしコンパイルされる #define _BASIC_H_ 条件マクロを定義 [ 二回目以降のインクルード ] #ifndef _BASIC_H_ すでに定義されているため条件を満たさず コンパイルされない #define _BASIC_H_

basic.h2

main.cpp

オブジェクト [ 多数のデータの取り扱い ] 例 ( プレイヤーに必要なデータ ) 座標(x,y) int point_x,point_y; 速度(x,y) int vellocity_x,vellocity_y; 長さ(x,y) int length_x,length_y; 角度 double angle; ライフ int life; Etc 通常の変数には一つの値しか保存できないため 変数を多数用意する必要があった バラバラでわかりずらい

オブジェクト 2 [ 構造体 ] 構造体の登場で 一つの変数に複数の値を保存できるようになり 必要なデータを一か所にまとめることができるため 多少はプログラムしやすくなった struct PLAYER{ int point_x; int point_y; int length_x; }; PLAYER player; player.point_x += player.vellocity_x;

オブジェクト 3 [ オブジェクト ] 構造体をさらに拡張させ メンバに関数を加えることで値を保存だけでなく 計算処理などもできるようになった変数 ( みたいなやつ ) [ 変数による値の保持 ] 座標 (x,y) 速度 (x,y) 長さ (x,y) 角度 ライフ [ 関数による計算処理 ] 当たり判定 (new) 移動 (new) 描画 (new) などができるようになった

オブジェクト 3 難しい感じで言ったけど 大雑把に言うと 要は構造体に関数が加わったくらい イメージ struct PLAYER{ int point_x; int point_y; int vellocity_x; }; void Move(){ point.x += vellocity.x }

クラス クラス オブジェクトの定義をする場所 オブジェクト内で使う変数や関数を宣言したり定義する メンバ変数 オブジェクト内で使う変数 フィールドとも言う メンバ関数 オブジェクト内で使う関数 メソッドとも呼ばれる [ クラス定義テンプレ ] class クラス名 { }; クラス名のルールは変数名や関数名と同じ

クラスの定義 プロジェクト > 新しい項目の追加 ヘッダーファイルを選択し class_def.h と名前を付けて追加ボタン

便利になるかもしれない プロジェクト > 既存の項目の追加 配布した SecondVector.h を選択して追加ボタン basic.h に移動 #include SecondVector.h を記述 SecondVector.h をプロジェクトのディレクトリに入れる SDV 型 (2 次元ベクトル型 ) がつかえるようになる

SDV 型 SDV 型 2 次元ベクトル型 X 成分と Y 成分の情報を格納できる [ できること ] SDV A,B; // 一斉代入 A.Set(3,5); B.Set(-8,2); // 足し算引き算 A + B = (-5,7) A B = (11,3) // 足し算代入引き算代入 A += B A = (-5,7); A -= B A = (11,3); あとは * で内積 / で外積とかが出るんだって

クラスの定義

クラスの定義

クラスの定義

コンストラクタ これ コンストラクタ オブジェクトを宣言し生成するときに 最初に呼び出される初期化用関数 主にメンバ変数の初期化の処理を行う クラス名と同じで 型は持たない

オブジェクトの生成 [ オブジェクト生成テンプレ ] オブジェクト型名 * オブジェクト変数名 = new コンストラクタ ;

new 演算子 new メモリ上から指定されたオブジェクト分の領域を確保する演算子 C++ だと確保した領域のアドレスを出すため 格納する変数はポインタ型にしなければならない new を使わないと Java だとこう言われる C++ では new を使わなくてもオブジェクトの生成はできるが 今回は基本的に new を使って領域を確保し オブジェクトを生成することにする

描画メンバ関数 1 [DrawRectRotaGraph] グラフィックを指定した部分だけ切り抜いて 回転系描画ができる 公式リファレンスに載っていない隠し関数の一つ DrawRectRotaGraph(X 座標, Y 座標, 切抜の左上 X 座標, 切抜の左上 Y 座標, 横幅, 縦幅, 拡大率, 角度, グラフィックハンドル, 透過フラグ, 反転フラグ ); [ 右に動いてるとき ] [ 左に動いてるとき ] [ 止まってるとき ]

描画メンバ関数 2

メンバ関数を呼び出す 構造体でメンバ変数を呼ぶときと同様に メンバ演算子. オブジェクト変数がポインタ型の時はアロー演算子 -> を使って呼び出す

private と public class PLAYER{ private: (private メンバ変数 or 関数 ) public: (public メンバ変数 or 関数 ) }; public オブジェト変数があればどこでも呼び出せる変数もしくは関数 private クラス内でしか呼び出せない変数もしくは関数 例 class PLAYER{ private: int X; @main 関数 PLAYER p; p.x;

NPC の生成 一応 RPG なので NPC のためのクラスを作り PLAYER と同様に動作させる 使う変数 PLAYER と同じじゃん

クラスの継承 PLAYER と NPC では使う変数と関数が同じものが多い それらを一々書いていては非効率なので 被っている変数や関数を使うために継承を行う 継承 既に定義されているクラスの変数や関数を再利用し プログラミングの効率を高めること [ 継承テンプレ ] class クラス名 : public 継承元クラス名 { };

NPC クラス

NPC クラス 2

コンストラクタが二つあるが 引数の型や数が異なれば コンストラクタはいくつでも定義することができる また コンストラクタに限らず関数も同様に 引数の型や個数が異なったり関数の型が異なれば 同じ名前の関数をいくつでも定義できる このように同じ名前の関数を複数定義することを多重定義やオーバーロードと呼ぶ

NPC の動き方 右に動くとき 1 2 Player が一定の距離離れる ( 今回は 160pix) 3 Player を追いかける形で NPC も動かす 4 Player が止まっている状態で NPC が一定の距離 (60pix) 近づいたら NPC も止める

NPC の動き方 2 右に動くとき 1 2 Player が一定の距離離れる ( 今回は 120pix) 3 Player を追いかける形で NPC も動かす 4 Player が止まっている状態で NPC が player の後ろ (60pix) についたら NPC も止める

NPC クラス 3

NPC クラス 4

NPC クラス 5

protected PLAYER クラスを継承したはずなのに 変数にエラーが出る 何故? private の変数 関数は継承できない どうする? PLAYER クラスの private を protected に変更する protected 継承されるようになった private 変数 関数

プレイヤーの座標取得 NPC の Move 関数の引数に player_point( プレイヤーの座標 ) があるが Protected に置かれているため 取得できない 座標の値だけ返すメンバ関数を PLAYER クラスに実装 これで 座標の取得が可能

point を public に置けばええやん

NPC の生成 ( 出直し ) 今回 NPC の数は 2 人で固定

NPC の生成 2 newを使ったオブジェクト配列宣言型名 ** 配列名 = new 型名 [ 要素数 ]; ポインタ型の配列が欲しいのでポインタのポインタ型

NPC の実装

第一回終了