2015-10-06 38 views
-2

這是我在教程中找到並修改的益智遊戲的代碼。如何在益智遊戲中添加聲音?

現在我想顯示feedbackText.setText("we have a winner"); &也moveCounter.setText(Integer.toString(Integer.parseInt((String) moveCounter.getText())+1));顯示此項。 在一個新的頁面。我如何顯示它? 另一個問題是我可以添加觸摸聲音到這個應用程序?

public class Game extends Activity { 

private TextView moveCounter; 
private TextView feedbackText; 
private Button[] buttons; 
private Boolean bad_move=false; 
private static final Integer[] goal = new Integer[] {0,1,2,3,4,5,6,7,8}; 

private ArrayList<Integer> cells = new ArrayList<Integer>(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_game); 


    buttons=findButtons(); 

    for(int i=0;i<9;i++) 
    { 
     this.cells.add(i); 
    } 
    Collections.shuffle(this.cells); //random cells array 

    fill_grid(); 


    moveCounter = (TextView) findViewById(R.id.MoveCounter); 
    feedbackText = (TextView) findViewById(R.id.FeedbackText); 

    for (int i = 1; i < 9; i++) { 
     buttons[i].setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       makeMove((Button) v); 
      } 
     }); 
    } 


    moveCounter.setText("0"); 
    feedbackText.setText(R.string.game_feedback_text); 

} 
public Button[] findButtons() { 
    Button[] b = new Button[9]; 

    b[0] = (Button) findViewById(R.id.Button00); 
    b[1] = (Button) findViewById(R.id.Button01); 
    b[2] = (Button) findViewById(R.id.Button02); 
    b[3] = (Button) findViewById(R.id.Button03); 
    b[4] = (Button) findViewById(R.id.Button04); 
    b[5] = (Button) findViewById(R.id.Button05); 
    b[6] = (Button) findViewById(R.id.Button06); 
    b[7] = (Button) findViewById(R.id.Button07); 
    b[8] = (Button) findViewById(R.id.Button08); 
    return b; 
} 

public void makeMove(final Button b) { 
    bad_move=true; 
    int b_text,b_pos,zuk_pos; 
    b_text=Integer.parseInt((String) b.getText()); 
    b_pos=find_pos(b_text); 
    zuk_pos=find_pos(0); 
    switch(zuk_pos) 
    { 
     case(0): 
      if(b_pos==1||b_pos==3) 
       bad_move=false; 
      break; 
     case(1): 
      if(b_pos==0||b_pos==2||b_pos==4) 
       bad_move=false; 
      break; 
     case(2): 
      if(b_pos==1||b_pos==5) 
       bad_move=false; 
      break; 
     case(3): 
      if(b_pos==0||b_pos==4||b_pos==6) 
       bad_move=false; 
      break; 
     case(4): 
      if(b_pos==1||b_pos==3||b_pos==5||b_pos==7) 
       bad_move=false; 
      break; 
     case(5): 
      if(b_pos==2||b_pos==4||b_pos==8) 
       bad_move=false; 
      break; 
     case(6): 
      if(b_pos==3||b_pos==7) 
       bad_move=false; 
      break; 
     case(7): 
      if(b_pos==4||b_pos==6||b_pos==8) 
       bad_move=false; 
      break; 
     case(8): 
      if(b_pos==5||b_pos==7) 
       bad_move=false; 
      break; 
    } 

    if(bad_move==true) 
    { 
     feedbackText.setText("Move Not Allowed"); 
     return; 
    } 
    feedbackText.setText("Move OK"); 
    cells.remove(b_pos); 
    cells.add(b_pos, 0); 
    cells.remove(zuk_pos); 
    cells.add(zuk_pos,b_text); 


    fill_grid(); 
    moveCounter.setText(Integer.toString(Integer.parseInt((String) moveCounter.getText())+1)); 

    for(int i=0;i<9;i++) 
    { 
     if(cells.get(i)!=goal[i]) 
     { 
      return; 
     } 

    } 
    feedbackText.setText("we have a winner"); 
} 

public void fill_grid() 
{ 
    for(int i=0;i<9;i++) 
    { 
     int text=cells.get(i); 
     AbsoluteLayout.LayoutParams absParams = 
       (AbsoluteLayout.LayoutParams)buttons[text].getLayoutParams(); 
     switch(i) 
     {case(0): 

      absParams.x = 15; 
      absParams.y = 15; 
      buttons[text].setLayoutParams(absParams); 
      break; 
      case(1): 

       absParams.x = 170; 
       absParams.y = 15; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(2): 

       absParams.x = 325; 
       absParams.y = 15; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(3): 

       absParams.x = 15; 
       absParams.y = 185; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(4): 

       absParams.x =170; 
       absParams.y =185; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(5): 

       absParams.x =325; 
       absParams.y =185; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(6): 

       absParams.x = 15; 
       absParams.y = 355; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(7): 

       absParams.x = 170; 
       absParams.y = 355; 
       buttons[text].setLayoutParams(absParams); 
       break; 
      case(8): 

       absParams.x = 325; 
       absParams.y = 355; 
       buttons[text].setLayoutParams(absParams); 
       break; 


     } 


    } 

} 

public int find_pos(int element) 
{ 
    int i; 
    for(i=0;i<9;i++) 
    { 
     if(cells.get(i)==element) 
     { 
      break; 
     } 
    } 
    return i; 
} 
} 
+0

所以你的問題可以簡化爲:「如何顯示在新頁面中的文本在android?「?我相信你可以在這裏或網絡上的其他地方找到答案。 – hoijui

+0

我編輯我的問題 –

回答

0

使用此代碼

LayoutInflater inflater = getLayoutInflater(); 
View dialoglayout = inflater.inflate(R.layout.showwinner, null); 
AlertDialog dialog; 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(dialoglayout); 
dialog = builder.create(); 
Button btnOk = (Button) dialoglayout.findViewById(R.id.btnOk); 
TextView tv = (TextView) dialoglayout.findViewById(R.id.txtText2); 
tv.settext(moveCounter.getText()); 
btnOk.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 
dialog.getWindow().getAttributes().windowAnimations =R.style.dialog_animation; 
dialog.show(); 

,並添加showwinner.xml到您的佈局文件夾

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="We Have a Winner !!!!!" 
    android:id="@+id/txtText" 
    android:layout_gravity="center_horizontal" 
    android:textSize="20sp" 
    android:gravity="center_vertical|center_horizontal" 
    android:padding="20dp" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:id="@+id/txtText2" 
    android:layout_gravity="center_horizontal" 
    android:textSize="15sp" 
    android:gravity="center_vertical|center_horizontal" 
    android:padding="20dp" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="ok" 
    android:id="@+id/btnOk" 
    android:layout_gravity="center_horizontal" /> 

+0

我可以在哪裏使用Java代碼? –

+0

將其替換爲feedbackText.setText(「我們有一個贏家」);在你的代碼 – Pirisok

+0

謝謝......它的工作:) –

0

創建一個新頁面。例如將其命名爲「WinnerActivity」

public void navigateToWinnerPage() { 
    startActivity(new Intent(PuzzelActivity.this, WinnerActivity.class)); 
} 

此代碼將幫助您進入贏家頁面。 在那裏你可以設置「找到贏家」或其他東西的文字。