oo.day07

シューティングゲーム初日:
1. 6つのオブジェクトクラスを作成し、Worldクラステストを作成

シューティングゲームの2日目:
1. 6つのオブジェクトクラスに構築メソッドを追加してテストする

シューティングゲームの3日目:
1.小さな敵の飛行機、大きな敵の飛行機、小さな蜂、弾丸配列をテストし、テストする
2. FlyingObjectスーパークラスをデザインする、6つのオブジェクトクラスがそれぞれ継承する
3. FlyingObjectスーパークラスの2つの構築メソッドをデザインする、オブジェクトクラスは個別に呼び出されます

ゲーム日撮影撮影:
1.小敵のアレイ、ミツバチの組み合わせFlyingObjectアレイ、及び試験の敵少数の大きなアレイ
スーパーオブジェクトクラス6(2.書換ステップ)移動させる
3.絵を窓

シューティングゲーム5日目:
1.クラスのメンバーにアクセス制御修飾子
追加します。2. 6つのオブジェクトクラスに画像属性を追加します。

シューティングゲームの6日目:
1.デザインウィンドウの幅と高さは一定であり、適切な場所で変更を加えます
。2.オブジェクトを描画する:
  1)オブジェクトを描画するには、オブジェクトの写真を取得する必要があります。すべてのオブジェクトは写真を取得できます。
    つまり、写真を取得できます動作は一般的な動作であるため、スーパークラスのデザイン、
    画像を取得する各オブジェクトの動作は異なるため、抽象メソッドとして設計され
    ています---画像を取得するためのFlyingObjectの抽象メソッドgetImage()の設計
  2)異なる状態は、別の画像を取得する必要があるため、画像を取得する際
    には、オブジェクトの状態を考慮する必要があるので、各オブジェクトは、状態を持っている、一般的です
    ので、状態は概ね一定のスーパークラスで設計の状態ですします
    - --- FlyingObjectで3つの定数を設計します。状態変数は
    、写真を取得するときに現在の状態がオブジェクトの状態を判断する必要があることを示します
    各オブジェクトを判断する必要があります。これは一般的なので、デザインはスーパークラスにあり、
    各オブジェクトは判断します状態の動作は同じであるため、デザインは一般的な
    メソッドです- デザインisLife()、isDead()、isRemove()(FlyingObject
  )3)FlyingObjectのgetImage()を書き換えます:
    3.1)Sky Sk y、画像を直接返すだけ
    3.2)箇条書き:
        3.2.1)生きている場合は、画像を直接返すだけ
    3.2.2)死んでいる場合は、直接削除
    3.3)ヒーローマシンヒーロー:
        3.3.1)生きている場合、画像[0]と画像[1]を切り替えて切り替えます
    3.4)小さな敵の飛行機:
        3.4.1)生きている場合は、画像[0]を直接返します
    3.4.2)死んでいる場合、画像[1]を画像[4]に         戻し、4を削除した後、
    3.5)敵機飛行機:
3.4.1)生きている場合、画像[0]を直接
    返す3.4.2)死んでいる場合、戻る画像[1]を画像[4]に回転し、4の後に
    3.6 を削除し
        ます。)飛行機:3.4.1)生きている場合、画像[0]を直接返します
    3.4.2)死んでいる場合、画像[1]を返します]画像に回転[4]、
  4)後に削除4)最初の3ステップで画像を準備した後、描画を開始できます。
    すべてのオブジェクトが描画できるため、描画オブジェクトの動作はスーパークラスで設計され、
    各オブジェクトは描画されます方法は同じなので、デザインは
    一般的なメソッドです。FlyingObjectで共通のメソッドpaintObject()をデザインして、ペイントオブジェクトを実現します
  5)空は毎回2つの絵を描く必要があるため、スーパークラスのpaintObject()を書き直します
    - -SkyでpaintObject()を
  書き換えてオブジェクトを描画します6)Worldクラスでpaint()を書き換えます-paintObject()を呼び出すだけです

シューティングゲームの7日目:
1.敵の入場:
  1)敵はウィンドウによって作成されるため、敵オブジェクトを生成するためにWorldクラスでnextOne()を設計します
  2)実行時に呼び出される敵のエントリが定期的に発生します()実施Enteraction()敵入院
    Enteraction()内において:
      各400ミリ秒は、敵、敵の膨張は、最後の要素に搭載された取得
:2弾丸エントリ
  主人公のクラスに、1)弾丸が主人公機から放出されます弾丸オブジェクトを生成するためのshoot()の設計
  2)弾丸入力が定期的に発生し、run()でshootAction()を呼び出して、弾丸入力を達成します
    shootAction()で:
      300ミリ秒ごとに、弾丸を取得し、弾丸の拡張、追加の配列
3 。飛行物体の動き:
  1)飛行物体の動きは、すべての派生クラスに共通の動作です。すべての派生クラスは
    異なる動作をするため、スーパークラスで設計されています。これは、飛行物体の動きを実現する抽象ステップ()として設計されています。
    すべての派生クラスは、抽象ステップを書き換えます()方法
  2)飛行物体の動きが定期的に発生し、run()でstepAction()が呼び出されて飛行物体の動きが実現されます
    。stepAction()では、
      空が移動し、敵を横切り、敵が移動し、弾丸が移動します。

レビュー:
1.静的な最終定数:
    初期化と同時に宣言する必要があり、アクセスするクラス名をポイントし、変更できません。大文字の
    コンパイラーはコンパイル時に自動的に特定の値に変換されます。
    使用すると高効率:データは変更されず、頻繁に使用されます
2.抽象メソッド:
    抽象、メソッド定義のみ、特定の実装なし
3.抽象クラス:
    抽象、抽象メソッドを含むクラスは抽象クラスでなければならない
    抽象クラスはインスタンス化できない、継承する必要がある、派生クラス:
      1)すべての抽象メソッドを書き換える
      2)抽象クラス
    の意味も宣言する抽象クラス:
      共通の属性と動作をカプセル化する----------コードの再利用
      により、すべての派生クラスに統一型が提供される上向きモデリングに
      は、すべての派生クラスに統一された入り口を提供する抽象メソッドを含めることができます
        。派生クラスの特定の動作は異なりますが、入り口は一貫しています

デザインルール:
1)派生クラスの共通の属性と動作をスーパークラスに描画する-共通性を描画する
2)すべての派生クラスの動作は同じであり、共通のメソッドとして設計されている
  すべての派生クラスの動作は異なる抽象メソッドとして
3)


注:
1.メンバーの内部クラス:低い適用率、理解
  1)クラスのセット、外部クラスは外部外部クラスと呼ばれ、内部クラスは内部内部クラスと呼ばれます
  2)通常、内部クラスは外部クラスのみを処理し、外部には見えません
  3)内部クラスオブジェクト通常のみ、クラスの外で作成されます
  (直接)、民間を含むクラスの外メンバーにアクセスすることができます4)内部クラスを
    その外部のオブジェクトの作成への暗黙の参照があるクラス内の
      外部クラス:例えばName。This。2.
匿名内部クラス:
  1)クラス(派生クラス)のオブジェクトを作成する場合、オブジェクトが1回だけ作成される場合、
    このクラスに名前を付ける必要はありません。匿名内部クラスと呼ばれます
  2)匿名内部クラス外部変数にアクセスしたい場合、変数はfinalでなければなりません(以前はJDK1.7(包括的))

インタビューの質問:
Q:内部クラスの独立した.classはありますか?
A:はい

関数を実装する手順:
1)最初に動作を記述します:
  1.1)特定のクラスのオブジェクトに固有
  の動作を設計します1.2)スーパークラスのすべてのオブジェクトに共通の動作を設計します
2)ページを呼び出します:
  2.1)時間トリガー、タイマーで呼び出される
  2.2)イベントトリガー、リスナーで呼び出される

プログラムの実行結果が期待した結果と異なる場合:
1)パイル:System.out.println(データ);
2)デバッグツール


時限、マルチスレッド


5 + 1 -----------プラス1
5 +(-1)--------マイナス1


int shootIndex = 0;
public void shootAction(){// 10ミリ
  秒shootIndex ++;
  if(shootIndex%30 == 0){// 300ミリ秒
    Bullet [] bs = hero.shoot();
    bullets = Arrays.copyOf(bullets、bullets.length + bs.length);
    System.arraycopy(bs、0、bullets、bullets.length-bs.length、bs.length); //数组的追加
  }
}

class Hero {
  public Bullet [] shoot(){//弾丸オブジェクトを生成する(ヒーローマシンが弾丸を発射する)
    int xStep = this.width / 4; // 1/4ヒーローマシンの幅
    int yStep = 20;
    if(doubleFire> 0 ){// Double
      Bullet [] bs = new Bullet [2];
      bs [0] = new Bullet(this.x + 1 * xStep、this.y-yStep); 
      bs [1] = new Bullet(this.x + 3 * xStep、this.y-yStep); 
      doubleFire- = 2;
      return bs;
    } else {// Single
      Bullet [] bs = new Bullet [1];
      bs [0] = new Bullet(this.x + 2 * xStep、this.y-yStep); 
      return bs;
    }
  }
}

int enterIndex = 0; //カウンター
public void enterAction(){//
  10ミリ秒ごとにインデックス++を入力; //
  (enterIndex%40 == 0)の場合、10ミリ秒ごとに1ずつ増加{// 400(40 * 10)ミリ秒
    FlyingObject obj = nextOne();
    enemies = Arrays.copyOf(enemies、enemies.length + 1);
    enemies [enemies.length-1] = obj;
  }
}


paint()メソッドを呼び出す方法:
1)frame.setVisible(true);
2)repaint();


5人の敵ともう1人の敵がいるとします


敵の入場:
弾丸の入場:
飛行物体の動き:


  //敵(小さな敵の飛行機、大きな敵の飛行機、小さな蜂)オブジェクトを生成します
  public FlyingObject nextOne(){
    Random rand = new Random();
    int type = rand.nextInt(20); // 0から19
    if(type < 4){// 0から3は
      新しいBee();を返す
    } else if(タイプ<12){// 4から11は
      新しい飛行機();を返す
    } else {// 12から19は
      新しいBigAirplane();を返す
    }
  }

    ランダムrand = new Random();
    int type = rand.nextInt(3); // 0到2
    if(type == 0){
      return new Bee();
    } else if(type == 1){
      return new Airplane();
    } else {
      return new BigAirplane();
    }

デザインタイプの理由:
  小さな敵オブジェクト、
  大きな敵オブジェクト、
  小さな蜂オブジェクトの両方を受け取ることができます


敵のエントリ:
  敵はウィンドウによって生成されるため、動作はウィンドウクラスで設計されます

弾丸エントリ:
  弾丸はヒーローマシンによって生成されるため、動作はヒーローマシンクラスで設計されます。

飛行物体の動き:
  飛行物体の動きは一般的な動作であるため、動作はスーパークラスで設計されています

1)敵の入場
2)弾丸の入場
3)飛行物体の移動


              TimerTask、long、long
timer.schedule(new TimerTask(){
  public void run(){//)定期的に実行される処理は、10ミリ秒ごとに1回歩きます
    //敵の進入、弾丸の進入、飛行オブジェクトの移動
    //。 ..
    // ...
  }
}、10,10);


クラスAOOは延び?{
  
}

最初の10:プログラムの開始
から最初のトリガーまでの時間間隔2番目の10:最初のトリガーから2番目のトリガーまでの時間間隔
        2番目のトリガー
    から3番目のトリガーまでの3 番目のトリガーまでの時間間隔2番目のトリガーから4番目のトリガーまでの時間間隔
    ...

文字、数字、_および$記号

Mama $ Baby.class
NstInnerClassDemo $ 1.class
NstInnerClassDemo $ 2.class
NstInnerClassDemo $ 3.class


jdk1.0 / 1.1 / 1.2 / 1.3 / 1.4 / 1.5 / 1.6 / 1.7 -----メモリはほとんど変更されていません
jdk1.8 --------------------- ------------いくつかの変更が行われました


Aoo o1 = new Aoo();
Boo o2 = new Boo(); //コンパイルエラー

クラスAoo {
  private int a;
  void create(){
    Boo o = new Boo();
  }
  クラスBoo {
    void test(){
      System.out.println(a);
      System.out.println(Aoo.this.a);
      System.out.println(this.a); //编译错误
    }
  }
}

アイテム機能:
1)敵の入場
2)弾丸の入場
3)飛行物体の移動

元の記事を33件公開 賞賛された4件 2725を訪問

おすすめ

転載: blog.csdn.net/qq_41650000/article/details/81107407