オブジェクト指向へ向けて

クラスとインスタンス

  • クラスは,関連した情報をひとつにまとめたもの
  • クラスは,フィールドとメソッドを持つ.
    • フィールドは,変数のようなもの
    • メソッドは,関数のようなもの
  • クラスから作られた「具体的なもの」(具体例,実体,実例)をインスタンスという.
  • クラス宣言
    public class クラス名 {
        フィールドの宣言
        メソッドの宣言
    }
  • インスタンスの作り方
    クラス名  変数  =  new  クラス名();
  • フィールドへの代入
    インスタンス.フィールド名 = 値;

コンストラクタとメソッド

  • コンストラクタは,インスタンスの初期化を行うもの.
    • コンストラクタは,クラス名と名前が同じ.
    • 戻り値の型が書かれていない.
  • thisは,現在のインスタンスを示す.
  • toStringメソッドは,そのクラスの標準的な文字列表現を定めている.

クラスの利用

  • クラスは,フィールドとメソッドを持っている
    • フィールドには,インスタンスフィールドと,クラスフィールドの2種類ある.
    • メソッドには,インスタンスメソッドと,クラスメソッドの2種類ある,

      クラス宣言の枠組み

        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
       13
       14
       15
       16
      
      public class クラス名{
      	型	フィールド名;
      	型	フィールド名;
      	型	フィールド名;
       
      	型	メソッド名( 引数列 ) {
      		型	変数名;
      		…
      	}
       
      	型	メソッド名( 引数列 ) {
      		型	変数名;
      		…
      	}
       
      }

主なロボットのmethod

ロボットの色

setColors(ボディの色, 砲塔の色, レーダーの色);
setColors(Color.red,Color.blue,Color.green);
選べる色:
black, darkGray, lightGray, gray, green, cyan, blue, magenda, red, orange, pink, white, yellow

ロボットの動作:

前進ahead(距離)
後退back(距離)
右回転turnRight(角度)
左回転turnLeft(角度)
砲塔右回転turnGunRight(角度)
砲塔左回転turnGunLeft(角度)
レーダー右回転turnRadarRight(角度)
レーダー左回転turnRadarLeft(角度)

ロボットの情報収集:

進行方向(絶対角度)getHeading()
スピードgetVelocity()
X座標getX()
Y座標getY()
砲塔方向(絶対角度)getGunHeading()
エネルギーgetEnergy()
名前getName()
getWidth()
高さgetHeight()

バトルフィールドの情報:

getBattleFieldWidth()
高さgetBattleFieldHeight()

さまざまなイベント:

イベント内容イベントメソッド引数
敵を発見した場合onScannedRobot()ScannedRobotEvent e
敵の攻撃を受けた場合onHitBybullet()HitByBulletEvent e
壁に衝突した場合OnHitWall()HitWallEvent e
他のロボットと衝突した場合onHitRobot()HitRobotEvent e
ロボットが勝ち残った場合onWin()WinEvent e

Robocode詳細

第2回レポート

Robocodeで,以下のロボットプログラムをつくりなさい.

  1. 起動時初期位置から,バトルフィールドの中心に移動して,上を向いて止まる.
  2. 初期位置から,バトルフィールド中心を半径として,バトルフィールド中心を中心として円運動するロボット.ことのき,半径がバトルフィールドの短辺に収まらない場合は,中心へ向けて,移動後,円運動すること.
  • 締め切り:12月28日正午
  • 形式:
    • package名:e15_1
    • 学籍番号_2_1.java,学籍番号_2_2.java(E155701_2_1.java, E155701_2_2.java)
    • 学籍番号_2というフォルダを作り(E155701_2),上記ファイルを入れて,zip圧縮して,そのファイルをアップロードせよ. (例:e155701_2.zip)
  • 各ソースファイルには,コメントでプログラムの説明をつけること.
  • プログラムヘッダ部にコメントで,氏名等の記述を忘れいないこと.
  • 提出先:koji@ie.u-ryukyu.ac.jp

ヒント

  • 現在地のx座標をpxとすると,pxは,次のようにして求められる.
    double px = getX();
  • バトルフィールドの横幅をもとめるには,bwとすると,
    double bw = getBattleFieldWidth();
  • x軸の方向に回転するには,
    turnRight(90-getHeading());
  • 三角関数sin, cosを使うには,Mathライブラリをつかう.sin関数,cos関数は,それぞれ,aは,ラジアン
    Math.sin(a);
    Math.cos(a);


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-14 (月) 13:01:24 (1378d)