Lý do chọn đề tài Hiện nay với sự phát triển của khoa học công nghệ, chiếc điện thoại diđộng không chỉ đơn thuần để liên lạc với nhau mà nó còn có thể chơi game,nghe nhạc, kết nối intern
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI
2 KHOA CÔNG NGHỆ THÔNG TIN
-*** -NGUYỄN THỊ KIM HOA
TÌM HIỂU MỘT SỐ NGÔN NGỮ LẬP TRÌNH GAME
TRÊN ĐIỆN THOẠI DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI
HỌC Chuyên ngành: Tin học
Người hướng dẫn khoa học
PGS TS TRỊNH ĐÌNH THẮNG
HÀ NỘI – 2014
Trang 2LỜI CẢM ƠN
Em xin chân thành cảm ơn PGS TS Trịnh Đình Thắng đã giúp đỡ
em hoàn thành khóa luận
Em xin chân thành cảm ơn các thầy cô trong khoa Công nghệ thôngtin – trường Đại học sư phạm Hà Nội 2 đã truyền đạt vốn kiến thức quýbáu cho em trong nghiên cứu đề tài và trong công việc sau này
Vì vốn kiến thức và khả năng của bản thân em còn hạn chế nên bàikhóa luận còn nhiều thiếu sót, em mong nhận được ý kiến đóng góp củacác thầy cô để em có thể hoàn thiện hơn bài khóa luận
Em xin chân thành cảm ơn!
Hà Nội, tháng 5 năm 2014
Sinh viên
Nguyễn Thị Kim Hoa
Trang 3LỜI CAM ĐOAN
Tên em là: NGUYỄN THỊ KIM HOA
Sinh viên lớp: K36 – Tin học, khoa Công nghệ thông tin, trường Đạihọc sư phạm Hà Nội 2
Em xin cam đoan:
1 Đề tài: “Tìm hiểu một số ngôn ngữ lập trình game trên điện thoại di động” là sự nghiên cứu của riêng em, dưới sự hướng dẫn của thầy giáo
PGS.TS Trịnh Đình Thắng
2 Khóa luận hoàn toàn không sao chép của tác giả nào khác Nếu sai
em xin hoàn toàn chịu trách nhiệm
Hà Nội, tháng 5 năm 2014
Người cam đoan
Nguyễn Thị Kim Hoa
Trang 4MỤC LỤC
M
Ở ĐẦ U 1
CH ƢƠN G 1: CƠ SỞ LÝ THUY Ế T 3
1.1 L ị ch s ử phát tri ể n c ủa điệ n tho ại di độ ng 3
1.2 H ệ điề u hành Android 12
1.3 Ngôn ng ữ l ậ p trình game 22
CH ƢƠN G 2: MỘ T S Ố NGÔN NG Ữ L Ậ P TRÌNH GAME 23
2.1 Java 23
2.1.1 Java là gì? 23
2.1.2 Đặc trƣn g củ a Java 23
2.1.3 Máy ả o Java (JVM – Java Virtual Machine) 26
2.1.4 B ộ công c ụ phát tri ể n JDK (Java Development Kit) 30
2.1.5 Các ứ ng d ụ ng Java 31
2.2 Objective-C 32
2.2.1 Objective-C là gì? 32
2.2.2 L ị ch s ử phát tri ể n 32
2.2.3 Ph ƣ ơng t h ứ c trong Objective-C 33
2.2.4 Category trong Objective-C 33
2.2.5 Protocol trong Objective-C 33
2.2.6 Selector trong Objective-C 34
2.2.7 K ế th ừ a trong Objective-C 34
2.2.8 X ử lý ngo ạ i l ệ 34
2.2.9 Qu ả n lý b ộ nh ớ 34
2.3 C# 37
2.3.1 C# là gì? 37
Trang 52.3.2 Đặc điể m C# 40
2.3.3 Ki ể u d ữ li ệ u c ủ a C# 40
2.3.4 ớ p L đố i tƣ ợ ng trong C# 41
2.3.5 ế K th ừ a – đa hình 42
2.3.6 ấ u trúcC trong C# 42
2.3.7 ự c thiTh giao di ệ n 42
2.3.8 ả ng, chM ỉ m ụ c 43
2.3.9 ử lý X ngo ạ i l ệ 43
CH ƢƠN G 3: XÂY DỰNG CH ƢƠN G TRÌNH Ứ NG D Ụ NG 44
3.1 Gi ớ i thi ệ u bài toán 44
3.2 M ộ t s ố ph ƣ ơng thứ c 45
3.2.1 ƣPh ơng th ứ c start Level 45
3.2.2 ƣPh ơng th ứ c t ạ o đƣ ờ ng bay c ủ a viên đạ n 46
3.2.3 Ph ƣ ơng th ứ c ki ể m tra anchor xung quanh star 48
3.2.4 ƣPh ơng th ứ c tìm star cùng type v ớ i star 49
3.2.5 ƣPh ơng th ứ c Game Over 50
3.3 Thi ế t k ế ch ƣ ơng trình 53
3.3.1 Giao di ệ n chính 53
3.3.2 ử a hàngC game 53
3.3.3 ắtB đầ u game 54
3.3.4 ế t h ợ p cácK ngôi sao cùng màu 54
3.3.5 ế t thúcK game 55
K Ế T LU ẬN VÀ H Ƣ Ớ NG PHÁT TRI Ể N 56
TÀI LI Ệ U THAM KH Ả O 57
Trang 6DANH MỤC HÌNH
Hình 1.1 Chiếc điện thoại đầu tiên 4
Hình 1.2 Motorola DynaTAC 8000X 4
Hình 1.3 Nokia Mobira Senator 5
Hình 1.4 PDA Simon Personal Communicator 5
Hình 1.5 Motorola StarTAC 6
Hình 1.6 Nokia 6160 và Nokia 8260 7
Hình 1.7 Kyocera QCP6035 7
Hình 1.8 Handspring Treo 180 8
Hình 1.9 Danger Hiptop 8
Hình 1.10 BlackBerry 5810 9
Hình 1.11 Sanyo SCP-5300 9
Hình 1.12 Nokia N-Gate 10
Hình 1.13 Motorola Razt v3 10
Hình 1.14 Motorola Rokr 11
Hình 1.15 BlackBerry Pearl 11
Hình 1.16 Iphone 12
Hình 1.17 Các phiên bản của hệ điều hành Android 15
Hình 1.18 Android Market 19
Hình 1.19 Cấu trúc stack hệ thống Android 21
Hình 3.1 Form kích hoạt trò chơi 53
Hình 3.2 Form cửa hàng game 53
Hình 3.3 Form bắt đầu game 54
Hình 3.4 Form kết hợp các ngôi sao cùng màu 54
Hình 3.5 Form kết thúc game 55
Trang 7MỞ ĐẦU
1 Lý do chọn đề tài
Hiện nay với sự phát triển của khoa học công nghệ, chiếc điện thoại diđộng không chỉ đơn thuần để liên lạc với nhau mà nó còn có thể chơi game,nghe nhạc, kết nối internet, gửi mail, … Sự phát triển mạnh mẽ của cácthiết bị di động thông minh smartphone, tablet, … yêu cầu các ứng dụngtrên thiết bị di động phải đáp ứng được nhu cầu của người sử dụng Lậptrình game trên điện thoại di động là một lĩnh vực thu hút rất nhiều bạn trẻhiện nay
Nói đến lập trình chúng ta không thể không nhắc tới ngôn ngữ lậptrình Hiện nay có rất nhiều ngôn ngữ lập trình và mỗi một ngôn ngữ lập
trình có một thế mạnh riêng Chính vì vậy em đã chọn đề tài Tìm hiểu một
số ngôn ngữ lập trình game trên điện thoại di động để làm khóa luận tốt
3 Nhiệm vụ nghiên cứu
- Tìm hiểu một số ngôn ngữ lập trình game thường dùng: Java, Objective-
C, C#
- Ứng dụng ngôn ngữ lập trình Java để xây dựng một game cho điện thoại diđộng sử dụng hệ điều hành Android
7
Trang 84 Đối tượng nghiên cứu
Các ngôn ngữ lập trình game điện thoại di động: Java, Objective-C,C#
5 Phạm vi nghiên cứu
Lập trình game trên điện thoại thông minh và các ngôn ngữ lập trìnhgame thường được sử dụng
6 Phương pháp nghiên cứu
Phương pháp nghiên cứu tự luận: Nghiên cứu thực trạng, đọc các tài
liệu, giáo trình có liên quan tới các ngôn ngữ lập trình game và lập trìnhgame trên điện thoại di động thông minh
Phương pháp tổng kết kinh nghiệm: Qua việc nghiên cứu tài liệu,
giáo trình, rút ra kinh nghiệm lựa chọn ngôn ngữ lập trình phù hợp
Phương pháp lấy ý kiến chuyên gia: Lấy ý kiến giảng viên trực tiếp
hướng dẫn, các giảng viên bộ môn để hoàn thiện về mặt nội dung và hìnhthức của bài khóa luận
7 Cấu trúc bài khóa luận
Ngoài phần mở đầu, kết luận và hướng phát triển bài khóa luận cónhững nội dung sau:
Chương 1: Cơ sở lý thuyết – Chương này sẽ trình bày đôi nét về
lịch sử phát triển của điện thoại di động, hệ điều hành Android và ngônngữ lập trình game
Chương 2: Một số ngôn ngữ lập trình game – Chương này sẽ trình
bày rõ hơn về một số ngôn ngữ lập trình game điện thoại di động phổ biếnhiện nay: Java, Objective-C, C#
Chương 3: Xây dựng chương trình ứng dụng – Xây dựng game
bằng ngôn ngữ Java cho điện thoại sử dụng hệ điều hành Android
Trang 9CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Lịch sử phát triển của điện thoại di động
Tiến sĩ Martin Cooper, cựu tổng giám đốc đơn vị hệ thống củaMotorola, được coi là “cha đẻ” của thiết bị liên lạc di động cầm tay và cũng
là người đầu tiên thực hiện một cuộc gọi thông qua công cụ này
Ngày 3/4/1973, đứng trên một phố gần khách sạn Manhattan Hilton,Cooper quyết định thử thực hiện một cuộc gọi riêng trước khi đi lên gáctham dự một cuộc họp báo giới thiệu thiết bị Cú điện thoại ấy được ônggọi tới chính đối thủ cạnh tranh của mình: Joel Engel, Giám đốc Trung tâmthí nghiệm Bell Labs
Thật tuyệt vời, “hòn gạch” biết nói nặng hơn 1kg của Cooper đã hoạtđộng rất tốt, kết nối ông với trạm thu phát đặt trên nóc tòa tháp BurlingtonConsolidated (nay là tòa nhà Alliance Capital Building) ở New York, đồngthời liên lạc được với cả đường dây cố định Những người qua đường tỏ
ra rất ngạc nhiên khi thấy một người đàn ông bấm bấm một công cụ gì đó,
áp sát vào tai và rồi say sưa nói chuyện
Chiếc điện thoại Motorola Dyna Tac là chiếc điện thoại di động đầutiên Chiếc điện thoại này có kích thước 22,86 x 12,7 x 4,44 cm, trọnglượng 1,13kg Chiếc điện thoại này không có màn hình nhưng thời lượngthoại của chiếc điện thoại này được 35 phút và thời lượng pin là 10 tiếng
Số bo mạch điện của chiếc điện thoại này là 30 Tính năng mà chiếc điệnthoại này có thể thực hiện đó là nói, nghe và quay số
9
Trang 10Hình 1.1 Chiếc điện thoại đầu tiên
Chiếc điện thoại di động của tiến sĩ Cooper đã đặt nền móng cho sựphát triển như vũ bão của điện thoại di động sau này
1.1.1 Motorola DynaTAC 8000X (1983)
Dù Martin Cooper thực hiện cuộc gọi đầu tiên vào năm 1973 nhưngphải một thập niên nữa thì chiếc điện thoại di động thương mại đầu tiênmới ra đời Motorola DynaTAC 8000X cho phép đàm thoại một giờ, bộnhớ có thể lưu 30 số Trông bề ngoài thiết bị này không đẹp mắt nhưng lạicho phép bạn vừa đi vừa nói chuyện ở bất kỳ đâu
Hình 1.2 Motorola DynaTAC 8000X
Trang 111.1.2 Nokia Mobira Senator (1982)
Hình 1.3 Nokia Mobira Senator
Nokia Mobira Senator trông giống hộp bom hơn điện thoại di động,nhƣng thiết bị hình hộp to đồ sộ này là điện thoại đầu tiên của Nokia Đƣợcgiới thiệu năm 1982, Nokia Mobira Senator đƣợc thiết kế sử dụng trong xe
ô tô Nó nặng khoảng 10kg
1.1.3 Simon Personal Communicator (1993)
Hình 1.4 PDA Simon Personal Communicator
Trang 12Đây là chiếc smartphone đầu tiên trên thế giới Simon PersonalCommunicator là điện thoại đầu tiên có tính năng của liên minh IBM vàBellSouth đƣợc ra mắt năm 1993 Nó là điện thoại kiêm máy tính, sổ địachỉ, máy fax và e-mail Giá 900 USD.
Trang 131.1.5 Nokia 6160 (1998) và Nokia 8260 (2000)
Hình 1.6 Nokia 6160 và Nokia 8260
Vào những năm 1990, các điện thoại hình thỏi kẹo của Nokia xuấthiện hàng loạt Nhưng Nokia 6160 và Nokia 8260 gây được sự chú ý củanhiều người Nokia 6160 có màn hình đen trắng, ăng-ten ngoài, thân 5,2inch, nặng 6 ounce Nokia 8260 ra mắt năm 2000 ấn tượng hơn khi được tôđiểm chiếc áo màu, dài 4 inch, nặng chỉ 3,4 ounce
1.1.6 Phần mềm Palm với Kyocera QCP6035 (2000)
Hình 1.7 Kyocera QCP6035
Nếu bạn là một trong những người hâm mộ điện thoại Treo sử dụng
hệ điều hành Palm thì có thể cảm ơn Kyocera Dế thông minh QCP6035
Trang 14của công ty này thống lĩnh thị trường bán lẻ năm 2001 Với giá 400 USD
và 500 USD, đây là điện thoại dùng phần mềm Palm đầu tiên được phânphối rộng rãi Sản phẩm có 8 MB bộ nhớ, màn hình trắng đen
1.1.7 Handspring Treo 180 (2001)
Hình 1.8 Handspring Treo 180
Trở lại khi Palm và Handspring còn là đối thủ Handspring đã khuấyđộng thị trường với sản phẩm Treo 180 gồm hai phiên bản: một với bànpím QWERTY và một Treo 180g với thiết bị nhập liệu Graffiti NhưKyocera QCP6035, nó có màn hình đen trắng nhưng có 16MB bộ nhớ
1.1.8 Danger Hiptop (2002)
Hình 1.9 Danger Hiptop
Trang 15T-Mobile Sidekick từng được mệnh danh là sản phẩm của năm 2003.Mặc dù các khả năng đàm thoại của nó xoàng, nhưng là một trong nhữngthiết bị đầu tiên cung cấp tính năng duyệt web, truy cập email và nhắn tin.Hơn thế nữa, nó là người tiên phong về thiết kế xoay tròn.
1.1.9 BlackBerry 5810 (2002)
Hình 1.10 BlackBerry 5810
BlackBerry 5810 được biết đến nhưng một thiết bị điển hình về cáckhả năng xử lý dữ liệu Đây là sản phẩm đầu tiên cung cấp các tính năngvoice, GSM
1.1.10 Sanyo SCP-5300 (2002)
Hình 1.11 Sanyo SCP-5300
Trang 16Sanyo SCP-5300 PCS là "dế" đầu tiên có tính năng chụp ảnh đượcSanyo và Sprint giới thiệu năm 2002 Ở độ phân giải cao nhất nó có thểchụp được các ảnh VGA (640 x 480).
1.1.11 Nokia N-Gage (2003)
Hình 1.12 Nokia N-Gate
Dòng máy N-Gage tạo được nhiều dư luận khi xuất hiện trên thịtrường năm 2003, nhưng thật không may, đó lại là sản phẩm bất lợi Sự kếthợp điện thoại di động/thiết bị chơi game được kỳ vọng sẽ quyến rũ đượcgame thủ từ bỏ máy chơi game cầm tay của họ Nhưng thay vào đó, nó gâyphản cảm bởi thiết kế hình bán nguyệt kỳ quặc
1.1.12 Motorola Razr v3 (2004)
Hình 1.13 Motorola Razt v3
Trang 17Điện thoại di động ngày càng mỏng và phong cách hơn, nhưngMotorola Razr v3 là sản phẩm đầu tiên gây ấn tượng về thiết kế thờithượng mỏng và nhẹ vào 2004 Ba năm sau "dế" này vẫn được đánh giá làmột trong những điện thoại phổ biến nhất trên thị trường.
1.1.13 Motorola Rokr (2005)
Hình 1.14 Motorola Rokr
Motorola Rokr – điện thoại di động kiêm máy nghe nhạc đầu tiên sửdụng phần mềm nghe nhạc của Apple Với thiết bị này, người dùng có thểthưởng thức các bài hát, bản nhạc từ dịch vụ iTunes
1.1.14 BlackBerry Pearl (2006)
Hình 1.15 BlackBerry Pearl
Trang 18Thiết kế mỏng, bàn phím SureType, tính năng chụp ảnh, nghe nhạc,xem video, hỗ trợ dịch vụ e-mail ấn tượng và nhiều khả năng đa phươngtiện khác, BlackBerry Pearl trở thành viên ngọc quý của không ít người.
1.1.15 Cách tân với Apple iPhone (2007)
Hình 1.16 Iphone
Sau những tháng chờ đợi, Apple khẳng định tháng 6 là thời điểm quantrọng để iPhone sẽ xuất hiện trên thị trường Đây là thiết kế cách tân vớimàn hình cảm ứng cảm ứng đa điểm sẽ mang lại một thế giới sinh động vớie-mail bằng giọng nói, bàn phím "mềm" dạng Qwerty có thể đoán từ, trìnhduyệt web Safari, tích hợp camera2-megapixel iPhone là thiết bị gây tò mònhất trong giới chơi điện thoại di động, dùng hệ điều hành Mac OS X Giábán: 500 USD cho mẫu 4 GB, 600 USD cho mẫu 8 GB
1.2 Hệ điều hành Android
Android là một hệ điều hành dành cho thiết bị di động nhưsmartphone, tablet hay netbook Android do Google phát triển dựa trên nềntảng Linux kernel và các phần mềm mã nguồn mở
Android là hệ điều hành mở mã nguồn chính duy nhất vớis 12 triệudòng mã bao gồm 3 triệu dòng mã XML, 2.8 triệu dòng mã C, 2.1 triệudòng Java và 1.75 triệu dòng C++
Trang 19Ban đầu nền tảng này được phát triển bởi Android Inc (sau đó đượcGoogle mua lại) và gần đây nó trở thành một trong những phần mềm đứngđầu của liên minh OHA (Open Handset Alliance - với khoảng 78 thànhviên bao gồm cả nhà sản xuất, nhà phát triển ứng dụng, cho thiết bị diđộng mà dẫn đầu là Google).
Android được phát triển nhằm cạnh tranh với các hệ điều hành di độngkhác như iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft),Symbian (Nokia), Samsung (Bada), WebOS (Palm), Tính đến thời điểmnày, Android đã trở thành nền tảng di động tăng trưởng nhanh nhất thếgiới
1.2.1 Lịch sử phát triển của Android
Tháng 10/2003, Android (Inc) được thành lập tại Palo Alto,California, Hoa Kỳ do Andy Rubin (đồng sáng lập của Danger Inc), RichMiner (đồng sáng lập của Wildfire Communications Inc và cựu phó chủtịch công nghệ và tương lai ở Orange) và một số thành viên khác chủ trì,với mục đích để phát triển hay tạo ra các thiết bị di động thông minh hơnphục vụ các mục đích cho lợi ích con người
Bước đầu, hệ điều hành Android chỉ đơn thuần là phần mềm trên điệnthoại di động
Tháng 8/2005, Google mua lại Android Inc với giá 50 triệu USD Cácnhân viên chính của Android Inc, trong đó có Andy Rubin, Rich Miner vẫntiếp tục làm việc tại công ty
Tại Google, nhóm kĩ sư do Rubin đứng đầu đã phát triển một nền tảng
di động dựa trên hạt nhân Linux Sau đó, họ đã giới thiệu cho các nhà sảnxuất thiết bị cầm tay và các nhà mạng trên những tiền đề về việc cung cấpmột hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao
Trang 20Google cũng lên danh sách các thành phần phần cứng đáp ứng nềntảng và các đối tác phần mềm, đồng thời cam kết với các nhà mạng rằng họsẵn sàng hợp tác ở nhiều cấp độ khác nhau Thời gian này, một loạt nguồntin khẳng định Google sẽ sớm tham gia phát triển hệ điều hành riêng chođiện thoại di động.
Tháng 9/2007, InformationWeek đăng tải một nghiên cứu củaEvalueserve cho biết Google đã nộp một số đơn xin cấp bằng sáng chếtrong lĩnh vực điện thoại di động
Tháng 11/2007, Liên minh thiết bị cầm tay mở rộng (Open HandsetAlliance) với sự đồng thuận của Texas Instruments, Tập đoàn Broadcom,Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia,Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile đã thành lậpvới mục đích phát triển các tiêu chuẩn mở cho thiết bị di động
Android chính thức gia nhập Liên minh thiết bị cầm tay mã nguồn mở,đồng thời Google đã công vố việc họ bắt tay phát triển hệ điều hành mãnguồn mở cho thiết bị di động nhằm cạnh tranh với Symbian, WindowsMobile và các đối thủ khác
Hãng cũng giới thiệu sản phẩm Android đầu tiên là T-Mobile G1 Đây
là một thiết bị di động có hệ điều hành dựa trên nhân Linux phiên bản 2.6
Từ tháng 10/2008, hệ điều hành Android đã chính thức trở thành phầnmềm mã nguồn mở Theo đó, các công ty thứ ba đƣợc phép thêm nhữngứng dụng của riêng của họ vào Android và bán chúng mà không cần phảihỏi ý kiến Google
Tháng 11/2008, Liên minh OHA ra mắt gói phát triển phần mềmAndroid SDK cho nhà lập trình
Trang 21Đến tháng 12/2008, có thêm 14 thành viên mới gia nhập dự ánAndroid được công bố, gồm có ARM Holdings, Atheros Communications,Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, ToshibaCorp và Vodafone Group Plc.
Tháng 2/2009, 1 số công ty trong đó có Qualcomm và TexasInstruments đã có trong tay những con chip chạy các phiên bản đơn giảncủa hệ điều hành Android, mang đến những trải nghiệm hoàn toàn mới chongười dùng trên toàn thế giới
Đến năm 2010, số lượng smartphone nền tảng Android tăng trưởngmạnh mẽ Hàng loạt nhà sản xuất hàng đầu đã bắt tay sản xuất smartphonenhư Samsung, HTC, Motorola, Thậm chí, Android còn được coi là “cứucánh” cho nhiều đại gia công nghệ bước sang một trang mới trong việc cảithiện doanh số, bán hàng có lãi sau một thời gian dài trì trệ, tiêu biểu làMotorola
1.2.2 Các phiên bản Android
Hình 1.17 Các phiên bản của hệ điều hành Android
Trang 22Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa cótên gọi chính thức Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt vớinhững mã tên riêng dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái
từ “C-D-E-F-G-H-I” Hiện tại các phiên bản chính của Android bao gồm:
1.5 (Cupcake): Ra mắt tháng 4/2009 Phiên bản này có một số tính năng
đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghihình, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tíchhợp bàn phím ảo với khả năng đoán trước văn bản, tự động kết nối với mộtthiết bị Bluetooth trong một khoảng cách nhất định, các widget và thư mụcmới có thể cài đặt linh động trên màn hình chủ
1.6 (Donut): Ra mắt tháng 9/2009 Phiên bản này giúp nâng cao trải nghiệm
trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phépngười dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khảnăng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ,bước đầu hỗ trợ màn hình độ phân giải WVGA
2.0/2.1 (Eclair): Ra mắt tháng 10/2009 Phiên bản này có sự cải thiện
rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợnhiều kích cỡ và độ phân giải màn hình hơn, thay đổi giao diện duyệt web
và hỗ trợ chuẩn HTML5, Exchange ActiveSync 2.5, nâng cấp GoogleMaps 3.1.2, camera zoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím
ảo và kết nối Bluetooth 2.1
2.2 (Froyo): Ra mắt tháng 5/2010 Phiên bản này chú trọng nâng cấp tốc độ
xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1,thêm tính năng tạo điểm truy cập Wi-Fi Một tính năng đáng chú ý khác hỗtrợ chuyển đổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phímđồng thời cho phép cài đặt và cập nhật ứng dụng ở các thiết bị
Trang 23mở rộng bộ nhớ Một trong những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LG Optimus One.
2.3 (Gingerbread): Ra mắt tháng 12/2010 Phiên bản này đã nâng cấp đáng kể
giao diện người dùng, cải thiện bàn phím ảo, thêm tính năngcopy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩnvideo WebM và nâng cao tính năng copy–paste Cùng với phiên bảnGingerbread, Google cũng ra mắt điện thoại đầu tiên của hãng sử dụng nềntảng này là Google Nexus S
3.0 (Honeycomb): Ra mắt tháng 2/2011 Đây là phiên bản hệ điều
hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa chotablet, từ các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web,duyệt mail, ) Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồngthời hỗ trợ nhiều màn hình home khác nhau, cho phép người dùng dễ dàngtùy biến giao diện nếu muốn
4.1 (Ice-cream sandwich): Ra mắt tháng 12/2011, là sự kết hợp giữa
Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điệnthoại, máy tính bảng, máy tính xách tay, cải thiện sự ổn định của hệ điềuhành và hiệu năng camera được cải thiện tốt hơn
4.2 (Jelly bean): Ra mắt tháng 7/2012 Phiên bản này có giao diện mượt
hơn, có trợ lý Google Now, ứng dụng camera và tìm kiếm giọng nói
4.4 (Kitkat): Ra mắt tháng 10/2013 Phiên bản này có khả năng in
không dây, có Framework mới cho giao diện Ứng dụng setting không còn
sử dụng giao diện nhiều panel
1.2.3 Tính năng mở của hệ điều hành Android
Android được xây dựng để cho phép các nhà phát triển để tạo ra cácứng dụng di động hấp dẫn, tận dụng tất cả một chiếc điện thoại đã cungcấp Nó được xây dựng để được thực sự mở
Trang 24Ví dụ một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của điện thoạinhư thực hiện cuộc gọi, gửi tin nhắn văn bản hoặc bằng cách sử dụng máyảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và nhiều hơn nữanhững kinh nghiệm cố kết cho người dùng.
Android được xây dựng trên mở Linux Kernel Hơn nữa, nó sử dụngmột máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyênphần cứng trong một môi trường di động Android là mã nguồn mở, nó cóthể được liberally mở rộng, nền tảng này sẽ tiếp tục tiến triển như cộngđồng nhà phát triển công việc, cùng nhau để xây dựng các ứng dụng diđộng sáng tạo
1.2.4 Đặc điểm của hệ điều hành Android
Android không phân biệt giữa các ứng dụng lõi của điện thoại và cácứng dụng của bên thứ ba Tất cả có thể được xây dựng để có thể truy cậpbằng khả năng của một người cung cấp cho người sử dụng điện thoại vớimột dải rộng các ứng dụng và dịch vụ
Với các thiết bị xây dựng trên hệ điều hành Android, người dùng cóthể hoàn toàn thích ứng với điện thoại đến lợi ích của họ Họ có thể trao đổitrên màn hình của điện thoại, những phong cách của dialer hoặc bất kỳ ứngdụng Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh
ưa thích của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh
Android phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo
Ví dụ một nhà phát triển có thể kết hợp thông tin từ các trang web với
dữ liệu trên điện thoại di động của một cá nhân như địa chỉ liên hệ củangười dùng, lịch hoặc vị trí địa lý, … để cung cấp một trải nghiệm ngườidùng có liên quan hơn Với Android, một nhà phát triển có thể xây dựngmột ứng dụng cho phép người dùng xem vị trí của bạn bè của họ và đượccảnh báo khi họ đang có trong vùng phụ cận cho họ một cơ hội để kết nối.Android cung cấp truy cập đến một loạt các thư viện công cụ hữu ích
và có thể được sử dụng để xây dựng các ứng dụng phong phú
24
Trang 25Ví dụ Android cho phép các nhà phát triển để có được vị trí của điệnthoại và cho phép các thiết bị để giao tiếp với nhau tạo điều kiện cho đồngđẳng rich-to-peer ứng dụng xã hội Ngoài ra, Android bao gồm một tập hợpđầy đủ công cụ đã được xây dựng từ mặt đất lên cùng với việc cung cấpnền tảng phát triển, với năng suất cao và cái nhìn sâu vào các ứng dụng củahọ.
1.2.5 Kho ứng dụng Android Market
Kho ứng dụng Android Market ra mắt cùng thời điểm với nền tảngAndroid và cũng có sự tăng trưởng vượt bậc trong một thời gian ngắn.Điều này là nhờ Android có một cộng đồng phát triển ứng dụng rất lớn(lên tới
Trang 26Tính đến đầu tháng 5/2011, Android Market đã có 294.730 ứng dụng,trong khi App Store “đình đám” cũng chỉ có 381.062 ứng dụng Trongtháng 4, các thiết bị Android có thêm 28.000 phần mềm mới, trong khi con
số dành cho các thiết bị iOS là 11.000
Nếu tiếp tục duy trì tốc độ tăng trưởng như thời điểm hiện tại thì chỉtrong vòng 5 tháng tới, Android Market sẽ trở thành kho ứng dụng lớn nhấtcho nền tảng smartphone Không những thế Android Market hiện đang dẫndầu về số lượng ứng dụng miễn phí với khoảng 132.342 ứng dụng (trongkhi ở App Store chỉ có khoảng 121.845 ứng dụng)
Đây chính là một trong nhiều yếu tố quan trọng để tạo nên sự hấp dẫncủa nền tảng Android và giải thích lí do tại sao các thiết bị nền tảng này đãnhận được sự ủng hộ lớn của người tiêu dùng
1.2.6 Dalvik và máy ảo Dalvik
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị diđộng Android Nó chạy các ứng dụng đã được chuyển đổi thành một filethực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bịhạn chế về bộ nhớ và tốc độ xử lý Dalvik đã được thiết kế và viết bởi DanBornstein, người đã đặt tên cho nó sau khi đến thăm một ngôi làng đánh cánhỏ có tên là Dalvik, nơi mà một số tổ tiên của ông sinh sống
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảoJava (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà pháttriển viết một ứng dụng dành cho Android, anh ta thực hiện các đoạn mãtrong môi trường Java Sau đó, nó sẽ được biên dịch sang các bytecode củaJava, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà pháttriển phải thực thi một công cụ có tên là dex Đây là công cụ dùng đểchuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là từ viết
Trang 27tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứngdụng Android.
1.2.7 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android DeverloperTool (ADT) Các Android coder sẽ cần phải sử dụng công cụ IDE(Integrated Development Enveronment) này để phát triển, debugging vàtesting cho ứng dụng Tuy nhiên, các coder cũng có thể không cần phải sửdụng IDE mà thay vào đó là sử dụng command line để biên dịch và tấtnhiên là vẫn có Emulator như thường
Android Emulator được trang bị đầy đủ hầu hết các tính năng của mộtthiết bị thật Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB,camera và video, nghe phone, nguồn điện giả lập và bluetooth
Android Emulator thực hiện các công việc thông qua một bộ xử lý mãnguồn mở, công nghệ này được gọi là QEMU được phát triển bởi FabriceBellard
1.2.8 Kiến trúc của Android
Hình 1.19 Cấu trúc stack hệ thống Android
Trang 281.3 Ngôn ngữ lập trình game
Chúng ta có thể lập trình game bằng mọi ngôn ngữ Nhưng mỗi người
có một sở trường và thế mạnh riêng, chúng ta hãy tùy thuộc vào yêu cầu vàthế mạnh của mình để lựa chọn ngôn ngữ để viết game Nhưng xu hướnghiện nay, một số ngôn ngữ hay dùng để viết game là:
Java: thường dùng để viết game cho Mobile – các dòng phone hỗ trợ
J2ME hoặc viết game cho Android, ít khi viết game cho PC
C#: khi nhắc tới C# ta có thể nghĩ ngay đến XNA và gắn liền với
thương hiệu Microsoft Dùng để viết game cho windows mobiles hoặc PC
Objective-C: dùng cho iOS như máy MAC, iPhone, Ipad.
Javascript: dùng cho môi trường web.
C/C++: với sự lâu đời cũng như được sự hưởng ứng rộng rãi từ hầu
hết các chương trình đào tạo đại học, C/C++ được xem là ngôn ngữ cơ bảnnhất của mọi ngôn ngữ lập trình Bất kì một programmer đều phải ít nhấtmột lần đụng đến hai ngôn ngữ này C/C++ cũng khá được ưa chuộngtrong lập trình game do khả năng thực thi trên nhiêu platform khác nhau:Windows, Linux, MacOS, Android, ipjone/ipad, Symbian, …
Trang 29CHƯƠNG 2: MỘT SỐ NGÔN NGỮ LẬP TRÌNH GAME
2.1 Java
2.1.1 Java là gì?
Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP)được Sun Microsystems giới thiệu vào tháng 6 năm 1995 (hiện tại bị mualại bởi Oracle năm 2009 - 2010)
Java là công cụ lập trình của các lập trình viên chuyên nghiệp Javađược xây dựng trên nền tảng của C và C++ Do vậy nó sử dụng cú phápcủa C và các đặc trưng hướng đối tượng của C++
Java là ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồnđược biên dịch công cụ JAVAC để chuyển thành dạng ByteCode Sau đóđược thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch Javađược tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (“WriteOnce, Run Anywhere” (WORA)) Chương trình phần mềm viết bằng Java
có thể chạy trên mọi nền tảng khác nhau thông qua một môi trường thực thivới điều kiện có môi trường thực thi thích hớp hỗ trợ nền tảng đó
Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trênInternet Nó là ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, khôngphụ thuộc vào hệ điều hành Nó không chỉ dùng để viết các ứng dụng chạyđơn lẻ hay trong mạng mà còn để xây dựng các trình điều khiển thiết bị chođiện thoại di động, PDA,
2.1.2 Đặc trưng của Java
Đơn giản
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học vàquen thuộc với đa số người lập trình Do vậy Java loại bỏ các đặc trưngphức tạp của C và C++ như thao tác con trỏ, thao tác định nghĩa chồng toán
Trang 30tử (operator overloading), … Java không sử dụng lệnh “goto” cũng như fileheader (.h) Cấu trúc “struct” và “union” cũng được loại bỏ khỏi Java.
Tính độc lập ở mức nhị phân, một chương trình đã biên dịch có thểchạy trên nhiều nền (phần cứng, hệ điều hành) khác mà không cần dịch lại
mã nguồn Tuy vậy cần có phần mềm máy ảo Java (JVM) hoạt động nhưmột trình thông dịch tại máy thực thi
Môi trường phát triển của Java được chia làm hai phần: Trình biêndịch và trình thông dịch Không như C hay C++, trình biên dịch của Javachuyển mã nguồn thành dạng bytecode độc lập với phần cứng và có thểchạy trên bất kỳ CPU nào Nhưng để thực thi chương trình dưới dạngbytecode, tại mỗi máy cần phải có trình thông dịch của Java hay còn gọi làmáy ảo Java Máy ảo Java chuyển bytecode thành mã lệnh mà CPU thựcthi được
Mạnh mẽ
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu Phải khai báo kiểu
dữ liệu tường minh khi viết chương trình Java kiểm tra lúc biên dịch và cảtrong thời gian thông dịch vì vậy Java loại bỏ một số loại lỗi lập trình nhấtđịnh Java không sử dụng con trỏ và các phép toán con trỏ Java kiểm tra tất
cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy
Trang 31nhập đó không ra ngoài giới hạn kích thước Java kiểm tra sự chuyển đổikiểu dữ liệu từ dạng này sang dạng khác lúc thực thi.
Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và phụchồi sau lỗi
Bảo mật
Java cung cấp một môi trường quản lý thực thi chương trình, nó chorằng không có một đoạn mã nào là an toàn cả Vì vậy Java không chỉ làngôn ngữ lập trình thuần túy mà còn cung cấp nhiều mức để kiểm soát tính
an toàn khi thực thi chương trình
Ở lớp đầu tiên, dữ liệu và các phương thức được đóng gói bên tronglớp Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp.Java không hỗ trợ con trỏ vì vậy không cho phép truy xuất bộ nhớ trực tiếp
Nó cũng ngăn chặn không cho truy xuất thông tin bên ngoài kích thước củamảng bằng kỹ thuật tràn và cũng cung cấp kỹ thuật dọn rác trong bộ nhớ.Các đặc trưng này tạo cho Java an toàn tối đa và có khả năng cơ động cao.Trong lớp thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn
và tuân theo các nguyên tắc của Java
Lớp thứ ba được đảm bảo bởi trình thông dịch Chúng kiểm tra xembytecode có đảm bảo các quy tắc an toàn trước khi thực thi
Lớp thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc viphạm giới hạn truy xuất trước khi nạp vào hệ thống
Phân tán
Java có thể dùng để xây dựng các ứng dụng có thể làm việc trên nhiềuphần cứng, hệ điều hành và giao diện đồ họa Java được thiết kế hỗ trợ chocác ứng dụng chạy trên mạng Vì vậy chúng được sử dụng rộng rãi nhưcông cụ phát triển trên Internet, nơi sử dụng nhiều nền tảng khác nhau
Đa luồng
Chương trình Java đa luồng (Multithreading) để thực thi các công việcđồng thời Chúng cũng cung cấp giải pháp đồng bộ giữa các luồng Đặc
Trang 32tính hỗ trợ đa luồng cho phép xây dựng các ứng dụng chạy trên mạng hiểuquả.
Động
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môitrường mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằmkiểm soát và truy nhập đối tượng lúc chạy Điều này cho phép khả năngliên kết động
Ngoài những đặc trưng trên Java 2 còn có một số đặc trưng riêng:
Swing: Là một tập các lớp và giao diện mới dùng để tạo giao diện ứng
dụng đồ họa “Look and Feel”
Kéo và thả: Là khả năng di chuyển thông tin giữa các ứng dụng hay
các phần khác nhau của chương trình
Java 2D API: Chứa tập hợp các lớp hỗ trợ cho ảnh và đồ họa hai
chiều
Java sound: Tập hợp hoàn toàn mới các lớp đặc trưng về âm thanh
của Java
RMI (Remote Method Invocation): Cho phép các ứng dụng gọi các
phương thức của đối tượng tại máy khác và cho phép giao tiếp với chúng
2.1.3 Máy ảo Java (JVM – Java Virtual Machine)
Máy ảo Java là trái tim của ngôn ngữ Java Môi trường Java bao gồm:
- Ngôn ngữ
- Định nghĩa Bytecode
- Các thư viện lớp Java/Sun
- Máy ảo Java (JVM)
- Cấu trúc file class