2012-04-30 18 views
1

私は約8週間Javaを勉強していましたが、クラスのために形状の推測ゲームを設計しなければなりませんでした。はい、それは宿題です。そこで私は4つのシェイプクラスを以下の例で構築しました。JOptionPaneを使ったゲームの推測 - Java

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); 
    } 
} 

私は、それは私が、私はほんの少し苦労し始めていますshapeGuesserクラスに達したことを、今だ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; 
    } 
} 

を作成しました。私は自分のゲームとその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];    

    } 

} 

これを読んで、とにかく私を啓発する時間があるかもしれません。大変感謝しています。

おかげで、

+0

ヒント:ゲームを続行するかどうかを判断するには、ある種のループとブール値が必要です。 –

+0

私はWhileループを使用する必要があることを知っていますが、どこから始めるべきかについてもわかりません。以前はJOptionPaneを使用する必要はありませんでした。 – Anderscc

+0

私はあなたのゲームをコマンドラインで作業しようとすることから始めます。あなたのロジックのすべてをしばらく置いて、ユーザーに推測させてください。作業をしたら、GUIに組み込む必要があります。ここではチュートリアルです:http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html –

答えて

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、またはその整数を使用するスイッチ/ケースがあります。 (代わりにif/else/elseを文字列と同じように使用しますが、必ず.equals()not ==を使用してください)

これで質問をし、選択しました。今あなたがシェイプの基本メソッドを呼び出す必要がありますので、

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

は、あなたがshapeChoiceに対処することがあります2と3のために同じことを行うプリントアウト。ただし、実行時にオブジェクトが正方形または長方形の場合、shapeChoice.getSides()を呼び出すと、正方形または長方形の実装が呼び出され、必要な答えが得られます。 :)

あなたがしなければならないことは、ループバックして、何度も何度も質問して、ユーザーが望むならば、彼に推測させて、彼の答えをチェックしてください! (.equals(shapeChoice。

)その間に質問をして答えたいかどうかを確認するために、while(true)foreverループがあります。彼らが正しいと答えたら、あなたは勃発します。それ以外の場合は、ループバックして、どのヒントを希望しているかを尋ね続けます。

EDIT:実際に、私はそれを見ているので、あなたは多形性を実践しているので、もう少し使ってください。今、別々のクラスがありますが、それらのクラスを構築する際にはすべての情報を渡しています。代わりに:

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

は、本質的にEVERY正方形のオブジェクトはこのようになるだろうされていないので、何があるの

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"; 
    } 
} 

を定義する四角形の定義の一部を、それがより

square s = new square(); 

ようなことがありますとしていますその理由をパラメータにする必要があります。それは正方形の定義の一部です。

+0

大変感謝しています。今は私のために多くのことがクリアされています。私は、それがどこに行く必要があるかについてはるかに自信があります。再度、感謝します。 – Anderscc