cần giúp đở về game trúc xanh

Thảo luận trong 'Điện thoại, viễn thông' bắt đầu bởi g08ct, 2/9/12.

  1. g08ct New Member

    g08ct

    Tham gia ngày:
    15/8/12
    Bài viết:
    1,116
    Đã được thích:
    55
    Điểm thành tích:
    0
    Giới tính:
    Nam
    cần giúp đở về game trúc xanh
    main game của mình code như sau :
    PHP:
    package lv2.test2.test2;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.View.OnClickListener;

    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.TableLayout;
    import android.widget.TableRow;

    import android.content.Context;
    import android.content.DialogInterface;
    import android.graphics.drawable.Drawable;

    public class 
    Main_Game extends Activity{
    private 
    Context context;
    private 
    TableLayout mainTable;
    private 
    Drawable backImage;
    private 
    ButtonListener buttonListener;
    private 
    int rowcolum;
    private 
    int [] [] mang;
    private List<
    Drawableimages;
    protected 
    void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    loadImages();
    setContentView(R.layout.main);

    buttonListener = new ButtonListener();

    backImage getResources().getDrawable(R.drawable.card1);

    mainTable = (TableLayout)findViewById(R.id.tableLayout1);

    context mainTable.getContext();

    Button new_game = (Button)findViewById(R.id.new_game);
    new_game.setOnClickListener(new OnClickListener() {

    public 
    void onClick(View v) {
    // TODO Auto-generated method stub
    level();
    }
    });

    game(4,4);


    }
    public 
    void loadBackground(int cint r){ 
    int size c*r;    
    mang = new int[c][r];    
    int i,j,k;
    int[] CardCount = new int[size/2]; 
    for (
    0size/2k++)    
    CardCount[k] = 2

    Random rnd = new Random(); 

    //duyệt qua từng ô trong ma trận, chọn ngẫu nhiên lá bài cho ô đó
    for(0ici++)    
    for (
    0rj++)    
    {
    do
    {
    rnd.nextInt(size/2); 
    } while (
    CardCount[k] == 0); 

    mang[i][j] = k
    CardCount[k]--; 
    }
    }
    private 
    void loadImages() {
    images = new ArrayList<Drawable>();

    images.add(getResources().getDrawable(R.drawable.card1));
    images.add(getResources().getDrawable(R.drawable.card2));
    images.add(getResources().getDrawable(R.drawable.card3));
    images.add(getResources().getDrawable(R.drawable.card4));
    images.add(getResources().getDrawable(R.drawable.card5));
    images.add(getResources().getDrawable(R.drawable.card6));
    images.add(getResources().getDrawable(R.drawable.card7));
    images.add(getResources().getDrawable(R.drawable.card8));
    images.add(getResources().getDrawable(R.drawable.card9));
    images.add(getResources().getDrawable(R.drawable.card10));
    images.add(getResources().getDrawable(R.drawable.card11));
    images.add(getResources().getDrawable(R.drawable.card12));
    images.add(getResources().getDrawable(R.drawable.card13));
    images.add(getResources().getDrawable(R.drawable.card14));
    images.add(getResources().getDrawable(R.drawable.card15));
    images.add(getResources().getDrawable(R.drawable.card16));
    images.add(getResources().getDrawable(R.drawable.card17));
    images.add(getResources().getDrawable(R.drawable.card18));
    images.add(getResources().getDrawable(R.drawable.card19));
    images.add(getResources().getDrawable(R.drawable.card20));
    images.add(getResources().getDrawable(R.drawable.card21));

    }
    private 
    void game(int cint r){    


    colum=c
    row=r;    

    mainTable.removeAllViews();

    for (
    int y 0rowy++) { 
    mainTable.addView(createRow(y)); 
    }
    loadBackground(colum,row); 
    }

    private 
    TableRow createRow(int y){ 
    TableRow tablerow = new TableRow(context);
    tablerow.setHorizontalGravity(Gravity.CENTER);

    for (
    int x 0columx++) { 
    tablerow.addView(createImageButton(x,y)); 
    }
    return 
    tablerow;
    }    

    private 
    View createImageButton(int xint y){ 
    Button button = new Button(context);
    button.setBackgroundDrawable(backImage);
    button.setId(100*x+y);
    button.setOnClickListener(buttonListener);
    return 
    button;
    }

    class 
    ButtonListener implements OnClickListener 


    public 
    void onClick(View v) { 

    int id v.getId(); 
    int x id/100;
    int y id%100;

    turnCard((Button)v,x,y);
    }

    }

    private 
    void turnCard(Button button,int x,int y) { // set backdground khác khi click vào
    int id mang[x][y]; // id = 0

    button.setBackgroundDrawable(images.get(id));

    }
    private 
    void kiemtra(int test[], int n) {
    // kiểm tra chổ này
    }
    private 
    void level(){
    final 
    String items[] = {"Dễ""Trung bình""Khó"};

    AlertDialog.Builder ab = new AlertDialog.Builder(this);
    ab.setTitle("Chọn cấp độ");
    ab.setSingleChoiceItems(items0,new DialogInterface.OnClickListener() {
    public 
    void onClick(DialogInterface dialogint whichButton) {
    // onClick Action
    switch (whichButton) {
    case 
    0:
    game(4,4);
    break;
    case 
    1:
    game(4,5);
    break;
    case 
    2:
    game(4,6);
    break;
    }    
    }
    })
    .
    setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public 
    void onClick(DialogInterface dialogint whichButton) {
    // on Ok button action
    }
    });
    ab.show();
    }    
    }
    ý tưởng của code trên đại loại như sau : tạo 1 ma trận ví dụ như row = 4 , col = 4 sẽ có 4x4=16 ô, mỗi ô sẽ đc gán cho 1 số nhất định (gán = hàm random trong khoảng = 16/2, như vậy sẽ có 8 cặp số)
    rồi gán tiếp id cho ma trận đó theo công thức id = 100*col + row (số id này sẽ cố định cho mỗi ô)
    khi click vào mỗi ô hình (mỗi ô ban đầu sẽ đc set hình giống nhau) thì sẽ truyền id vào rồi tính ra row và col của hình đó
    từ row và col lấy ra đc ô đó có số random ban đầu là mấy, set background cho ô đó theo cái ArrayList ở trên.
    Giờ mình cần là khi mở 2 ô sẽ kiểm tra xem 2 ô đó có số random = nhau k, nếu = thì cho nó mất, còn k = thì set background ban đầu cho nó lại. Mình đã nghĩ tới cho vào mãng nhưng làm hoài làm k đc, mong mọi người giúp đở
     
    Đang tải...
  2. passconnection New Member

    passconnection

    Tham gia ngày:
    31/12/12
    Bài viết:
    4
    Đã được thích:
    0
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Ý tưởng để làm bài này theo mình như sau :
    Ở đây do kích thước các ô đã được định sẵn là 4x4 = 16 ô.

    Do bạn đã biết trước kích thước là 16 ô nên việc cần làm của bạn ở đây:
    + Tạo 1 mảng có kích thước 16 - mảng này chứa vị trí các button ( tùy theo bạn đánh số trên các button như thế nào ) và chứa các số random.
    + Ở sự kiện click trên button bạn làm như sau :
    - Ở lần click đầu tiên bạn sẽ dùng 1 biến tạm để lưu lại vị trí của button mà bạn click ( vị trí là biến cờ mà bạn đặt sẵn cho button ). biến tạm này sẽ lưu vị trí và số của button mà nó tra được ở mảng 16 ô ban đầu.
    - Lần click sau bạn cũng lấy vị trí của button đang click - sau đó lấy vị trí đang click tra vào mảng 16 ô để lấy giá trị số của button này - đồng thời có thao tác so sánh với biến tạm.
    + Trường hợp 1: nếu nó bằng biến tạm thì invisible cả 2 button, đồng thời set biến tạm về giá trị mặc định
    + Trường hợp 2: nếu không bằng nhau thì set cho biến tạm bằng giá trị button vừa click

    Còn như thế nào để hết game thì bạn biết rồi @@
     

Chia sẻ trang này