2004年度JAVAゼミコンテスト作品 「Othello」

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.
Othello Let us cling together. メンバー 班長 杉本友宏 プログラマー 京谷貴平 アルゴリズム 佐野祐之 パワーポイント 菊澤遼平 発表 川本敏和.
バーコード 概要と構造 利点と用途 作成. バーコードとは バーとスペースの組合せにより、数字や文 字を機械が読み取れる形で表現したもの (下図)
特別課題 あまりにも優秀すぎて, 時間をもてあましている人へ.
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
プログラミング基礎I(再) 山元進.
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
HSPでのミニゲーム作成 早稲田実業学校PC班 Y氏.
コンピュータ囲碁の仕組み ~ 将棋との違い ~
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
最適化ソルバーのための Python言語入門
基礎プログラミングおよび演習 第8回.
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
JAVA.
C言語 配列 2016年 吉田研究室.
アルゴリズムとデータ構造 2011年6月13日
モンテカルロ法と囲碁・将棋ソフトの人知超え
条件式 (Conditional Expressions)
単位 おねだり ☆オセロ おねだり隊☆D班.
システム開発実験No.7        解 説       “論理式の簡略化方法”.
アルゴリズムとデータ構造 補足資料10-2 「nクイーン」
情報 第2回:状態遷移 その2.
JAVAでつくるオセロ 伊東飛鳥、宮島雄一 長畑弘樹、ソギ原直人.
(Wed) Edited by KON IT講習会 一太郎編.
情報論理工学 研究室 第6回: リバーシの合法手生成.
~オセロゲーム~ アルゴリズムとそのプログラム
スマホゲームとお金について ~課金のしくみ~
インタラクティブ・ゲーム制作 <プログラミングコース>
Borland Delphi 6 でビジュアルプログラミング
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
第4回 javaのプログラミング 04A2029           古賀慎也.
シューティングゲーム.
プログラミング入門 電卓を作ろう・パートIV!!.
前回の練習問題.
リーダー 亀山奈央 プレゼンター 橘貴志 アルゴリズム 古森愛美 プログラマー 中島宏基 パワーポイント 公文ゆい
第6回:ラケットを動かそう! (キーボードによる物体の操作)
4人版リバーシYoninの解析 情報論理研究室 藤本 侑花
BLACK JACKの作成 ブラックジャックのルール 概要 勝敗の判定 開発中の問題点 Aの扱いについて 配り直し(DEAL) 工夫した点
JAVAについて 高橋 雅哉.
G班メンバー リーダー 橋本望 SE 北本理紗と服部友哉 PPT作成 橋本望と山田侑加
京都大学大学院情報学研究科 宮川博光 伊藤大雄
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
スマホゲームとお金について ~課金のしくみ~
基礎プログラミング演習 第12回.
プログラミングⅠ 平成30年10月22日 森田 彦.
コンピュータグラフィックス 実習3: 光線追跡法
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
Problem L: シャノワール 問題作成: 高橋 解法作成: 安達・高橋・前原 解説: 安達.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
プログラミング入門 電卓を作ろう・パートI!!.
数値解析ⅡーI ~オセロゲームのプログラム~
アルゴリズムとデータ構造 2012年6月11日
大阪工業大学 情報科学部 情報科学科 学生番号 A 苧谷 真行
第6回:得点を表示しよう! (文字の表示、乱数)
リバーシ 06a1056 藤田将義.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
数値解析Ⅱ ~五目並べのプログラミング~ C班.
or-8. ゲーム理論 (オペレーションズリサーチを Excel で実習するシリーズ)
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
Othello G班         山崎 木下 山本 上手      .
GUI部品とイベント処理の例 マインスィーパもどきの作成 倉敷芸術科学大学 産業科学技術学部 梶浦文夫.
プログラミング入門 -「計算」に注目して考える-
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

2004年度JAVAゼミコンテスト作品 「Othello」 2ADM3110  田中 貴之

この作品をつくった動機 ・ 菊池研HPにあるサーブレットのテキストページの課題の所にある並木さんがつくったオセロに刺激を受けてしまったため。     →挑戦したくなった!! ・ アプレットで何かしらゲームを作ってみたかったため。

<Othelloの簡単な説明> ネット内においてあるオセロゲームとほとんど変わりありません。(ただ単に挑戦したかっただけなんで、ネタ要素やひねりとかほとんど存在しません) コンピュータがお相手しますが、乱数で石を置くところを決定しているのではっきりいってかなり弱いです。

<主な変数> int turn; 順番を表す(1=黒、2=白) boolean place;    順番を表す(1=黒、2=白) boolean place; 石が置ける場所の判定(true=置ける,false=置けない) int stone[64]  石の状態を表す(0=なし、1=黒、2=白) boolean flag; ゲームの終了判定(盤面が石で埋まってるかどうか) nw=白石、nb=黒石 で石の数を数えて勝負を判定する。 ※booleanとは、「true」と「false」のみの結果を返す変数です。要するに、「OK」なのか「だめ」なのかの判定に使用。

<オセロの表示> 石は、drawOvalメソッドを使用して描きました。 オセロ盤は、あらかじめマス目の幅squareと盤面外の余白marginを設定しておき、8*8のマス目になるよう、for文で幅を足していきながら、drawLine()で線を引きました。 PASSボタンとRESETボタンはmousePressedメソッドを使用して、ある座標の範囲に押されたら実行するようになっています。  PASS・・・順番を管理するturnの値を変更して、相手に順番を回す(turn = 3 - turn と設定することで相手に回る)  RESET・・・初期設定のinit()メソッドを呼び、石の配置を初期値に戻す。

<勝負の判定> 黒石と白石の数は、それぞれblack()メソッドとwhite()メソッドで数を数えて、先ほどでたnw(白石),nb(黒石)に入れていく。 ゲームの終了の判定は、boolean変数のisNotEndメソッドで調べて、flagに結果を入れる。(flagが「false」なら終了で、このときnw,nbの値を比較して判定結果を表示します)

オセロ盤の座標の設定 →→→ col ↓ ↓ row 座標位置はnx か ny(反転のとき使用)という形で表す。      ↓ ↓ row 座標位置はnx か ny(反転のとき使用)という形で表す。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 56 60 61 62 63

<どのマスに押されたか> 石が置かれた場所のマスの番号nxの計算 ixとiyはマウスが押されたマス座標(ix,iy)を表している。 rx = (ix-margin) / square;  //colの値   ry = (iy-margin) / square; //rowの値 nx = ry * n + rx;   盤面上に押されれば、押された座標(ix,iy)からマス目の幅で割って,colとrowとマス目の数nを使って位置を計算します。

<石が置けるかどうか?> Checkメソッドで行います。 まず、石を置いて、そこから8方向を調べて、石が置いてあるか&隣が同じ石でないかを判定する(周りに石がない&すべて同じ石だと置けない) 違う色の石があった場合、その石がある方向に自分の色の石を見つけるまで1個ずつ進める。(なければ戻って他の方向を判定し直す) 同じ色の石が見つかった場合、その石と置いた石に挟まれた全ての違う色の石をひっくり返しながら、置いた石の位置まで戻っていく。 そして、8方向すべて判定するまで続けます。

<その他> huntenスレッド 一気にひっくり返るのではなく、1個ずつ戻っていくような感じでひっくり返るように設定。 updateメソッド  一気にひっくり返るのではなく、1個ずつ戻っていくような感じでひっくり返るように設定。 updateメソッド  石が置かれるごとに表示を更新していくメソッド   どっちの石がユーザーかコンピュータかが分かるように、表示するように設定。

<感想> <参考文献> マス目やら現在の石の個数など、うまく表示されなかったのがかなり辛かった。直すだけでもかなりの時間がかかった。 コンピュータがかなり弱いと感じるので、暇があればもう少し強いコンピュータの設定をつくってみたい。 <参考文献> ・JAVA言語(入門ソフトウェアシリーズ)  ナツメ社  河西朝雄 ・JAVAゲーム・アプレット         I/OBooks社  村山要司 他2冊とWEBページあちらこちら参照