2014-04-23 3 views
0

드라이버 클래스 사용하여 바둑판 :배열과 객체 지향 프로그래밍

//Objective: make a 10X10 Grid appear 
    //it should be a red and white or black and white 
    //checkerboard. 

    public Checkers() 
    { 
     con.setLayout(new FlowLayout()); 
     for (int xDimension = 0; xDimension<theGrid.length; xDimension++) 
     { 
      for (int yDimension = 0; yDimension< theGrid[xDimension].length; yDimension++) 
      { 
       theGrid[xDimension][yDimension] = new Block(xDimension,yDimension); 
      } 
     } 

     //pass in the row and column numbers to the constructor 
     //these will define where the Blocks appear. 
     t.start(); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 



    public void paint(Graphics gr) 
    { 
     Image i=createImage(getSize().width, getSize().height); 
     Graphics2D g2 = (Graphics2D)i.getGraphics(); 
     for (int x = 0; x < theGrid.length; x++) 
     { 
      for (int y = 0; y < theGrid[x].length; y++) 
      { 
       theGrid[x][y].draw(g2); 
      } 
     } 
     g2.dispose(); 
     gr.drawImage(i, 0, 0, this); 
    } 
} 

블록 클래스 :

public class Block 
{ 
    private int x, y, width, height, rowNum, colNum; 
    private Color color; 


    public Block(int xDimension, int yDimension) 
    { 
     Random ra = new Random(); 
     xDimension = rowNum; 
     yDimension = colNum; 
     //finish 

    public void draw(Graphics2D gt) 
    { 
     // put your code here 

     if (rowNum % 2 == 0) 
     { 

      if (colNum % 2 == 0) 
      { 
       gt.fillRect(x, y, 20, 20); 
       gt.setColor(Color.RED); 
      } 
      else if (colNum % 2 == 1) 
      { 
       gt.fillRect(x, y, 20, 20); 
       gt.setColor(Color.WHITE); 
      } 
     } 
     else if (rowNum % 2 == 1) 
     { 

      if (colNum % 2 == 0) 
      { 
       gt.fillRect(x, y, 20, 20); 
       gt.setColor(Color.WHITE); 
      } 
      else if (colNum % 2 == 1) 
      { 
       gt.fillRect(x, y, 20, 20); 
       gt.setColor(Color.RED); 
      } 
     } 
     //Red/Black/white color. 
     gt.drawString("R:"+rowNum+", C:"+colNum, x+3, y +3); 
    } 

    public void getLocation() 
    { 
    } 

} 

프로그래밍을 위해, 우리는 코드 선생님이 만든을 사용하여 바둑판을 만들고 있어요을하지만 우리는 기입해야 나머지는 //를 통해 지침을 남겼습니다. 이 assigment의 요지는 바둑판을 프로그램하는 것입니다 (색상이 번갈아 가며 다른 모든 블록은 빨간색입니다). 블록 내에서 어떤 행과 열이 있는지 알 수 있습니다. 단순히 프로그램을 가져 오는 데 어려움이 있습니다. 나타나서 내 문제를 정확하게 지적 할 수 없다. 미리 감사드립니다!

답변

0

은 왜 Block.java에서 무승부 방법에

if (rowNum % 2 == 0) 
... 
else if (rowNum % 2 == 0) 

을해야합니까?

은 아마 당신은 두 번째가 문제를 해결할 수

else if (rowNum % 2 == 1) 

것으로 의미한다.

+0

나는 내 코드를 망치고 있었고 나는 그것을 간과했다고 생각한다. 그 점을 지적 해 주셔서 감사합니다! – user3528001

0

오버플로가 새로 추가되었지만 머리가 위로 올라갔습니다. 여기 사람들은 모든 코드를 읽고 숙제하는 것을 좋아하지 않습니다. 당신은 시작을하고 당신이 가지고있는 문제에 대해 특정한 질문을하기로되어 있습니다. 단지 그것이 효과가 없다고 말하면서 사람들에게 당신을 위해 그것을 쓰도록 요청하지 말아야합니다. 여기서 질문을하기 전에 강좌 노트와 강좌 참조를 살펴보십시오. 즉, 나는 당신을 시작하도록 노력할 것입니다.

먼저 블록 클래스를 완료해야합니다. 생성자에서는 두 개의 매개 변수를 지정하지만 사용하지 마십시오. 이 문제를 해결하려면, 당신의 코드는 아마 말을해야 :

public Block(int xDimension, int yDimension) 
{ 
    rowNum = xDimension; 
    colNum = yDimension; 
    //finish 
} 

당신이 코드에서이 생성자를 호출

, 당신은 말을한다 : 그것은 보드입니다

theGrid[xDimension][yDimension] = new Block(xDimension, yDimension); 

이이 블록을 말할 것이다. 너비와 높이뿐만 아니라 각 블록의 x와 y도 설정해야합니다. 여러분이 채울 수있는 것들이 많이 있습니다 만, 제 추측으로는 교수님이 여러분에게 몇 가지 참조를 주셨습니다. 그래서 여러분은 완전히 어둠 속에 있지 않습니다. 당신이 정말로 당황한 사람이라면 항상 근무 시간도 있습니다.

행운을 빈다.

+0

팁 주셔서 감사합니다! 우리 선생님은 강의실 환경을 가르치고 있습니다 (저는 고등학교 1 학년생입니다) 그래서 저는 참고 용으로 0 노트와 교과서가 없습니다 : (그리고 이것은 이전에 한번도 해본 적이없는 (2D 배열) 것이기 때문에 저는 couldnt합니다. 참조 오래된 코드 중 하나. 나는 무엇이 중요하고 어떤 것이 었는지 전혀 몰랐다. – user3528001