TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA 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
Game Android Bầu Cua Tôm Cá
TRANG KÝ NHẬN
Người tạo:
Ngày: 23/10/2016
1. Trần Mạnh Hoàng
2. Nguyễn Thanh Sơn
Người hướng dẫn 1:
Bài Tập Lớn Lập Trình Mobile
(Ký duyệt)
2/13
Ngày: …./…./….….
Game Android Bầu Cua Tôm Cá
MỤC LỤC
Bài Tập Lớn Lập Trình Mobile
3/13
Game 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.
Bài Tập Lớn Lập Trình Mobile
4/13
Game Android Bầu Cua Tôm Cá
PHẦ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.
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.
1.2.
Hình 1: Game Bầu Cua Tôm Cá
Bài Tập Lớn Lập Trình Mobile
5/13
Game 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.
Bài Tập Lớn Lập Trình Mobile
6/13
Game Android Bầu Cua Tôm Cá
2.
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);
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:
2.2.
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:
xmlns:android=" />android:oneshot="false">
android:drawable="@drawable/bau"
android:duration="50"/>
Bài Tập Lớn Lập Trình Mobile
7/13
Game Android Bầu Cua Tôm Cá
android:drawable="@drawable/ca"
android:duration="50"/>
android:drawable="@drawable/cua"
android:duration="50"/>
android:drawable="@drawable/ga"
android:duration="50"/>
android:drawable="@drawable/nai"
android:duration="50"/>
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.
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:
2.3.
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.
Bài Tập Lớn Lập Trình Mobile
8/13
Game Android Bầu Cua Tôm Cá
Phươ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.
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.
2.4.
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.
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:
2.5.
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();
Bài Tập Lớn Lập Trình Mobile
9/13
Game 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
Hình 3: Giao diện màn hình chính
3.
Giao diện đặt cược
Bài Tập Lớn Lập Trình Mobile
10/13
Game Android Bầu Cua Tôm Cá
Hình 4: Giao diện đặt cược
4.
Giao diện bắt lỗi
4.1. Bắt lỗi người dùng chưa đặt cược
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
Bài Tập Lớn Lập Trình Mobile
11/13
Game 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
6.
Giao diện thua
Bài Tập Lớn Lập Trình Mobile
12/13
Game Android Bầu Cua Tôm Cá
Hình 8: Giao diện thua
7.
Giao diện hòa
Hình 9: Giao diện hòa
Bài Tập Lớn Lập Trình Mobile
13/13