Wednesday, October 4, 2017

Flappy bird (2)

Bây giờ, để nó thành game hoàn chỉnh, ta cần thêm vào 2 thanh chắn nữa để tăng độ khó.
Do các thanh song song có giá trị x như nhau nên ta chỉ khai báo thêm một biến xthanh34 để dùng chung.
Khởi tạo 2 thanh mới
thanh3 = BitmapFactory.decodeResource(getResources(), R.drawable.kb);
thanh4 = BitmapFactory.decodeResource(getResources(), R.drawable.kb);
Set vị trí của chúng cách thanh cũ 200dp.
xthanh34 = r+200;
Vẽ dịch lên so với thanh cũ để các lỗ trống không thẳng hàng.
canvas.drawBitmap(thanh3, xthanh34, -40, null);
canvas.drawBitmap(thanh4, xthanh34, 320, null);
Tạo các rect để xử lý va chạm.
Rect touch3 = new Rect(xthanh34, 0, xthanh34 + thanh.getWidth(),
                        thanh.getHeight()-40);
Rect touch4 = new Rect(xthanh34, 320, xthanh34 + thanh.getWidth(),
                        320 + thanh.getHeight());
Thêm lệnh để cho hai thanh chạy.
xthanh34 = xthanh34 - 7;
Thêm lệnh để set cho thanh quay về khi chạy hết.
if (xthanh34 < -thanh.getWidth()) {
     xthanh34 = r;               
}
Trong lệnh case MotionEvent.ACTION_DOWN: set lại vị trí xthanh34 khi bắt đầu
xthanh34 = r+200;
Chạy thử để biết chắc đã có các thanh thêm vào.
Thêm các dòng để set va chạm con chim và các thanh mới
if (Rect.intersects(touch, touch3)) {
hit = true;
soundPool.play(bump, 0.9f, 0.1f, 1, 0, 0.7f);
}
if (Rect.intersects(touch, touch4)) {
hit = true;
soundPool.play(bump, 0.9f, 0.1f, 1, 0, 0.7f);
}
Tạo biến đếm thứ 2 để đếm qua lỗ 2, khởii tạo giá trị của nó giống xdem, chỉ khác là dùng xthanh34.
xdem2 = xthanh34 - 200 + thanh.getWidth() + chim.getWidth();
Cho luôn dòng trên vào lệnh if (xthanh34 < -thanh.getWidth()) { để bật nó về đầu khi chạy đến cuối và trong case MotionEvent.ACTION_DOWN: để bắt đầu khi chơi lại game.
Thêm lệnh để nó chạy cùng với các thanh.
xdem2 = xdem2 - 7;
Thêm lệnh if này vào để đếm qua lỗ 2
if (xdem2 < 0) {
xdem2 = r;
dem = dem + 1;
}
Vậy là xong rồi, ta đã có chắn thứ hai, để thêm vào thanh chắn nữa bạn làm tương tự, chú ý để lỗ trống thấp xuống cho nó khó chơi là được.








No comments:

Post a Comment