0

자바 코스 용 LightsOut 게임을 만들었고 android를 배우는 방법으로 응용 프로그램으로 다시 작성하려고합니다.내 안드로이드 응용 프로그램을 최적화하려고합니다.

주요 활동은 토글 버튼 그리드로 구성됩니다. 버튼이 "선택"되면 버튼과 인접한 버튼이 토글됩니다. 모든 버튼이 꺼지면 게임에서 승리합니다. 나는이 점에서 작동하게 만들었지 만 코드는 끔찍합니다.

togglebuttons의 2 차원 배열을 만들어 코드를 정리하고 싶습니다. 그 순간 나는 어떻게 각 단추를 개별적으로 선언 할 수 있습니까? 이로 인해 중복 코드의 큰 블록이 생기고 쉽게 확장 할 수 없습니다.

원래 자바에서 내가 이런 짓을 : xCor가 이전 gamefield의 건설에 사용자 입력을 기반으로 한

buttons = new LightButton[xCor][xCor]; 

    for (int x = 0; x < xCor; x++) { 
     for (int y = 0; y < xCor; y++) { 
      buttons[x][y] = new LightButton(this, x, y); 
      panel.add(buttons[x][y]); 
     } 
    } 

. 이로 인해 어레이를 탐색하여 게임의 초기화 및 상태 확인이 쉬워졌습니다. 나는 단순히 안드로이드로 이것을 할 길을 찾지 못했습니다.

그래서 사용자 입력을 기반으로 토글 버튼의 ​​배열/목록을 만드는 방법이 있습니까? 여기

가 활동이다

공용 클래스 LightsOutActivity 활동이 OnClickListener를 구현 연장 {

protected ToggleButton[][] buttonArray; 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    buttonArray = new ToggleButton[4][4]; 

    for (int x = 0; x < 4; x++) { 
     for (int y = 0; y < 4; y++) { 
      buttonArray[x][y] = new ToggleButton(this); 
      LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f); 
      buttonArray[x][y].setLayoutParams(params); 

      ((ViewGroup) findViewById(R.layout.main)).addView(buttonArray[x][y]); 
     } 
    } 



    setContentView(findViewById(R.layout.main)); 
} 

즉시 강제 확대 초래한다. R.layout.main의 유일한 뷰는 선형 레이아웃입니다. 지금은 배열 크기를 하드 코딩했습니다.

답변

0

EditText보기에서 사용자 입력을받을 수 없습니까? 그런 다음 해당 입력을 사용하여 배열을 초기화 할 수 있습니다.

+0

저도 그렇게하고 싶습니다. 그렇습니다. 내 주요 문제는 버튼/토글 버튼 배열을 초기화하는 것입니다. 그것은 단순히 나를 위해 작동하지 않습니다. 어쩌면 나는 잘못된 것을하고 있으므로 따라야 할 모범을 기대하고 있었다. – thethomasramsey

+0

Android 코드를 게시하십시오. 오류가 표시 될 수 있습니다. – C0deAttack

+0

오케이. 위의 원래 게시물에 onCreate() 메서드를 추가했습니다. – thethomasramsey

관련 문제