1

ですから、私はJavaを約8週間勉強していて、クラスでは形を推測するゲームを設計する必要がありました。はい、宿題です。そこで、以下の例を使用して4つの形状クラスを作成しました。

public class square extends shape {

    //square member variables
    boolean equalSides = true;

    // check if sides are equal
    public boolean isEqual() {
        return equalSides;
    }

    //constructor
    public square(int numsides, String shapeName, boolean b, String shapehint) {
        super(numsides, shapeName, shapehint);
    }
}

次に、shape.javaクラスを作成しました

public class shape {

    int numSides;
    String shapeName;
    String shapeHint;

    public shape(int numsides, String shapename, String shapehint) {
        numSides = numsides;
        shapename = shapeName;
        shapehint = shapeHint;
    }

    //getter methods
    public int getSides() { 
        return numSides;
    }
    public String getName(){    
        return shapeName;
    }
    public String getHint(){
        return shapeHint;
    }
}

少し苦労し始めたshapeGuesserクラスにたどり着きました。ゲームとそのJOptionPane側にガードを組み込む方法がわかりません。ユーザーが正しい形状を推測するまで、shapeGuesserを実行する必要があります。

最初にこのオプションをユーザーに提示するように指示されました。

どんな質問をしましょうか?

番号を入力してください:1。辺はいくつですか?2.あなたの側は同じ長さですか?3.ヒント

1、2、または3と入力した数字に基づいて、その形について質問されます。したがって、Shapeには適切な応答が用意されている必要があります。

import javax.swing.JOptionPane;
import java.util.Random;


public class shapeGuesser {
    public static void main(String[] args, Object Do) {
        // TODO Auto-generated method stub
        // the shape the program uses

        int random;         
        shape shapeChoice;      
        // create shapes
        square s = new 
                square(4, "Square", true, "Geeks were called this in the 80s");
        Rectangle r = new Rectangle(4, "Rectangle", false, "Not Pentangle");
        Triangle t = new Triangle(3, "Triangle",false, "Toblerone");
        Circle c = new Circle(0, "Circle",true, "Circle Circle Circle");

        //declare shape array
        shape[] Shapes;

        //create shape array
        Shapes = new shape[4];

        //put shape objects in shape array
        Shapes[0] = s;
        Shapes[1] = r;
        Shapes[2] = t;
        Shapes[3] = c;

        // generate random number
        random = (int) (1 + (Math.random() * 3));

        //pick shape from shape array based on random number
        shapeChoice = Shapes[random];               

    }

}

ここまで読んで、とにかく私を啓発する時間があるかもしれない人は誰でも。よろしくお願いします。

ありがとう、

4

1 に答える 1

1

isEqual()は、すべてのシェイプで呼び出すすべてのメソッドと同様に、基本クラスであるシェイプに実装する必要があります。基本形状がfalseを返すようにします。(理想的には、形状は抽象的である必要があります。これにより、基本的な形状オブジェクトを作成できなくなります。正方形、長方形などのみを使用できますが、これは新しいものであり、他の誰もこれを使用することはありません。したがって、基本形状を作成することはできません。 。しかし、将来的には、それが抽象の目的です^^)次に、他のすべての形状に、正方形がすでに行っているように、そのベースisEqual()をオーバーライドさせます。

あなたは元気です!ランダムな形状を選択し、多くの形状を作成しました。

次に、オプションを出力するループを作成します。

system.out.println("Enter Number: 1.How many sides? 2.Are your sides the same length? 3. Hint");

次に、ユーザー入力を取得し、それを整数に解析します。その整数を使用するif/else/elseまたはswitch/caseを用意します。(または、文字列をそのまま使用してif / else / elseを使用しますが、==ではなく.equals()を使用するようにしてください)

これで、質問をして、1つを選択しました。今、あなたは印刷します

if(userInput.equals("1")){
system.outprintln("How many sides? " + shapeChoice.getSides());
}

2と3についても同じことを行います。shapeChoiceを処理するので、shapeの基本メソッドを呼び出す必要があります。ただし、実行時にオブジェクトが正方形または長方形の場合、shapeChoice.getSides()を呼び出すと、正方形または長方形の実装が呼び出され、必要な答えが得られます。:)

次に、ループバックして何度も質問をし、ユーザーが希望する場合は、推測して答えを確認するだけです。(.equals(shapeChoice.getName())と比較してください)

したがって、大きなwhile(true)foreverループがあり、その中で質問をして、回答したいかどうかを確認できます。彼らが正しく答えれば、あなたは勃発します。それ以外の場合は、ループバックして、どのヒントが必要かを尋ね続けます。

編集:実際、私がそれを見た今、あなたはポリモーフィズムを実践しているので、おそらくもう少しそれを使うべきです。現在、個別のクラスがありますが、それらを構築するときにすべての情報を渡します。それ以外の:

square s = new square(4, "Square", true, "Geeks were called this in the 80s");
Rectangle r = new Rectangle(4, "Rectangle", false, "Not Pentangle");

もっと似ている

square s = new square();

正方形の定義の一部が本質的に定義されている

public class square extends shape {
//square member variables
boolean equalSides = true;
int numSides = 4;
//and so on

//OR even better, don't define them, since the base class already does!
//merely set the values in the constructor
public square(){
       numSides = 4;
       equalSides = true;
       shapeHint = "Geeks were called this in the 80s";
    }
} 

すべての正方形のオブジェクトはこのようになるので、パラメータにする必要はありません。それは正方形の定義の一部です。

于 2012-05-01T22:12:51.117 に答える