Báo cáo bài tập lớn (đóng quyển) hoàn chỉnh môn Lập trình mobile (Android) Đề tài: Xây dựng game bầu cua tôm cá trên android. Download có cả source game cho các bạn rồi. Các bạn tham khảo code game và word cho game nhé
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
oOo
-BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH MOBILE
XÂY DỰNG GAME ANDROID
BẦU CUA TÔM CÁ
Giảng viên: Hoàng Quốc Việt
Nhóm thực hiện:
Trần Mạnh Hoàng Nguyễn Thanh Sơn
Hải Dương – Tháng 10 năm 2016
Trang 2Game Android Bầu Cua Tôm Cá
TRANG KÝ NHẬN
1 Trần Mạnh Hoàng
2 Nguyễn Thanh Sơn
Trang 3MỤC LỤC
Trang 4Game Android Bầu Cua Tôm Cá
PHẦN 1: GIỚI THIỆU
Thế kỷ 21 được mệnh danh là thế kỷ của công nghệ thông tin, với sự bùng nổ mạnh mẻ
về khoa học công nghệ Đây là kỷ nguyên của nền văn minh dựa trên cơ sở công nghiệp trí tuệ Ngày nay, tin học đã trở thành một môn khoa học quan trọng trên thế giới Sự phát triển mạnh mẽ như vậy thì công việc lập trình game nhằm phục vụ nhu cầu giải trí của con người trở nên cấp thiết Từ lâu game trên điện thoại có vai khá trò quan trọng trong cuộc sống của con người
Theo thống kê, hệ điều hành Android là nền tảng điện thoại thông minh phổ biến nhất thế giới với ưu điểm là hệ điều hành không nặng nề, có khả năng tinh chỉnh cao, cá nhân hóa cao, và giá rẻ Vì vậy, nền tảng Android được sử dụng rộng rãi trên toàn thế giới bởi các hãng điện tử điện thoại nổi tiếng như: Samsung, Sony, HTC, LG, Xiaomi,… ngoài ra Android còn xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác Ngày nay, Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 1 năm 2016, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành Android cũng là động lực để lập trình game, lập trình ứng dụng của bên thứ 3 trên nền tảng này phát triển mạnh mẽ theo
Nắm bắt được xu thế hiện nay là Android đang cực kỳ phổ biến, cùng thời điểm còn vài tháng nữa là đến Tết, nhu cầu giải trí của con người ngày càng tăng sau những giờ học, giờ làm căng thẳng, nhóm em xin mạnh dạn lựa chọn đề tài “Xây dựng game Andoid Bầu cua tôm cá” Đây là tựa game có cách chơi khá đơn giản, mang hơi thở truyền thống dân tộc, được viết trên nền tảng Android hướng đến người chơi là giới trẻ, giúp người chơi có những khoảng thời gian thư giãn, giải trí thú vị trên chính chiếc điện thoại của mình
Do thời gian, kiến thức và hiểu biết còn hạn chế, game “Bầu cua tôm cá” còn khá đơn giản về nội dung va hình thức, chưa có nhiều chức năng độc đáo Tuy vậy, có thể nói là đây
là game đơn giản từ cách chơi cho tới thiết kế giao diện đồ họa, đã đáp ứng được nhu cầu của người chơi Hình ảnh các con vật hay quả bầu trong game được thiết kế đơn giản và có phần đáng yêu
Trang 5PHẦN 2: CƠ SỞ LÝ THUYẾT
1. Mô tả trò chơi
1.1. Mô tả chung
Game Android Bầu Cua Tôm Cá được xác định là một game offline nên không yêu cầu kết nối với môi trường Internet
Là một game nhỏ, không sử dụng nhiều đến cơ sở dữ liệu Việc lưu trữ dữ liệu chỉ đơn giản là lưu tiền của người chơi khi người chơi thoát ra khỏi game, khi vào lại thì game vẫn giữ nguyên tiền của người chơi như lúc người chơi thoát khỏi game Vì vậy, game không
sử dụng CSDL SQLite, mà sẽ sử dụng Shared Preferences để lưu trữ thông tin
1.2. Cách chơi
Khi bắt đầu chơi, game sẽ tặng cho người chơi một khoản tiền ảo là 1000 xu Người chơi dùng tiền này để chơi trong game
Trên màn hình chơ gồm có 6 ô hình linh vật theo thứ tự từ trái qua phải, từ trên xuống dưới là: nai, bầu, gà, cá, cua, tôm Ngoài ra, có 3 viên xúc xắc, mỗi viên xúc xắc hiển thị ngẫu nhiên 1/6 hình linh vật, đây là kết quả khi game tiến hành xúc xắc ngẫu nhiên, và giúp cho người chơi đối chiếu với việc đặt cược của mình
Hình 1: Game Bầu Cua Tôm Cá
Trang 6Game Android Bầu Cua Tôm Cá
Người chơi đặt cược số tiền vào các ô hình linh vật (từ 0 đến 500) và cũng có thể đặt cùng một lúc cả ở 6 ô linh vật Nếu số tiền mà người chơi đặt trong tất cả các ô linh vật lớn hơn số tiền mà người chơi đang có, game sẽ hiển thị thông báo “Bạn không đủ tiền đặt cược!” và sẽ không tiến hành lắc xúc xắc, người chơi phải điều chỉnh lại việc đặt của mình
Game tiến hành xúc xắc, nếu trong 3 viên xúc xắc xuất hiện linh vật mà người chơi
đã đặt cược tiền, họ sẽ lấy lại tiền cược và game sẽ trả số tiền bằng với số lần linh vật đó xuất hiện nhân với số tiền cược (Ví dụ: Nếu người chơi đặt 300 xu vào cửa “cá” mà ra một con cá
sẽ được trả 300 xu, ra 2 con cá được trả 600 xu, ra 3 con cá được trả 900 xu, và nhận lại số tiền mình đã đặt cược) Nếu linh vật người chơi chọn không xuất hiện, số tiền của người chơi
sẽ bị trừ đi một khoản bằng khoản đặt cược của người chơi
Nếu người chơi không còn tiền, thì sẽ không được phép đặt cửa Tuy vậy, game sẽ tặng 1000 xu cho người chơi cứ sau 3 phút người chơi đang chơi, giúp người chơi có thể chơi tiếp tục
Trong game, sẽ kèm theo âm thanh nền và âm thanh xúc xắc để tăng phần sôi động
và hào hứng của một tựa game ngày Tết Người chơi có thể tắt âm thanh nếu đang cần yên tĩnh
Trang 72. Các lý thuyết liên quan
2.1. Sử dụng Handle
Handle cho phép cập nhật lại giao diện, xử lý tiến trình
Trong game, Handle được sử dụng để cập nhật lại giao diện cho 3 viên xúc xắc Handle giống như “người đưa thư”, còn callback giống như “ trạm” “Người đưa thư” đi đến một cái nhà nào đó lấy thư và trả về “trạm”, và “trạm” tiến hành cập nhật lại giao diện
Handler.Callback callback = new Handler.Callback()
Phương thức có thể sử dụng ở bất cứ đâu khi được gọi:
handler = new Handler(callback);
2.2. Sử dụng Animation-list
Animation là các phép biến đổi màu sắc, vị trí, kích thước hay hướng của một đối tượng trên màn hình theo thời gian Android cung cấp các API hỗ trợ rất tốt cho việc áp dụng animation cho các thành phần UI và vẽ đồ họa 2D, 3D
Drawable Animation là quá trình đơn giản, hiển thị một chuỗi các hình ảnh liên tiếp trong các khoảng thời gian ngắn để tạo ra hiệu ứng cuối cùng là đối tượng di chuyển hoặc thay đổi Trong Android, việc thực hiện kiểu Animation này được thông qua lớp
AnimationDrawable
Các tag trong Animation-list về căn bản sẽ được chuyển thành các đối tượng
AnimationDrawable đại diện cho tập các hình ảnh Sau đó, cần thiết lập Drawable này như là background resource cho một ImageView
Trong game, Animation-list được sử dụng để thay đổi hình ảnh liên tục cho 3 viên xúc xắc, để tạo hiệu ứng xúc xắc cho chúng Ta có thể truy cập đối tượng
AnimationDrawable như sau:
cdXiNgau1 = (AnimationDrawable) hinhxingau1.getDrawable();
cdXiNgau2 = (AnimationDrawable) hinhxingau2.getDrawable();
cdXiNgau3 = (AnimationDrawable) hinhxingau3.getDrawable();
Khi đã có đối tượng AnimationDrawable, ta có thể sử dụng hai phương thức start()
và stop() để bắt đầu hay kết thúc animation.
cdXiNgau1.start();
cdXiNgau2.start();
cdXiNgau3.start();
Trong thư mục drawable, cần xây dựng file XML có tên hinhdongxingau để gán vào
ImageView viên xúc xắc trong XML của layout:
<animation-list
xmlns: android ="http://schemas.android.com/apk/res/android" android :oneshot="false">
<item
android :drawable="@drawable/bau"
android :duration="50"/>
Trang 8Game Android Bầu Cua Tôm Cá
<item
android :drawable="@drawable/ca"
android :duration="50"/>
<item
android :drawable="@drawable/cua"
android :duration="50"/>
<item
android :drawable="@drawable/ga"
android :duration="50"/>
<item
android :drawable="@drawable/nai"
android :duration="50"/>
<item
android :drawable="@drawable/tom"
android :duration="50"/>
</animation-list>
Thuộc tính oneshot cho phép chạy Animation một lần, sau đó dừng lại hoặc cho phép
chạy lại vô thời hạn
2.3. Sử dụng CountDownTimer
CountDownTimer cung cấp chức năng giúp người lập trình tạo bộ đếm ngược trong Android
Trong game, CountDownTimer được dùng để tạo bộ đếm lùi thời gian 3 phút Cứ sau mỗi khoảng 3 phút chơi trong game, game sẽ tặng người chơi 1000 xu Được khai báo như sau:
CountDownTimer demthoigian = new CountDownTimer(180000,1000) public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " +
millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
Đoạn code trên ta hiểu rằng, một đối tượng CountDownTimer có là tên demthoigian
được tạo ra kèm theo hai đối số 180000 và 1000 Trong đó, 180000 và 1000 có nghĩa là
cứ 1000 mi-li giây thì phương thức onTick(long millisUntilFinished) sẽ được chạy một lần, cứ chạy như thế trong suốt 180000 mi-li giây 180000 mili giây trôi qua, thì phương thức onFinish() sẽ chạy
Trang 9Phương thức onTick, kèm theo một đối số millisUntilFinished, đây là đối số cho ta
biết số milli còn lại của bộ đếm (Ví dụ, bộ đếm trôi qua 2000 mi-li giây thì giá trị của millisUntilFinished còn 178000)
Phương thức onFinish, phương thức này được tự động gọi khi 180000 mi-li giây của
bộ đếm trôi qua, đồng nghĩa với “Hết giờ”
Tóm lại, đoạn code trên ta có thể hiểu nôm na: Một bộ đếm ngược 3 phút được tạo ra
2.4. Lưu trữ với Shared Preferences
Shared Preferences cho phép lưu trữ các thông số đã thiết lập trước đó, chẳng hạn như độ sáng trò chơi, mức độ âm lượng, độ khó, tên người chơi… , cho phép sử dụng lại các thiết lập đó mà không cần phải thiết lập lại khi người chơi vào lại game Đây là những tác vụ nhẹ, nên không cần thiết phải sử dụng CSDL SQLite, mà chỉ cần dùng Shared Preferences để đảm bảo tính nhẹ nhàng, nhanh chóng
Trong game Bầu Cua Tôm Cá, Shared Preferences được dùng để lưu lại giá trị tài tiền của người chơi Khi người chơi vào lại game, game vẫn giữ nguyên tiền như lúc người chơi thoát ra khỏi game
SharedPreferences luuTru =
getSharedPreferences("luutruthongtin", Context.MODE_PRIVATE);
Trong đó, tên file lưu trữ là luutruthongtin, MODE_PRIVATE để thiết lập quyền
đọc
SharedPreferences.Editor edit = luuTru.edit();
edit.commit();
Editor để thay đổi giá trị của luuTru , commit để chấp nhận sự thay đổi này.
2.5. Xử lý nhạc nền với Media Player
Android cung cấp nhiều cách để điều khiển tập tin audio hoặc video Một trong
những cách này là sử dụng lớp MediaPlayer Xử lý media player trong android chính là
việc phát các tập tin audio/video, … Để sử dụng lớp MediaPlayer trong android, chúng ta
phải gọi phương thức create() Phương thức này giúp chúng ta tạo một thể hiện của lớp MediaPlayer Cú pháp như sau:
MediaPlayer nhacnen = MediaPlayer.create(this, R.raw.song); Lưu ý: file audio hoặc video phải được lưu trữ trong thư mục “raw”
Xử lý media player trong android chính là việc sử dụng các phương thức như start().
Âm nhạc sẽ được phát ngay từ đầu khi gọi phương thức này Nếu phương
thức start() được gọi sau phương thức pause() thì âm nhạc sẽ được phát từ chỗ nó bị
dừng chứ không phải được phát từ đầu Để phát âm nhạc ngay từ đầu, chúng ta phải sử
dụng phương thức reset() Cú pháp như sau:
nhacnen.start();
nhacnen.stop();
nhacnen.pause();
Trang 10Game Android Bầu Cua Tôm Cá
PHẦN 3: GIAO DIỆN TRÒ CHƠI
1. Giao diện màn hình chào
Hình 2: Giao diện màn hình chào
2. Giao diện chính của game
Trang 11Hình 4: Giao diện đặt cược
4. Giao diện bắt lỗi
Hình 5: Giao diện bắt lỗi chưa đặt cược
4.2. Bắt lỗi không đủ tiền
Trang 12Game Android Bầu Cua Tôm Cá
Hình 6: Giao diện không đủ tiền
5. Giao diện thắng
Hình 7: Giao diện thắng
Trang 13Hình 8: Giao diện thua
7. Giao diện hòa
Hình 9: Giao diện hòa