0

(2^n) のサイズをユーザーに求める正方形の GUI グリッドがあります。次に、グリッドに白い四角または「穴」を配置するための座標を求めます。ユーザーが入力した「穴」をグリッドに入れるのに問題があります。

私のコード (メイン メソッド) でわかるように、試みがありますが、機能しません。この「穴」をグリッドに配置する方法はありますか?

*現在、このエラーが発生し続けています:無効なメソッド宣言。戻り値の型が必要です...... *しかし、私のメソッド myPan がエラーなしでまったく同じように機能するのに、なぜこれを取得するのですか?

  import java.util.*;
import java.awt.*;
import javax.swing.*;
class trominoWarZ{
        private int currentNum;
        private int[][] grid;
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("What size board do you want?");
        double pw = input.nextDouble();

        System.out.println("Coordinates of missing square?");
        int x = input.nextInt();
        int y = input.nextInt(); 

        myHole hole = new myHole(x,y);     //WANT TO SET x,y coord to WHITE 

        super.drawHole(g,x,y);      

        myPan panel = new myPan(pw);      //this is how it reads size of board

        JFrame application = new JFrame();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.add(panel);           
        application.setSize(400, 400);
        application.setVisible(true); 
    }
}

class myPan extends JPanel{

    public double pow;
    public double hc;

    public static void drawHole(Graphics g, int x, int y) {    
    g.setColor(Color.WHITE);
    g.fillRect(g,x,y);

    }
    public myPan(double p){
        pow = p;
    }

    public myHole(int h){
        hc = h;                     //I will have the var hc to use for the hole
        drawHole(hc);
    }    
    public void paintComponent(Graphics g){

        super.paintComponent(g);   
        double num = Math.pow(2,pow);
        double across;
        double up;
        if(pow % 2 == 0){ //is a square
//             System.out.println("square");
            across = Math.pow(num,0.5);
            up = across;
        }
        else{
            double x = Math.floor(pow/2);
            double y = x + 1;
            across = Math.pow(2,x);
            up = Math.pow(2,y);
        }
//         System.out.println(across);
//         System.out.println(up);
        //
        //
        double wid = 400/across; //width of one
        double hi = 400/up; //height of one
        double nowX = 0;
        double nowY = 0;
        for(int i = 0; i < up; i++){ //top to bottom
            nowX = 0;
            for(int j = 0; j < across; j++){
                //System.out.print("*");
                g.setColor(Color.BLACK);
                g.drawRect((int)nowX, (int)nowY, (int)wid, (int)hi);
                nowX = nowX + wid;
            }
            nowY = nowY + hi;
            //System.out.print("\n");
        }

        //grid or whatever = g.fill
    }
    }



//     public static void tromino(int size, int x, int y) {
//             int actualsize = 1;
//             while (actualsize < size) actualsize*=2;
// }
4

1 に答える 1

0

あなたの最初の問題は

g.setColor(Color.WHITE);
g.fillRect(x,y);

g.fillRect(x,y) は、入力した値を処理できません。

于 2013-11-10T08:52:58.390 に答える