簡體   English   中英

如何在益智游戲中添加聲音?

[英]How to add sound in Puzzle game?

這是我在教程中找到並修改的益智游戲的代碼。

現在我想顯示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;
}
}

新建一個頁面。 例如將其命名為“WinnerActivity”

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

此代碼將幫助您轉到獲勝者頁面。 在那里,您可以設置“找到獲勝者”或其他內容的文本。

使用此代碼

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" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM