0

だから私は高校のオンラインJavaクラスを取っていますが、私の先生は役に立ちません...だから私たちは抽象化について学んでいて、私は動く私の「エイリアン」クラスですでにこれをやっていました。 2つの画像を切り替えることで逆方向に進む別のもの...しかし、例でコードを示したとき、それは複雑すぎるように見え、何かが足りないのではないかと思っていました。

マイコード

private String avatarRight = "Alien.png";
private String avatarLeft = "Alien1.png";
/**
  * Act - do whatever the Alien wants to do. This method is called   whenever
  * the 'Act' or 'Run' button gets pressed in the environment.
  */
public void act() 
 {
     movement(avatarRight, avatarLeft);
     gatherPart();
 }

(移動メソッドを含むスーパークラス)

/**
* Sets up the movement keys and facing for the Object
*/
public void movement(String avatarRight,String avatarLeft)
{
     if (atWorldEdge() == false)
      {
        if (Greenfoot.isKeyDown("w"))
         {
            setLocation(getX(), getY()-2);
         }
        if (Greenfoot.isKeyDown("d"))
         {
            setImage(avatarRight);
            setLocation(getX()+2, getY());
         }
        if (Greenfoot.isKeyDown("s"))
         {
            setLocation(getX(), getY()+2);
         }
        if (Greenfoot.isKeyDown("a"))
         {
            setImage(avatarLeft);
            setLocation(getX()-2, getY());
         }
      }
     else
      {
      }
}

彼らのコード

{
    private GreenfootImage image1;
    private GreenfootImage image2;
    private boolean isKeyDown;
    private String key;
    private String sound;
    /**
    * Create a Duke and initialize his two images. Link Duke to a specific keyboard
    * key and sound.
    */
   public Duke(String keyName, String soundFile)
   {
        key = keyName;
        sound = soundFile
        image1 = new GreenfootImage("Duke.png")
        image3 = new GreenfootImage("duke2.png")
        setImage(image1);
    }

}

avatarRight = "この画像"

彼らは言う key = keyname

キー = 「キー」

編集:それで、それをセットアップする方法と私が最初にセットアップした方法は

private int rotation;
public Capsule(int rot)
{
    rotation = rot
    setRotation(rotation);
}

しかし、私が知る限り、以下のものは完全にうまく機能します。以下のコードではなく上記のコードを実行する理由はありますか

public Capsule(int rot)
{
    setRotation(rot);
}
4

1 に答える 1

0

OK、解説に基づいて、私はあなたが同じものを比較していないと言う傾向があります.

私が avatarRight = "this image" と言ったところで、彼らは key = keyname key = "key" と言います

それは正確ではないようです。あなたが言うところ

private String avatarRight = "Alien.png";private String avatarLeft = "Alien1.png";

彼らは png をコンストラクターに"Duke.png"andとしてハードコーディングして"duke2.png"いますが、これにはエラーが含まれていますimage3

したがって、keyNameあなたが言うように直接マップしているようには見えません。おそらく、コードをさらに調査して、両方の例で がどのように使用されているか、keyまたは同等のコードが提供されているかを確認して、違いをさらに確認できるようにする必要があります。

それを見ると、おそらくどこかにマップがあり、特定のまたは他のタイプのゲームオブジェクトkeyにアクセスするために使用されます。alien


あなたの編集に対処するため。

以下のコードではなく上記のコードを実行する理由はありますか

理由に値があるかどうかをそのコードで判断することはできません。あなたが示したものには見えません。私がそうする理由は、他の場所でその値が必要であるが、今は必要ないからだと言えます。それには、さまざまな理由が考えられます。利用可能なすべてのコードを調べて、その変数を渡さずに他の場所で使用しているかどうかを確認する必要があります。その後、その理由または欠落を発見しました。

于 2015-04-04T22:46:35.760 に答える