Bài 10: Viết game hứng bia đơn giản.

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
    Hi. Chào cả nhà.
    Hôm nay mình hướng dẫn các bạn viết game hứng bia đơn giản. Nội dung game như sau.
    Người chơi có nhiệm vụ điều chỉnh một cái thùng để hứng bia, những trai bia di chuyển từ trên xuống với tốc độ, vị trí khác nhau. Khi mà người chơi hứng được 1 trai bia thì người chơi được nhận thêm 10 điểm, thời gian chơi 1 lần là 60s.Trong giao diện sẽ hiện thì số điểm hiện tại, thời gian đếm ngược, cái thùng để hứng, các trai bia di chuyển.
    Sau đây là code (Trong code có comment rất chi tiết nên mình không giải thích gì thêm).
    PHP Code:
    PHP:
    package Bai_10_e3droid.gioi; [/FONT][/COLOR][/LEFT]
    [
    LEFT] [/LEFT]
    [
    LEFT][COLOR=#333333][FONT=Verdana]import android.graphics.Color; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import android.graphics.Typeface; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import android.util.Log; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import android.view.Display; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import android.view.MotionEvent; [/FONT][/COLOR][/LEFT]
    [LEFT] [/LEFT]
    [
    LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.E3Activity; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.E3Engine; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.E3Scene; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.Background; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.Shape; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.Sprite; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.sprite.TextSprite; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.texture.AssetTexture; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.drawable.texture.TiledTexture; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]import com.e3roid.event.SceneUpdateListener; [/FONT][/COLOR][/LEFT]
    [LEFT] [/LEFT]
    [
    LEFT][COLOR=#333333][FONT=Verdana]public class Bai_10_e3droidActivity extends E3Activity implements SceneUpdateListener { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //2 biến này là chiều rộng và chiều cao của màn hình game [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int WIDTH; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int HEIGHT; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Khai báo biến số thời gian cập nhật lại màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int time_update = 50;//50ms [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Biến này để tính điểm người chơi [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int diem = 0; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Để hiện thị điểm ta khai báo thêm 1 biến nữa. [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private TextSprite text_diem;    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Khai báo thêm 2 biến để load ảnh [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private AssetTexture playerTexture = null;//Biến này load cái ảnh hứng bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private AssetTexture beerTexture = null;//Cái này load cái trai bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Khai báo các sprite [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private Sprite player;//Cái này do người chơi điều khiển [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private Sprite[] arrayBeerSprite;// Đây là 1 mảng sprite là các trai bia. [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int[] speed;//Tốc độ của mỗi trai bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int maxBeer = 20;//Biến này để xác định số trai bia. Mạc định ban đầu là 20 trai [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private Time t = new Time();//Lớp Time là lớp dẫn xuất Thread để ta tạo ra thời gian đếm ngược [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private TextSprite text_time;//Hiện thị thời gian còn lại [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private boolean isPause = false;//Xác định lúc tạm dừng game [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private TextSprite text_continue;//Biến này dùng để click chơi lại [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //============================================================================== [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    public E3Engine onLoadEngine() { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Xác định kích thước của màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        Display display = getWindowManager().getDefaultDisplay(); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        WIDTH = display.getWidth(); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        HEIGHT = display.getHeight();        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Đặt màn hình game của ta bằng với màn hình của thiết bị [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        E3Engine engine = new E3Engine(this, WIDTH, HEIGHT); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        engine.requestFullScreen();//Đặt chế độ full màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        engine.requestLandscape();//Yêu cầu màn hình xoay ngang [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        return engine; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //============================================================================== [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    public void onLoadResources() { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Load ảnh [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        playerTexture = new AssetTexture("player.png", this);//Ảnh hứng bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        beerTexture = new AssetTexture("beer.png", this);//Ảnh trai bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //============================================================================== [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    public E3Scene onLoadScene() { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        // -------------------------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        E3Scene scene = new E3Scene(); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.setBackgroundColor(1.0f, 0.0f, 0, 0f); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.registerUpdateListener(time_update, this);//Cập nhật màn hình với thời gian là time_update [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        // -------------------------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Đặt hình nền [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        Background background = new Background(new TiledTexture("bg.jpg", getWidth(), getHeight(), this)); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.getTopLayer().setBackground(background); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //------------------------------------------player--------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        int centerX = (WIDTH  - playerTexture.getWidth())  / 2;//Xác định vị trí trung tâm theo X [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        int centerY = (HEIGHT  - playerTexture.getWidth())  / 2;//Xác định vị trí trung tâm theo X [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Ta đặt player này ở vị trí trung tâm theo X và đặt nó nằm dưới gần cuối màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        player = new Sprite(playerTexture, centerX, getHeight() - playerTexture.getHeight() - 10) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            //Cài đặt phương thức này để xử lý khi người chơi chạm vào player và di chuyển player này. [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            public boolean onTouchEvent(E3Scene scene, Shape shape,    MotionEvent motionEvent, int localX, int localY) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    //Ta chỉ di chuyển nhân vật theo chiều X. [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    int X = getTouchEventX(scene, motionEvent) - player.getRealX() - player.getWidth() / 2; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    if(text_continue.getText().length() == 0)//Nếu text_continue mà rỗng thì thực hiện di chuyển [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        player.moveRelativeX(X); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                return false; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        }; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.addEventListener(player);//Gắn sự kiện [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.getTopLayer().add(player);//Hiện thị player [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //------------------------------------------End player--------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //------------------------------------------arrayBeerSprite--------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Khai bao và khởi tạo mảng beer [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        arrayBeerSprite = new Sprite[maxBeer]; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        for(int i = 0; i < maxBeer; i++ ){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            //Khởi tạo và đặt ở vị trí getRandomIndex(1,WIDTH-beerTexture.getWidth()),-10 [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            int x = getRandomIndex(1,WIDTH-beerTexture.getWidth()); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            arrayBeerSprite[i] = new Sprite(beerTexture,x,-10); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            scene.getTopLayer().add(arrayBeerSprite[i]);//Hiện thị arrayBeerSprite            [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //------------------------------------------End arrayBeerSprite--------------------------- [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Thực hiện khởi tạo tốc độ của từng trai bia [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        speed = new int[maxBeer]; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        for(int i=0;i<maxBeer;i++) [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            speed[i] = getRandomIndex(3,15);//Ta cho tốc độ min=1, max=10 [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_diem = new TextSprite(String.valueOf(diem), 30, this);//Size=30 [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_diem.setColor(Color.WHITE);//Đặt màu là trắng [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Vị trí hiện thị điểm là góc trên bên phải [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_diem.move(WIDTH-50, 20); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_diem.setTypeface(Typeface.DEFAULT_BOLD); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.getTopLayer().add(text_diem);//Hiện thị lên màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //start time [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_time = new TextSprite(String.valueOf(t.time), 30, this);//Size=30 [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_time.setColor(Color.WHITE);//Đặt màu là trắng [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Vị trí hiện thị điểm là góc trên bên trái [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_time.move(50, 20); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_time.setTypeface(Typeface.DEFAULT_BOLD); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.getTopLayer().add(text_time);//Hiện thị lên màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        t.start();//Bắt đầu tính thời gian [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_continue = new TextSprite("", 30, this){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            public boolean onTouchEvent(E3Scene scene, Shape shape,    MotionEvent motionEvent, int localX, int localY) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    play();//Gọi phương thức play để chơi lại [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                return false; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        }; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_continue.setColor(Color.WHITE);//Đặt màu là trắng [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Vị trí hiện thị giữa màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_continue.move(centerX, centerY); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        text_continue.setTypeface(Typeface.DEFAULT_BOLD);    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.addEventListener(text_continue); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        scene.getTopLayer().add(text_continue);//Hiện thị lên màn hình [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        return scene; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT] [/LEFT]
    [
    LEFT][COLOR=#333333][FONT=Verdana]    //============================================================================== [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    @Override [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    public void onUpdateScene(E3Scene scene, long time) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        runOnUiThread(new Runnable() {            [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            public void run() { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                if(!isPause){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    //Thực hiện cho các trai bia di chuyển từ trên xuống dưới [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    for(int i = 0; i < maxBeer ; i++ ){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        //Kiểm tra xem nếu mà trai bia nào mà đang > HEIGHT thì ta khởi tạo lại vị trí của trai bia đó [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        if(arrayBeerSprite[i].getRealY() > HEIGHT){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            int x = getRandomIndex(1,WIDTH-beerTexture.getWidth()); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            //Xác định lại vị trí x, y [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            arrayBeerSprite[i].move(x, 0); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            arrayBeerSprite[i].show(); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            //Xác định lại tốc độ của trai bia này [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            speed[i] = getRandomIndex(3,15); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        //Di chuyển các trai bia với vận tốc đã định [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        arrayBeerSprite[i].moveRelativeY(speed[i]); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        //Kiểm tra xem nếu trai bia nào va chạm với player thì ta cho ẩn đi và tính điểm [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        //Điều kiện là trai bia này vẫn đang hiện thị [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        if(arrayBeerSprite[i].collidesWith(player) && arrayBeerSprite[i].isVisible()){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            arrayBeerSprite[i].hide(); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            //Khi player hứng được 1 trai thì số điểm tăng lên 10 [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            diem +=10; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            //Mỗi khi thay đổi điểm ta cập nhật để hiện thị điểm [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                            text_diem.setText(String.valueOf(diem)); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    //hiện thị thời gian đếm ngược [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    text_time.setText(String.valueOf(t.time)); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    //Nếu thời gian mà hết thì tạm dừng gam [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    if(t.time <= 0){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                        isPause = true; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    }                    [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                else{ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    //Khi tạm dừng ta hiện thị text là Click_Play. [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    text_continue.setText("Click_Play"); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                    text_diem.setText("0"); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]                } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        }); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //============================================================================== [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    //Phương thức tạo số ngẫu nhiên [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    private int getRandomIndex(int min, int max) { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        return (int) (Math.random() * (max - min + 1)) + min; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT] [/LEFT]
    [
    LEFT][COLOR=#333333][FONT=Verdana]    public boolean play() { [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        //Khi người chơi click vào Click_Play thì chơi lại từ đầu. Số điểm và thời gian được khởi tạo lại [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        if(text_continue.getText().length() > 0){ [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            text_continue.setText(""); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            t.time = 60; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            isPause = false; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            diem = 0;            [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]            Log.d("Rrsume","Rrsume"); [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]        return false; [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]    } [/FONT][/COLOR][/LEFT]
    [LEFT][COLOR=#333333][FONT=Verdana]}  
    Link donwload project:
    http://share.vnn.vn/tai-file-20025411
    Bài 11 mình sẽ hướng dẫn các bạn cài đặt để điều khiển nhân vật trên maps, sét sự va chạm giữa nhân vật và các đối tượng trọng maps.
    Nếu bài viết hay thì các bạn thanks để lấy tinh thần viết tiếp các bài tiếp theo nhé. Cảm ơn các bạn đã đọc bài viết, chúc các bạn thành công.
    vangioicnt
    Nguồn: vietandroid
     
    6 people like this.
    Đang tải...
  2. HaiHack New Member

    HaiHack

    Tham gia ngày:
    15/1/13
    Bài viết:
    93
    Đã được thích:
    15
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Nơi ở:
    Hanoi, Vietnam
    link project die rồi
     
  3. tinhbka New Member

    tinhbka

    Tham gia ngày:
    7/3/13
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Giới tính:
    Nam
    link die kìa bác
     
  4. bka15 New Member

    bka15

    Tham gia ngày:
    18/7/12
    Bài viết:
    128
    Đã được thích:
    105
    Điểm thành tích:
    0
    2 people like this.
  5. tieutu_ht New Member

    tieutu_ht

    Tham gia ngày:
    7/4/13
    Bài viết:
    7
    Đã được thích:
    0
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Hi anh.. anh có thể thêm cái button continue để reSume khi bị thoát bất ngờ và new game khi vào game bình thg đc ko ??? Trong xử lý button continue chỉ cần lưu lại thgian và số điểm cũng đc...
    e đag bế tắc xử lý cái đoạn giống này.. mong anh giúp đỡ !
     

Chia sẻ trang này