Skip to content

Instantly share code, notes, and snippets.

@irrationnelle
Created October 8, 2016 19:23
Show Gist options
  • Save irrationnelle/9a09a6e7c5919306a51526ac6f93b661 to your computer and use it in GitHub Desktop.
Save irrationnelle/9a09a6e7c5919306a51526ac6f93b661 to your computer and use it in GitHub Desktop.
보드 인터페이스
package team_project;
public interface BoardInterface {
/*
* 보드의 width = 10, height = 22 는
* 각각 가로로 10개의 사각형(사각형 네 개가 모여 피스 하나를 이룸),
* 세로로 22개의 사각형을 의미합니다.
* 따라서, 보드판의 크기는 사각형 한 면의 길이에 따라 다릅니다. 그리고 사각형 한 면의 길이는 피스를 이루는 사각형 한 면의 길이와 동일해야합니다.
* 이는 블록 클래스와 동일한 값을 가져야 하므로, 사각형 한 면의 길이는 상수가 아닌 변수로 지정합니다.
* 메소드들이 boolean타입을 반환할 때 저장할 수 있는 boolean타입 변수를 선언합니다.
* 메소드에 특별히 블록 객체가 매개 변수로 선언되지 않은 것은, 블록 객체는 보드 클래스의 필드(멤버 변수)로 선언되기 때문이며,
* 따라서 블록 객체를 현재 보드 클래스의 필드로 가져야 하며, 블록 객체로부터 받아오는 값들은 '수정된' 블록 인터페이스를 참조합니다.
* !!!!주의:--'수정된' 블록 인터페이스는 현재(16.10.09.오전 4시)는 미구현 상태입니다. 일단은 블록 클래스에 임의로 상수값과 임의의 메소드들을 넣어서 만들어주세요..ㅠ--
* 현재 인터페이스에 명시된 것 이외의 메소드를 선언할 경우에는 가급적 인터페이스에 명시된 메소드들 내부에서만 호출되는 메소드들로 해주세요.
* 즉, 타 클래스에서 현재 인터페이스에 명시된 메소드들이 아닌 '상정하지 않은 메소드들'을 호출해야만 하는 경우를 최대한 지양해주세요.
*
* 참고로, http://www.ssaurel.com/blog/learn-to-create-a-tetris-game-in-java-with-swing/ 에서
* 보드의 크기를 지정할 때, Dimension 클래스의 getSize().getWidth() 메소드와 getSize().getHeight()메소드를 사용하는데
* 이것은 현재 프레임(JFrame 클래스의 객체)의 크기(setSize()메소드로 정한 크기)를 직접 가져오는 메소드입니다.
* 구글링해도 내용찾기가 힘들었기 때문에 여기에 주석으로 남깁니다.
*/
void clearBoard(); // 보드를 모두 NoShape 피스로 채운다. 이후에 shapeAt 메소드를 통해 다른 모양의 피스를 '쌓기'위한 선행 단계
boolean isGameOver(); // 보드의 최상단(int boardTop) 값이 피스의 currentY 값 이상인 경우, True를 반환한다.
boolean isWall(); // 피스의 maxX값이 보드의 양끝 좌표의 x값보다 이하(좌)/이상(우)인 경우 True를 반환한다.
boolean isCollideAt(); // 피스가 보드의 최하단에 도착하여 피스의 maxY값이 보드의 최하단부 Y값 이상인 경우 True를 반환한다.
void stackUpBlock(); // 현재 피스의 정보(피스 종류(L,J..), 좌표값(x,y)을 저장한다.
Tetrominoes shapeAt(int currentX, int currentY); // 인자로 전달한 x,y 값에 따라 해당 좌표에 피스값을 가지는 enum 값을 반환하도록 한다.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment