0

こんにちは、スライディング パズルに取り組んでいます。私は機能するパズルを持っていますが、今は画像のない数字で作業しています。ここで、数字の背景として画像を使用したいと思います。パズルが機能するように、画像を切り取って数字にリンクするのを手伝ってくれる人はいますか?

これは、数字のコードです。9 ピースのパズルです。

    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("Ongeldige zet");
        return;
    }
    feedbackText.setText("Geldige zet");
    cells.remove(b_pos);
    cells.add(b_pos, 0);
    cells.remove(zuk_pos);
    cells.add(zuk_pos,b_text);


    fill_grid();

    for(int i=0;i<9;i++)
    {
        if(cells.get(i)!=goal[i])
        {
            return;
        }
    }
    feedbackText.setText("Voltooid");
    mChronometer.stop();
    long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();   
    tijd = (int) elapsedMillis;
    mScoreDialog = new ScoreDialog(this,this, 0, convertToTimeFormat(elapsedMillis));
    mScoreDialog.show();
}

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 = 5;
        absParams.y = 5;
        buttons[text].setLayoutParams(absParams);
        break;
        case(1):

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

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

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

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

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

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

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

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


        }


    }

}

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

ご覧のとおり、動きを検証し、イメージボタンを使用しています。

4

1 に答える 1

0

画像を, ...res/drawableとして保存します。img_1.pngimg_10.png

マップを作成します。

static final HashMap<Integer,Integer> map = new HashMap<~>();
map.put(1,R.drawable.img_1);
. . .
map.put(10,R.drawable.img_10);

数値のドローアブル ID を取得します。

map.get(7);
于 2013-03-03T15:24:50.193 に答える