★C++/オブジェクト指向実践企画★ Othelloゲーム作成

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
シーケンス図の生成のための実行履歴圧縮手法
イベント イベント: マウスの操作、キーボードの操作、ファイル操作など システムやユーザーからの入力・出力のこと
ASP入門 - Windows 2000 Server 活用 -.
プログラミング入門 ガイダンス.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
アルゴリズムとプログラミング (Algorithms and Programming)
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
コンピュータ囲碁の仕組み ~ 将棋との違い ~
Java言語による シューティングゲーム作成
JavaによるCAI学習ソフトウェアの開発
アプレット (Applet)について.
アルゴリズムとデータ構造1 2007年6月12日
Lispとは ゲーム理論 minimaxアルゴリズム αβアルゴリズム ソースコードの一部
2004年度JAVAゼミコンテスト作品 「Othello」
VBA(Visual Basic Application)を使ったプログラミングの初歩概説
プログラミング演習3 第4回 ミニプロジェクト.
プログラミング教室 Tetrisの実装 K.Yonezawa.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
モンテカルロ法によるミニ囲碁 増井拓視 情報理論工学研究所.
クロスワードゲームの 作り方を学ぼう/やってみよう ‐ボードゲームの動作機構‐
「C++言語」習得のための実践的研究 -「テンプレート」,「例外処理」,「実行時型情報」-
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
インタラクティブ・ゲーム制作 <プログラミングコース>
C#とC++とオブジェクト指向 上甲 健史.
情報 第2回:状態遷移 その2.
JAVAでつくるオセロ 伊東飛鳥、宮島雄一 長畑弘樹、ソギ原直人.
UMLとは           032234 田邊祐司.
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
ソフトウェア工学 知能情報学部 新田直也.
WPF、MVVMパターン構成.
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
プログラミング言語入門.
オペレーティングシステム イントロダクション
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
社会シミュレーションのための モデル作成環境
4人版リバーシYoninの解析 情報論理研究室 藤本 侑花
UML関係のTIPS 2008年5月26日 2010年5月16日改訂 海谷 治彦.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
プロジェクト演習Ⅱ インタラクティブゲーム制作
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
UMLの概要とオブジェクト指向の基本概念
OSが管理している、デフォルトの入出力装置 入力:stdin キーボード 出力:stdout モニタ(コマンドプロンプトの画面)
オブジェクト指向プログラミング クラス 継承
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
数値解析ⅡーI ~オセロゲームのプログラム~
物理的側面を表現する図 石原研 古賀浩之.
プログラム分散化のための アスペクト指向言語
モグラたたき.
クラウド・地域人材利用型プログラミング教育実施モデル実証事業 公益財団法人 学習ソフトウェア情報研究センター
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
Othello G班         山崎 木下 山本 上手      .
情報処理Ⅱ 2007年12月3日(月) その1.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング実習(Java) グラフィクス処理とGUIプログラミング 講師:坂口 利裕(横浜市立大学)
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
Presentation transcript:

★C++/オブジェクト指向実践企画★ Othelloゲーム作成

本企画の目的 オブジェクト指向プログラミングの実践により、少しでもC++及びオブジェクト指向技術の向上を目指す 参加者全員が同じ課題に取り組むため、問題点を共有でき、また複数の設計の比較が可能となる

要件:オセロゲームの作成 実際にPC上で動作可能なオセロゲームを作成すること クラス図だけ作って終わりではない!

(非機能的)要件 拡張性 実際作成するゲームは低機能でもかまわないが、将来機能追加する可能性を考慮して設計すること

拡張性の例 出力 入力 盤面は、コマンドライン上に文字で出力すればよい ただし、将来Window上に絵で描画することも可能なようにすること

拡張性の例 プレイヤー プレイヤーは人間 vs AIを基本とする ただし、将来的に人間 vs 人間、AI vs AIも可能なようにすること AI AIは、こまをランダムに置くなど、プレイヤーとしての強さを追求する必要はない ただし、将来的に強力なAIを搭載可能にし、また、対戦するAIを選択可能にするなどの機能を搭載可能とするよう考慮すること

その他の拡張例(Advance) 盤面の広さを変更可能にする 盤面の表示の際、石を置ける場所と置けない場所を表示する機能 「待った」で数手前の状態に戻ってやり直す機能 終了後、今までの手順を再生して復習できる機能 初期設定を設定ファイルや、コマンドラインオプション、GUIから設定できるようにするように考慮する 「石を置ける場所がありません]とうのメッセージも、出力方法に応じて変化するため、出力方法とセットで変更されるように配慮 持ち時間を管理する機能を追加できるように配慮

予想される構造(例) 勝負 ルール判定 盤面 データ AI 抽象 Block AI 弱 コマンドライン 入出力 入出力 抽象 Block GUI 入出力 AI 強 Player 抽象Block Player0 Player1

成果物 実動作する実行プログラム ソースコード クラス図 その他必要な図 レビューでの資料 GUIを抜いた部分は、特定のOS依存にならないようにすることが望ましい ソースコード 要所のみ簡単なレビューを行う クラス図 必須! その他必要な図 レビューでの資料 きっちりとした設計書は必要ない

環境 コンパイラ、IDE等は自由 UML図の作成ツールも自由 なるべくレビューで使う環境(=Windowsノートパソコン)で動作可能であることが望ましい UML図の作成ツールも自由 例:フリーのツール「JUDE」

開発手順 一度にシステムすべてを設計して開発するのではなく、部分ごとに分けて、設計⇒実装⇒動作テストを繰り返すことにする 実現性の無い設計を防ぐ C++に慣れていない場合は、早い段階で慣れておく

開発手順 1.盤面データ、及びその出力部分を作成する 実際に盤面を表示できることをテストしておくこと

開発手順 2.コマの座標入力部の作成 実際に入力結果が表示されるかを確認する

開発手順 3.勝負の判定部分の作成 アルゴリズム的に難しい部分なので、汚い構造にしないように注意する この段階で、人間同士で対戦できる状態になるはずなので、テストしておく

開発手順 4.AI部分の作成 全体に正しく動作するか確認する

その他 成果物の作成は、基本的に仕事の時間外(家)で行う レビューは夜の仕事に支障の無い時間で行う 仕事に支障が出ないように注意 途中で抜けたり、途中から参加することは自由、レビューのみ参加することも自由とする ただし、実際に手を動かさないと、C++とオブジェクト指向の習得は難しい レビューで他の人の構造が良いと思ったら、真似するのは全く問題は無い 相手の許しがあれば、作成途中のソースコードをもらうことも自由.ただし、すべてを理解してから使用する必要がある

基礎知識についての注意 この企画では、C++や基本的なUMLの言葉について知っていることが前提となっている 基本について知らない人でも参加は可能だが、なるべく早い段階で理解できるように努力すること 理解できていないと、後半のほうのレビューについていくことは難しい

基礎知識確認 これらの言葉の意味について、分からない人に説明できる位かどうか各自確認 理解が足りない場合は、人に聞く、本を読む等して理解するよう努力すること クラス(class) メンバ変数 メンバ関数 Staticメンバ変数(クラス変数) Staticメンバ関数(クラス関数) new/delete インスタンス 仮想関数、純粋仮想関数 STL 継承 関連 集約、コンポジション集約 依存 基本クラス、抽象クラス 派生クラス、実装クラス インタフェースと純粋仮想関数 デザインパターン