1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android

106 1,3K 8
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 106
Dung lượng 10,95 MB

Nội dung

Ngày nay Công nghiệp giải trí hiện đang rất phát triển trên thế giới, bao gồm các thành phần cơ bản như: Game, âm nhạc, thời trang, chương truyền hình, điện ảnh, Gameshow, truyền thông, tổ chức live show

Trang 1

ĐA I HỌC KHOA CÔNG NGHỆ

KHOA LUAN TOT NGHIEP Đề tài: Nghiên cứu đồ họa 2D, 3D

và phát triển Game trên hệ điều hành Android

Sinh viên: Đặng Văn Giỏi

Ngành: Công Nghệ Thông Tin

Giảng viên hướng dẫn: ThS Đinh Đức Hùng

Trang 2

Đặng Văn Giỏi - LỚp 508CNT +

Trang 3

Lời cảm Ơn

Lời đầu tiên, em xin chân thành cảm ơn thầy Đinh Đức Hùng, người đã tận tình giúp đổ em để em có thể hoàn thành khóa luận này một cách tốt nhất

Em cũng xin chân thành cảm ơn các thầy, cô giáo trong khoa Công nghệ,

trường Đại học Hòa Bình đã tận tình giảng dạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu và giúp đỡ em trong suốt quá trình học tập

Và tôi xin cảm Ơn tất cả những người bạn của tôi, những người đã và đang

luôn động viên, chia sẻ và giúp đỡ tôi tận tình trong suốt thỜi gian học tập cũng như thực hiện khóa luận này

Cuối cùng, con kính gửi lời cảm ơn sâu sắc nhất tới gia đình, cám Ơn cha mẹ

đã tạo điều kiện tốt nhất cho con học tập để có được như ngày hôm nay Và xin cảm ơn tất cả mọi người đã tin tưởng, khích lệ và động viên tôi trong suốt thỜi gian qua

Hà Nội, ngày 5 tháng 5 năm 2012

Đặng Văn Giỏi

Trang 4

Đặng Văn Giỏi - LỚp 508CNT

+

TÓM TẮT NỘI DUNG CỦA KHÓA LUẬN

Tên đề tài: “ Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành

Android”

Chương 1: Giới thiệu hệ điều hành Android

Nội dung chính của chương mộ: là giới thiệu một cách tổng quan về hệ điều hành Android Cung cấp nhỮng kỹ thuật cơ bản để cài đặt bộ công cụ phát triển Ứng dụng

Chương 2: Nghiên cứu lý thuyết đồ họa 2D, 3D Giới thiệu lý thuyết đồ họa 2D, 3D

Những thành phần cơ bản của đồ họa may tinh Các ứng dụng sử dụng kỹ thuật đồ họa 2D, 3D

Chương 3: Nghiên cứu đồ họa 2D, 3D và viết chương trình mẫu trên hệ điều hành Android

Tìm hiểu lý thuyết đồ họa của hệ điều hành Android, một số thành phần quan trọng của đồ họa 2D, 3D của hệ điều hành này

Xây dựng hai ví dụ minh họa về đồ họa 2D, 3D Viết trò chơi Bom Offline 2D và xây dựng ý tưởng cho trò chơi Line3D

Chương 4: Kết luận và hướng phát triển trong tương lai

Trình bày các kết quả đạt được và những khó khăn cần giải quyết

Định hướng phát triển trong tương lai.

Trang 5

6 NFC | Near Field Communication — Giao tiếp trường gần

7 XML | eXtensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng 8 SDK | Software Development Kit - Phát triển phần mềm

9 ADT | Android Development Tools - Công cụ phát triển Android

10 API Application Programming Interface — Giao dién lap trinh Ung dung

Trang 6

Đặng Văn Giỏi - LỚp 508CNT

+

Danh mục các hình dùng trong khóa luận

Hình 1.Kiến chúc hệ điều hành Android

Hình 2: Bảng liệt kê một số kiểu file trong Linux

Hình 3: Mô tả cây thư mục

Hình 4: Tóm tắt quá trình cập nhật các phiên bản tính đến năm 2011

Hình 5: Các gói cho các hệ điều hành

Hình 6: Kết quả khi chạy file SDK Manager

Hình 7: Add ADT

Hình 8: Cài đặt thành công

Hình 9: 3 bức ảnh được chụp từ 1 đối tượng 3D

Hình 10: Hình 11: Hình 12: Hình 13: Hình 14: Hình 15: Hình 16: Hình 17: Hình 18: Hình 19: Hình 20: Hình 21: Hình 22: Hình 23: Hình 24: Hình 25: Hinh 26: Hình 27:

Giao diện chính của Game Bom Offline

Giao diện menu phụ

Giao diện khi người chơi thua cuộc Giao diện khi người chơi thẳng cuộc Giao diện lưu điểm

Hiện thị danh sách điểm cao

Ví dụ 1 map (bản đồ)

Vi trí pX, pY nằm trên TMXLayer

VỊ trí pX, pY nằm ngoài TMXLayer

Ảnh nền phần menu chính.

Trang 7

Hình 29: 3 ảnh dùng trong phần giao diện chính của Game

Hình 30: Giao diện menu Game Line3D

Hình 31: Giao diện chơi Game Line3D

Hình 32: Ví dụ minh họa cách tính ăn viên bi.

Trang 8

Đặng Văn Giỏi - LỚp 508CNT

+

MỤC LỤC

TOM TAT NOI DUNG CUA KHÓA LUẬN 5 ce<cssesseessecse5ss Ẩ

Danh mục thuật ngữ và từ viết tắt được sử dụng 5

Danh mục các hình dùng trong khóa luận - -: s555<5s<55s<<5s Ổ

LUỜi mỞ đầU G G 5E 555056 S6 S0 50 SƠ 5n sọ n5 6s nsssssssessssssssssssssssssssesss Ủ Chương 1: Giới thiệu hệ điều hành Android [1

1.1.2.1 Tầng hạt nhân Linux (Linux Kernel layer) -¿ -2 22222 22222cxccszsza 13

1.1.3.1 Tổng quan về hệ thống file trên Android - -:-:: ::s:s:::-szz:zx:szzzzxsxxszsex2 17 1.1.3.2 Các kiểu file trên AridrOid - 1 1130 111110121151 TH HT HT TT TH ng ĐH g3, 17 1.1.3.3 Tổ chức quyền sở hữu và quyền han trén file 17 1.1.3.4 Cây thư mục trên hệ điều hành Android - :-: :-:+-:-sx+c.zs.xcsszsxssxssss 19

1.1.4.1 So sánh giữa hệ điều hành di động và hệ điều hành trên desktop 20 1.1.4.2 So sánh hệ điều hành Android với các hệ điều hành di động khác 21

Chương 2: Nghiên cứu lý thuyết đồ hoa 2D, 3D sss<ssssssssssssssssss 26

2.1.3.4 Hệ màu Lab (hệ tổng hợp), -¿- 2-2 < 22232222223 222223232 2xx SEE xà 29

Chương 3: Nghiên cứu đồ họa 2D 3D của hệ điều hành Android và viết

chương trình minh hQa - 555cc 33H 1n n1 nen neo 2:

Chương 4: Kết luận và hướng phát triển trong tương lai 7

Tài liệu tham khiẢo < «se cseeEsEESssESsEssEsssesessessesseesssesessssseessssssssssessssse [6

Trang 9

Lời mở đầu

Ngày nay Công nghiệp giải trí hiện đang rất phát triển trên thế giới, bao gồm

các thành phan cơ bản nhƯ: Game, âm nhạc, thời trang, chương truyền hình, điện

ảnh, Gameshow, truyền thông, tổ chức live show, Các mảng nằm trong ngành giải trí không chỉ mang tính giải trí mà còn mang nhiều giá trị về văn hóa, lối sống, phong tỤc và con người của tỪng vùng miền, đồng thời quảng bá hình ảnh của đất nước

Việt Nam tới bè bạn khắp nơi trên thế giới

Có thể nói một trong những ngành giải trí mang lại nhiều lợi nhuận nhất đó là

ngành Game Game là lĩnh vựỰc giải trí tương tác quan trọng hàng đầu trong ngành

công nghiệp nội dung số Doanh thu toàn cầu từ ngành này tăng trưởng nhanh chóng từ 7 tỷ USD (1994) lên 41.9 tỷ USD (2007) và dự đoán sẽ đạt 68 tỷ USD (2012) Với tốc đỘ tăng trưởng bình quân 9% một năm, Game đã trở thành ngành có tốc độ phát triển nhanh nhất trong lĩnh vực giải trí Trong đó, Mỹ chiếm 40.42% thị phần, Anh 12.45% và Nhật 11.87% Năm 2008, ngành Game Ở MỸ giá trị khoảng 22 tỷ USD vƯỢt qua ngành công nghiệp âm nhạc (10 tỷ USD) và ngành công nghiệp phim ảnh

(9,5 tỷ USD), thu hút hàng triệu lao động là các chuyên gia phát triển, phân phối và marketing Game,

Việt Nam là thị trường Game lớn nhất trong khu vực Đông Nam Á với hơn 20

nhà phát hành Game trên cả nước Doanh thu các năm gần đây liên tục tăng trưởng với mức trung bình 400 triệu USD/năm, chiếm 70% doanh thu của ngành nội dung số Có mức tăng trưởng ấn tượng, nhưng ngành công nghiệp Game ở Việt Nam chỉ mới

dừng lại ở mức phân phối phát hành và gia công các tựa Game nước ngoài

Một vài năm gần đây, các Studio được lập nên nhằm phát triển sản xuất Game thuần Việt Tính đến giỮa tháng 6 năm 2011, số lượng Game do Việt Nam sản xuất đang đưa vào triển khai trên thị trường có Thuận Thiên Kiếm (VNG), SQUAD,

G3, Showbiz (VIC Studio) mdi day nhất là Jay Online (EGame) Tranh Hùng

(SunSoft), Game offline cé 7754 — một tựa Game rất thành công lấy đề tài chiến dịch

Điện Biên Phủ.

Trang 10

10 Đặng Văn Giỏi - LỚp 508CNT

+

Sự phát triển nhanh chóng của thị tường Game Việt đòi hỏi một lượng nhân lực lớn ở tất cả các khâu của quá trình sản xuất Game như: thiết kế đồ họa Game

(Games Design), lập trình Game (Programming), âm thanh (Audio)

Với sự phát triển bùng nổ của ngành Game như hiện nay, việc nghiên cứu và phát triển Game là một hướng đi khá tốt cho các lâp trình viên Với đề tài “Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android”, tôi nghĩ rằng nó sẽ giúp một phần nào đó cho việc hiểu và phát triển Game nói riêng cũng nhƯ ngành công nghiệp giải trí nói chung trong tương lai gần

Các vấn đề chính được làm rõ trong đề tài này là: + Lý thuyết đồ họa 2D

+ Lý thuyết đồ họa 3D

+ Xây dựng một ứng dụng Game hoàn chỉnh (2D) và một phần mở rộng (3D).

Trang 11

Chương 1: Giới thiệu hệ điều hành Android 1.1 Giới thiệu chung về hệ điều hành Android

1.1.1 Giới thiệu chung về hệ điều hành Android

Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dành cho các dòng điện thoại SmartPhone Đầu tiên được ra đời bởi công ty liên hợp

Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ điều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên

thế giới

Hệ điều hành Android một hệ điều hành rất mạnh, có bảo mật cao, hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi, NEC tương thích với

nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và

trackball Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng không dây HỖ trợ công nghệ OpenGL nên có khả năng chơi các phƯơng tién media, hoạt hình cũng như trình diễn các khả năng đồ họa khác cực tốt, là ền đề để phát triển các Ứng dụng có giao diện phức tạp chẳng hạn như là các trò chơi

Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần

Android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm

công nghệ mới Chẳng hạn như theo một đánh giá thì Android phiên bản 2.2 hoạt

động nhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất 4.0.4 phát hành 2012 và đang tiếp tục được cập nhật

Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn, điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chỉ phí phát triển hệ điều hành Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với nhỮng hãng lớn như Samsung, HTC

Với Google, vì Android hoàn toàn miễn phí, Google không thu tiền từ nhỮng hãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ Android nhưng bù lại,

những dịch vụ của hãng như Google Search, Google Maps, nhờ có Android mà có

Trang 12

12 Đặng Văn Giỏi - LỚp 508CNT

+

thể dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được

sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google TỪ đó hãng có thể kiếm bội, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó

Với các nhà phát triển Ứng dụng (developers), việc hệ điều hành Android được sử dụng phổ biến đồng nghĩa với việc họ có thể thoải mái phát triển Ứng dụng trên nền Android với sự tin tưởng là Ứng dụng đó sẻ có thể chạy đƯỢc ngay trên nhiều dòng điện thoại của các hãng khác nhau Họ ít phải quan tâm là đang phát triển cho điện thoại nào, phiên bản bao nhiêu vì nền tẳng Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực thi những Ung dung phù hợp với mỗi dòng điện thoại mà nó đang chạy Tất cả các chương trình Ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao

Mội số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu :

> HTC vdi cac dong Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero,

Desire, Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One, Dream, Aria, Paradise

> LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500, GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880, C710Aloha

> MOTOROLA véi cac dong MILESTONE 2, BACKFLIP, Droid XTreme, MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT800 ZHISHANG, DEFY, CHARM, XT806

> SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G,

15510, I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, 18520 Galaxy Beam, 1909 Galaxy S

>» SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8

> ACER với các dòng may beTouch T500, Liquid E, Stream, Liquid,

eTouch E110, beTouch E130, beTouch E400, beTouch E120, Liquid Metal

> Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nỮa cũng sử dụng hệ điều hành Android trong sản phẩm của mình

Trang 13

11.2 Kiến trúc hệ điều hành Android

Hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiên bản 2.6), tầng Tầng Libraries & Android runtime , Tầng Application Framework và trên cùng là tầng Application Xem hình 1

1.1.2.1 Tầng hạt nhân Linux (Linux Kernel layer)

Hệ điều hành Android được phát triển dựa trên hạt nhân linux, cụ thể là hạt

nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này Tất cả mọi

hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process)

Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối

mang khong day

Tầng này có các thành phần chủ yéu:

> Display Driver : Diéu khién viéc hién thi lên màn hình cũng như thu

nhận những điều khiển của người dùng lên man hình (di chuyển,

Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi

Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính

hiệu dạng audio thành tín hiệu số và ngược lại

> Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với

mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo nhỮng

chức năng truyền thông được thực hiện.

Trang 14

14 Đặng Văn Giỏi - LỚp 508CNT

+

> M-System Driver : Quan ly việc đọc ghi lên các thiết bị nhớ như

thẻ SD, flash

> Power Madagement : Giám sát việc tiêu thụ điện năng

Tang Library va Android runtime: Phan nay có 2 thành phan 1a phan Library va

Android Runtime

1.1.2.2 Phan Libraries

Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử

dụng, các thư viện đó được tập hợp thành một số nhóm như :

> Thư viện hệ thống (System C library) : Thư viện dựa trên chuẩn C, được sử

dụng chỉ bởi hệ điều hành

> Thu’ vién Media (Media Libraries) : Có nhiều mã để hỗ trợ việc phát và ghi các loại định dạng âm thanh, hình ảnh, video thông dung

> Thu viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web,

được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các Ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ trợ được nhiều

công nghệ mạnh mé nhu HTMLS, JavaScript, CSS, DOM, AJAX

> Thu'vién SQLite : Hệ cơ sở dữ liệu để các Ứng dụng có thể sử dụng 1.1.2.3 Phan Android runtime

Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể

hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính

thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA IO,

Collections, File Access Thứ hai là một máy ảo java (Dalvik Virtual Machine)

Mac dù cũng được viết tỪ ngôn ngỮ Java nhưng một ứỨng dụng Java của hệ điều

hành Android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy

bằng máy ảo Dalvik do Google phát triển 1.1.2.4 Tang Application Framework

Tầng này xây dựng bộ công cụ, các phần tử ở mức cao để các lập trình viên có

thể nhanh chóng xây dựng Ứng dụng Nó được viết bằng Java, có khả năng sử dụng

chung để tiết kiệm tài nguyên.

Trang 15

Đây là một nền tảng mở, điều đó có 2 điều lợi:

- _ Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình điện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style (phong cách) hợp thị hiếu người dùng Vì thế nên tuy cùng chung nền tảng Android mà điện

thoại của Google có thể khác hẳn với Motorola, HTC, T-Mobile, Samsung

- Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà Ứng dụng họ làm việc Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền, liên lạc giỮa các Ứng dụng, các thành phần giao diện

cap cao

Giới thiệu một số thành phần của phần này :

O Activity Manager : Quản lý các chu kỳ sống của một Ứng dụng cũng như cung cấp công cụ điều khiển các Activity

Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi điện thoại

XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực

Location Manager : Cho phép xác định vị trí của điện thoại thoại dựa

vào hệ thống định vị toàn cầu GPS và Google Maps

Window Manager : Quản lý việc xây dựng và hiển thị các giao diện

người dùng cũng như tổ chức quản lý các giao diện giỮa các Ứng dụng Notication Manager : Quản lý việc hiển thị các thông báo (như báo có

tin nhắn, có e-mail mới )

Resource Manager : Quan ly tài nguyên tĩnh của các ứng dụng bao gồm

các file hình ảnh, âm thanh, layout, string (Những thành phần không được viết bởi ngôn ngữ lập trình)

1.1.2.5 Tang Application

Đây là lớp (ing dụng giao tiếp với người dùng, bao gồm các Ứng dụng như :

Trang 16

16 Đặng Văn Giỏi - LỚp 508CNT

+

Các Ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện(phone),

quản lý danh bạ(Contacts), duyệt web (Browser), nhan tin (SMS), lich lam việc

(Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụp ảnh (camera) Các Ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò chơi (Game), từ điển

Các chương trình có các đặc điểm là :

> Viết bằng Java, phần mở rộng là apk

> Khi mỗi Ứng dụng được chạy, nó có một phiên bản Virtual Machine được

dựng lên để phục vụ cho nó Nó có thể là một Active Program : Chương trình

có giao diện với người sử dụng hoặc là một background : chương trình chạy nền hay là dịch vụ

> Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi Ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tỐt

hơn

> Các Ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống

> Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động

khác, Android cho phép một Ứng dụng của bên thứ ba được phép chạy nền

Các Ung dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá 5~10% công suất CPU, điều đó nhan để tránh độc quyền trong việc sử

dụng CPU

> Ung dung không có điểm vào cố định, không có phương thức main dé bat

đầu

1.1.3 Hệ thống tập tin trên hệ điều hành

Trong phạm vi một bài tìm hiểu về hệ điều hành, em chỉ xin tìm hiểu rõ một vấn

đề của hệ điều hành Android đó là vấn đề quản lý hệ thống tập tin Phần này có

điểm thuận lợi để tìm hiểu đó là vì được phát triển từ nhân linux nên hệ thống tập

Trang 17

tin trên Android cực kỳ giống hệ thống tập tỉn trên linux như là về cách tổ chức, những quyền hạn của người sử dụng lên file

1.1.3.1 Tổng quan về hệ thống file trên Android

Trong Android, các file được tổ chức thành các thư mục, theo mô hình phân cấp

Tham chiếu đến một file bằng tên và đường dẫn Các câu lệnh thao tác file cho phép thực hiện các chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng với các thư

mục con chứa trong nó

Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặt

tên file Không được bắt đầu một tên file bằng dấu chấm hay chữ số Những ký tự khác như “7, “??, “*°, là ký tự đặc biệt được dành riêng cho hệ thống Chiều dài của tên file có thể tới 256 ký tự Trong hệ điều hành Android có sự phân biệt tên file chữ

hoa và chữ thường, điều đó có nghĩa là trong cùng 1 thư mục có thể tồn tại những file

có tên là File, FILE, file và chúng là nhỮng file khác nhau

Tất cả các file trong Android có chung cấu trúc vật lý là chuỗi các byte (byte stream) Cấu trúc thống nhất này cho phép Android áp dụng khái niệm file cho mọi

thành phần dữ liệu trong hệ thống Thư mục cũng như các thiết bị được xem như file Chính việc xem mọi thứ như các file cho phép Android quản lý và chuyển đổi dữ liệu một cách dễ dàng Một thư mục chứa các thông tin về thư mục, được tổ chức theo một định dạng đặc biệt Các thành phần được xem như các file, chúng được

phân biệt dựa trên kiểu file: ordinary file, directory file, character device file, và block device file

1.1.3.2 Các kiểu file trên Android

Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) và

folder (hay directory : thư mục) là 2 thành phần khác hẳn nhau Tuy nhiên trên hệ điều hành Android (cũng như linux) thì coi directory cũng là file và nó là một loại file

đặc biệt Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau : Xem hình 2 1.1.3.3 Tổ chức quyền sở hữu và quyền hạn trên file

Tương tự trên hệ thống linux, trên hệ điều hành Android, một file có thể liên kết

với mỘt người sử dụng và một nhóm người sử dụng Sự liên kết đó là một tập hợp

Trang 18

18 Đặng Văn Giỏi - LỚp 508CNT

+

các quyền hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write)

và được phép thực thi (execute)

Cụ thể như sau: Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo mẫu sau : Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, - nghĩa là không có quyền hạn đó

Owner Owner Group Other

r/- w/- |X/- |r.- w/- | x/- |H- W/- | x/-

3 ký tự đầu tiên là quyền hạn chủ nhân file

3 ký tự giỮa là quyền han của nhóm tài khoản sở hữu file

3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file Ví dụ : Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr— thì điều đó có nghĩa :

3 ký tự đầu là rwx : Chủ nhân có thể đọc, ghi và thực thi file

3 ký tự tiếp theo là r-x thì nhóm tài khoản sở hữu file có quyền đọc và thực thi file chứ không có quyền ghi, chỉnh sửa file

3 ký tự cuối là r nghĩa là những người không sở hữu file chỉ được phép doc mà không thể chỉnh sửa hay thực thi file

Trên hệ thống Android, để biết xem được quyền hạn đó, ta có thể sử dụng

câu lệnh is —! —d Ví dỤ : Is -I -d /mnt/sdcard/QuangHoa dé xem quyén han cua file

/mnt/sdcard/QuangHoa thi cé thé trả về kết quả như sau:

d -rwxr-x system sdcard rw 2010-12-29 21:00 QuangHoa

Thì những thông tin có thể lấy về là :

e©_ Ký tỰ đầu tiên là chữd: vậy file đó có kiểu là thư mục hay là file bao hàm ¢ Chuỗi ghi quyền hạn là -rwxr-x thì có nghĩa

o_ ( -)Người sở hữu không được phép đọc, ghi, thực thi file o_ (rwx) Nhóm tài khoản sử hữu được phép đọc, ghi, thực thi file.

Trang 19

o r-x : NhỮng người không sở hữu file được phép đọc và thực thi file nhưng không được phép chỉnh sửa hay ghi lên file

e ChuỖi miêu tả file : sdcard_rw nghĩa là đây thuộc thiết bị thẻ nhớ sd, đọc và

1.1.3.4 Cây thư mục trên hệ điều hành Android

Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file thư mục còn lại DƯới nó có chứa một số file thư mục hệ thống Mỗi thư mục (trừ thư mục

root) đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file thư mục

con Cấu trúc đó có thể mô tả bằng một cây thư mục có dạng nhu sau : Xem hình 3

Giới thiệu một vài thư mục tiêu biểu :

e _ /(root) : Là thư mục gốc Là thư mục duy nhất không có thư mục cha e /mnt: thu muc chứa thiết bị lưu động (removeable)

e /system : chứa nhữỮng thành phần cơ bản nhất của hệ thống

e _ /ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự hoạt động của hệ thống đều bị chi phối ở những file cấu hình này

e _/system/lost+found : chứa những tập tin bị mất lúc khởi động máy

e /system/font : chứa những font chữ hiển thị được

¢ /system/lib : chứa các thư viện để các phần mềm hoạt động (các phần mềm

viết bằng ngôn ngỮ java).

Trang 20

20 Đặng Văn Giỏi - LỚp 508CNT

+

e /system/app : chứa các file apk của phần mềm (Các file cài đặt Ứng dụng,

kiểu như MSI trong window hay dev trong Linux)

e /system/bin : ChUfa cdc chương trình nội trú của hệ thống

“ Màn hình càng lớn và càng sáng thì sẻ tốn điện càng nhiều “ BỘ nhớ lớn thì chi phí về điện cũng sẻ cao

Trang 21

Đa số các hệ điều hành trên desktop đều cho phép nhiều Ứng dụng chạy đồng thời (đa nhiệm) và khá tự do Trong khi đó, các hệ điều hành chạy trên di động thường không cho phép chạy đa nhiệm, hoặc có đa nhiệm thì các Ứng dụng bị giới hạn khá nhiều

o Việc hiển thị giao diện trên một khung hình nhỏ cũng điều khó khăn hơn so

với hệ điều hành chạy trên desktop, thường thì trên hệ điều hành di động gần

như không có giao diện cửa sổ cho phép nhiều ứng dụng cùng hiển thị một lúc mà chỉ là một giao diện mà trên đó mỗi thời điểm chỉ hiển thị một giao diện

của một ứng dụng mà thôi

o_ HỆ điều hành di động phải có khả năng hoạt động liên tục không ngừng nghĩ để đảm bảo liên lạc, đảm bảo kết nối của thiết bị tới mạng không dây cần kết nối trong khi vẫn di chuyển Vì thế cần được thiết kế đặc biệt hơn so với hệ điều hành trên desktop

1.1.4.2 So sánh hệ điều hành Android với các hệ điều hành di động khác

> Giống nhau : Đều là hệ điều hành di động nên mang đầy đủ bản chất của hệ

điều hành di động nói chung (Đã đề cập ở trên)

> Khác nhau :

6) Android là hệ điều hành mã nguồn mở và miễn phí trong khi các hệ

điều hành di động còn lại đều là nguồn đóng và có phí (khi một hãng thứ hai sử dụng)

Android được phát triển tỪ nhân linux do đó nó có thể chạy tỐt trên

nhiều dòng điện thoại khác nhau Có đỘ tương thích cao với các loại

phần cứng khác nhau nhiều hơn so với các hệ điều hành di động còn lại

Các Ứng dụng chạy trên Android được viết bằng Java trong khi đó, Ứng

dụng trên các hệ điều hành khác chủ yếu là viết bằng C/C++/Object C

Ngay cả symbian có hỗ trợ Java thì cũng khác so với Android, trong khi hệ

điều hành Android sử dụng máy ảo Java là Dalvik VM do chính Google phát triển thì Symbian lai sử dụng máy ảo Java là J2ME của Sun.

Trang 22

22 Đặng Văn Giỏi - LỚp 508CNT

+

1.2 Lịch sử phát triển và hướng phát triển trong tương lai

1.2.1 Lịch sử phát triển

Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một

số đầu phát HD, HD Player) phát triển bởi Google và dựa trên nền tảng Linux Trước

đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua

lại vào năm 2005) Theo NPD, thiết bị di động sử dụng hệ điều hành Android bán được tại MỸ trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ 2 là BB os với 28% và iOS ở vị trí thứ 3 với 22% Android có một cộng đồng những nhà phát triển rất lớn viết các Ứng dụng cho hệ điều hành của mình Hiện tại có khoảng 1000,000 ứng dụng cho Android os và vào khoảng 1000,000 ứng dụng đã được đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2

Các nhà phát triển viết Ứng dụng cho Android dựa trên ngôn ngỮ Java Sự ra mắt của

Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị

cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông

nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai

Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã

C, 2.1 triệu mã JAVA và 1.75 triệu dòng mã C++

Chỉ tiết lịch sử phát triển như sau:

Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành lập

có trụ sở ở Palo Alto , California , Mỹ Những nhà đồng sáng lập của Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich

Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là phó chủ

tịch của T-Mobile ), và Chris White (trưởng nhóm thiết kế va phát triển giao diện tại WebTV) Khi đó, có rất ít thông tin về các công việc của Android, ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động Điều này tạo những tin đồn về việc Google có ý định bước vào thị trường điện thoại di động

Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả

Trang 23

năng nâng cấp mở rộng cao Một số nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu 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 Ngày càng nhiều suy

đoán rằng Google sẽ tham gia thị tường điện thoại di động xuất hiện trong tháng

12 năm 2006 Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google muốn

đưa công nghệ tìm kiếm và các Ứng dụng của họ vào điện thoại di động và họ đang

nỗ lực làm việc để thực hiện điều này Các phương tiện truyền thông in và online

cũng sớm có bài viết về nhỮng tin đồn cho rằng Google đang phát triển một thiết bị

cầm tay mang thƯƠơng hiệu Google Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng

Tháng 9 năm 2007, mƒormationWeek đăng tải mỘt nghiên cứu của Evalueserve 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

Trên là 1 số thông tin cơ bản về lịch sử phát triển của hệ điều hành Android và đây là hình ảnh tom tắt quá trình cập nhật các phiên bản của hệ điều hành Android

Xem hình 4

1.2.2 Hướng phát triển trong tương lai

Hiện tại thì Android đang rất phát triển, hướng đi quan trọng nhất hiện giờ (4-2-

2012) là Google sẽ tích hợp điện toán đám mây trên hệ điều hành Android và bảo

mật dữ liệu Là mã nguồn mở nên việc bảo mật dữỮ liệu là rất khó nên google sé dành nhiều thời gian cho vấn đề này Chúng ta cùng chờ xem Google thực hiện ra sao

1.3 Hướng dẫn cài đặt BƯỚCc 1:

- Download SDK Android Vao trang web sau: http://developer.Android.com/sdk/index.html

- SDK cung cap cho 3 hé diéu hanh 1a : Window, MacOS, Linux Tuy theo cac

hệ điều hành mà ta chọn các gói Hình ảnh miêu ta các gói trên website Xem hình 5.

Trang 24

24 Đặng Văn Giỏi - LỚp 508CNT

+

- _ Khi đã download SDK ta thực hiện giải nén và chạy file sau theo đường dẫn:

Android-sdk-windows\SDK Manager.exe Khi chạy file này ta sẽ có kết quả như hình sau Xem hình 6

- _ Tiếp theo ta chọn các gói cần cài đặt, chọn xong các ta chọn Install Sau đó đợi

cho nó chạy xong

Bước 2:

- Download Eclipse để tích hợp SDK vào Eclipse Các bạn vào trang web http://www.eclipse.org/downloads/ download Eclipse (Khuyén dung: Eclipse IDE for Java EE Developers)

- Download xong eclipse ta m0 eclipse lén và thực hiện như sau: Chọn Help-

>Install New Softwares, hộp thoại hiện ra và chọn add sau đó thêm đường dẫn

sau https://dl-ssl.google.com/Android/eclipse/ vào Location rồi click OK Ảnh miỉnh họa nhƯ sau Xem hình 7 Đợi cho chạy xong là ta đã cai xong ADT

- _ Tiếp theo là ta cài đặt đường dẫn trỏ tới thư mục SDK, thiết lập đường dẫn

nhu sau: Eclipse -> Windows -> Preferences -> Android , tiếp chọn Browse rồi chọn đến thư mục SDK mà bước 1 đã giải nén ra Chọn Ok để hoàn thành

Như vậy là ta đã cài đặt xong môi trường để phát triển Android Kết quả cài đặt

thành công sẽ có màn hình như sau Xem hình 8

14 Chương trình mau

1.4.1 Mục đích chương trình mẫu

Giúp các bạn hiểu rõ được 1 chương trình Android chạy và tạo ra như thế nào thì

chúng ta cùng nghiên cứu 1 ví dụ đơn giản Chương trình đơn giản là hiện thị 1 dòng

chữ “Chào các bạn.”

Mã nguồn minh họa:

package MinhHoa.Gioi;

import Android.app.Activity; import Android.os.Bundle;

Trang 25

import Android.widget.TextView;

public class MinhHoaActivity extends Activity { /** Called when the activity is first created */ @Override

public void onCreate(Bundle savedInstanceState) {

}

super.onCreate(savedInstanceState); TextView tv = new TextView(this);

//Đặt text cần hiện thị bằng phương thức setText

Khai báo gói: package MinhHoa.Gioi;

Khai báo các thư viện cần dùng

= import Android.app.Activity; = import Android.os.Bundle;

= import Android.widget.TextView;

Lớp MinhHoaActivity được mở rộng tỪ lớp: extends Activity

Phương thức onCreate() luôn được chương trình gọi đầu tiên

Kết luận

Dù chỉ là chương trình đơn giản nhung nó là 1 cấu trúc hoàn chỉnh của 1 chương

trình Android, từ cấu trúc đơn giản này, ta xây dựng các lớp, các gói phức tạp hơn để thực hiện các mục đích khác nhau.

Trang 26

26 Đặng Văn Giỏi - LỚp 508CNT

+

Chương 2: Nghiên cứu lý thuyết đồ họa 2D, 3D

2.1 Đồ họa nói chung

2.1.1 Giới thiệu chung

Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính Đổ họa máy tính có liên quan ít nhiều đến một số

lĩnh vực như đại sỐ, hình học giải tích, hình học họa hình, quang học, và kĩ thuật

máy tính, đặc biệt là chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, cac vi mach đồ họa )

Theo nghĩa rộng hơn, đồ họa máy tính là phƯơng pháp và công nghệ dùng trong

việc chuyển đổi qua lại giỮa dữ liệu và hình ảnh trên màn hình bằng máy tính Đồ họa máy tính hay kĩ thuật đồ họa máy tính còn được hiểu dưới dạng phương pháp và

kĩ thuật tạo hình ảnh từ các mô hình toán học mô tả các đối tượng hay dữ liệu lấy được tỪ các đối tượng trong thỰc tế, Thuật ngữ "đồ họa máy tinh" (computer graphics) được đề xuất bởi một chuyên gia người Mĩ tên là William Fetter vào năm 1960 Khi đó ông đang nghiên cứu xây dựng mô hình buồng lái máy bay cho hãng Boeing William Fetter đã dựa trên các hình ảnh 3 chiều của mô hình người phi công

trong buồng lái để xây dựng nên mô hình buồng lái tối ưu cho máy bay Boeing Đây là

phương pháp nghiên cứu rất mới vào thời kì đó Phương pháp này cho phép các nhà

thiết kế quan sát một cách trực quan vị trí cỦa người lái trong khoang buồng lái

William Fetter đã đặt tên cho phương pháp cUa minh 1a computer graphics

2.1.2 Lịch sử phát triển

Lịch sử của đồ họa máy tính vào thập niên 1960 còn được đánh dấu bởi dự án

SketchPad được phát triển tại Học viện Công nghệ Massachusetts (MIT) bởi Ivan

Sutherland Các thành tựu thu được đã được báo cáo tại hội nghị Fall Joint Computer

và đây cũng chính là sự kiện lần đầu tiên người ta có thể tạo mới, hiển thị và thay

đổi được dữ liệu hình ảnh trực tiếp trên màn hình máy tính trong thời gian thực Hệ

Trang 27

thống Sketchpad này được dùng để thiết kế hệ thống mạch điện và bao gồm nhỮng thành phần sau:

Kỹ thuật đồ họa được liên tục hoàn thiện vào thập niên 1970 với sự xuất hiện

của các chuẩn đồ họa làm tăng cường khả năng giao tiếp và tái sử dụng của phần mềm cũng như các thƯ viện đồ họa

Sự phát triển vượt bậc của công nghệ vi điện tử và phần cứng máy tính vào thập niên 1980 làm xuất hiện hàng loạt các vi mạch hỗ trợ cho việc truy xuất đồ họa đi cùng với sự giảm giá đáng kể của máy tính cá nhân làm đồ họa ngày càng đi sâu vào cuộc sống thực tế

2.1.3 Các hệ màu thông dụng 2.1.3.1 Hệ màu RGB

Hệ màu RGB mô tả màu sắc bằng ba thành phần Red, Green, Blue trong một mô

hình gọi là "không gian màu" Không gian này được minh họa bằng một khối lập

phương với các trục chính R, G, B

Mỗi màu trong không gian RGB đều được biểu diễn như là một vector thông qua ba vector cơ sở là Red, Green, Blue Do đó, Ứng với các tổ hợp khác nhau của ba màu

này sẽ cho ta một màu mới

Trong hình lập phương mỗi màu gốc (Red, Green, Blue) được đặt vào góc đối diện với các màu bù nó (Hai màu bù nhau là hai màu mà khi kết hợp tạo thành màu trắng hay xám (grey)) Như vậy Red đối diện với Cyan, Green đối diện với Magenta, Blue đối diện với Yellow Giá trị xám nằm trên đường chéo nối các đỉnh (0,0,0) và

Trang 28

28

Đặng Văn Giỏi - LỚp 508CNT

+

(1,1,1) của hình lập phương Thường thƯờng các trục R, G, B được chuẩn hóa Khi

kết hợp hai màu lại với nhau thì màu sinh ra có vector bằng tổng các vector thành

Các giá trị R,G,B của một màu là khác nhau đối với các màn hình khác nhau :

Nghĩa là các giá trị R,G,B của một màu trên màn hình màu này sẽ không sinh ra đúng màu đó trên một màn hình khác

Sự mô tả các màu trong thế giới thực đối với không gian RGB còn nhiều hạn chế bởi vì không gian RGB không hoàn toàn phù hợp với sự cảm nhận màu sắc của con người Hai điểm phân biệt trong không gian RGB, với mắt người

có thể hoặc không thể là thể hiện của hai màu khác nhau 2.1.3.2 Hệ màu CMYK (hệ màu trừ)

HỆ màu CMYK tái tạo màu bằng mực, dùng trong in ấn, in offset, in phun màu

Gồm 3 màu mực cơ bản:

Cyan (C) Magenta (M) Yellow (y)

Ba màu này tổng hợp lại ra màu đen (Black) Nhưng mau đen này in ra không đen

hoàn toàn nên thường người ta bổ sung thêm hộp mực mau den trong máy in Đây là mực màu, không phải là mực in trắng đen.

Trang 29

2.1.3.3 Hệ màu HSB (hệ tổng hợp)

Hệ HSB gồm 3 thành phần cơ bản của màu sắc:

¢ Hue (H): sac mau (0-360)

¢ Saturation (S): d6 no mau (0-100%)

¢ Brightness (B): d6 sang t6i (0-100%) 2.1.3.4 Hé mau Lab (hé t6ng hop)

Hệ màu Lab tái tạo màu trong công nghệ thăng hoa màu của ảnh kỹ thuật số

Công nghệ này thường không có mực in mà giấy đóng vai trò quang phổ tạo sắc lên có ngưỡng rất cao và dải màu phong phú

Hệ Lab gồm 3 thành phần:

¢ L (light): anh sang (trang - den, 0-100%)

e - a: tỪ xanh lá đến đỏ (-127 đến 128)

e _ b:tỪ xanh dương đến vàng (-127 đến 128) 2.1.4 Các Ứng dụng của đồ họa

Đồ họa máy tính có rất nhiều Ứng dụng trong máy tính vì Ước tính đến 80% thông tin xử lí là hình ảnh Một số ứng dụng tiêu biểu của đồ họa máy tính như là:

e _ Tạo mô hình, hoạt cảnh (Game, giải trí, ) ‹e Hỗ trợ thiết kế đồ họa

¢ Mô phỏng hình ảnh, chuẩn đoán hình ảnh (trong y tế) ‹ Huấn luyện đào tạo ảo (quân sự, hàng không, ).

Trang 30

30 Đặng Văn Giỏi - LỚp 508CNT

+

22 Đồ họa2D

2D là hình ảnh được xây dựng trên chương trình đồ hoạ máy tính 2 chiều (2

Dimensional), cũng như hệ toạ độ 2 chiều của trục toạ độ, nó phản ánh một phong

cách đồ hoạ phẳng Đồ hoạ 2 chiều không có sự tham gia hoặc có nhưng rất ít của các hiệu ứng 3 chiều đặc trưng nhu hiệu ứng chiếu sáng, phản chiếu, đổ bóng

Các hình ảnh của các họa sĩ đều có bóng đổ nhưng nó được vẽ bằng tay hay hiệu chỉnh không có sự tham gia cỦa nguồn sáng

Một số đặc trưng cơ bản của đồ họa 2D

- _ Đặc trưng dễ nhận dạng nhất của chương trình vẽ 2D là không thể xoay góc

quay đƯỢc ( VD: trong khi bạn vẽ một viên bi chẳng hạn bạn chỉ nhìn nó được tỪ 1 góc cạnh )

- _ Đặc trưng kế tiếp là không có ấn tượng 3 chiều rõ rệt, hình ảnh sẽ cuỘn theo 2 chiều là chiều thẳng và chiều ngang khác với 3D không dùng hình thức cuộn mà dựa vào không gian khối của hình ảnh

- Dac trưng tiếp theo là mọi thứ đều hoàn toàn bằng 2D từ hậu cảnh, vật thể đến tiền cảnh tạo nên một cái hình giống như phim hoạt hình cắt giấy, mọi thứ đều từ hình vẽ trên giấy

2.3 Đồ họa3D

Khung hình 3D được xây dựng trên hệ thống đồ hoạ máy tính 3 chiều (3 Dimentional), hệ thống đồ hoạ này khai thác 3 chiều không gian là chiều ngang — dọc - sâu tạo nên một thế giới hình khối khác hẳn thế giới hình phẳng của 2D Đồ hoạ 3D khai thác tối đa các hiệu ứng 3 chiều như đổ bóng, chiều ánh sáng, sự phản chiếu nhờ vào hệ thống nguồn sáng vẽ xử lí bằng máy tính.

Trang 31

Tuy vậy hình ảnh chụp từ khung hình 3D vẫn gọi là 2D, nhưng bằng chương trình 3D ta có thể chụp nhiều tấm ảnh ở nhiều góc cạnh khác nhau từ 1 khung hình

3D

Dưới đây là 3 tấm ảnh 2D chụp từ 1 khung hình 3D Xem hình 9.

Trang 32

32 Đặng Văn Giỏi - LỚp 508CNT

+

Chương 3: Nghiên cứu đồ họa 2D, 3D của hệ điều hành

Android và viết chương trình minh họa

3.1 Đồ họa trong Android

3.1.1 Giới thiệu chung về đồ họa Android

Khi viết một Ứng dụng điều quan trọng là bạn phải xác định xem ứng dụng đó sử dụng đồ họa như thế nào Việc xác định được điều này sẽ giúp cho quá trình viết chương trình được đơn giản và hiệu quả cao

Đồ họa và hình ảnh động cho một ứng dụng tĩnh thì hoàn toàn khác với một Ứng dụng Game có các nhân vật chuyển động Từ những điều đó mà Android cung cấp cho ta nhiều cách để thể hiện đồ họa

Để thể hiện được đồ họa thì Android cung cấp cho chúng ta 2 đối tượng chính:

+ Canvas + Drawables

Với Canvas ta có thể vẽ bất cứ cái gì lên vùng hiện thị của chúng ta, khi tạo ra Drawables ta có thể tạo các ảnh động dạng frame-by-frame Ngoài ra Android còn hỗ tro OpenGL 1.0 và 2.0 để tạo ra đồ họa 3D Từ Android 3.0 thì phần cứng đã tăng tốc

thêm cho phần đồ họa được vẽ bằng API và làm tăng hiệu xuất làm việc của thiết

- Một đối tượng chứa nét vẽ cần vẽ ra(Có thể là Rect, Path, Bitmap )

- Một đối tượng kiểu Paint dùng để định nghĩa màu sắc, style dùng để vẽ

ra màn hình.

Trang 33

- Một đối tượng Canvas dùng để thực thi lệnh vẽ

Để làm rõ những khái niệm trên ta tiến hành tạo một lớp CustomView cài đặt lại lớp View của Android để định nghĩa một đối tượng đồ họa mới Trên đối tượng mới định nghĩa này, ta sẼ tự vẽ ra giao diện mà mình mong muốn

Xây dựng lớp CustomView

Để tạo một CustomView ta tiến hành tạo một class với nội dung nhƯ sau:

package gioi.Android;

import Android.content.Context; import Android.util AttributeSet; import Android.view View;

public class CustomView extends View{ public CustomView(Context context){

Lớp CustomView sẽ extend class View của Android dé kế thừa lại các phương

thức cũng như các thuộc tính của lớp View Trong đó ta sẽ cài đặt lại 02 phương thức khởi tạo cho lớp CustomView và ghi đè phương thức onDraw(Q) của lớp View, đây chính là phương thỨc sẽ vẽ ra giao diện của CustomView

Với phương thức khởi tạo public CustomView(Context context) chỉ nhận vào một

tham số là một đối tượng Context Đây là đối tượng này cho phép truy xuất đến các đối tượng cũng như các dịch vụ của hệ thống Đối tượng này cần thiết để vẽ một giao diện ra màn hình thiết bị.

Trang 34

34 Đặng Văn Giỏi - LỚp 508CNT

+

Với phương thức khởi tạo thứ hai: public CustomView(Context context, AttributeSet attrs) có nhận vào thêm một tham số là AttributeSet attrs Đây là đối tượng chứa các thuộc tính của đối tượng đồ họa sẽ được khởi tạo Việc tạo phương thức khởi tạo thứ hai là cần thiết nếu bạn mong muốn sử dụng đối tượng đồ họa này trong một file giao diện xml có chỉ định các thuộc tính như ví dỤ sau:

Cho một file xml có nội dung như sau:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout

xmlns: Android="http://schemas.Android.com/apk/res/Android” Android:orientation="”vertical”

Android:layout_width="fill_parent" Android:layout_height="fill_ parent"

>

<gioi.Android.Custom View

Android:id="@-+id/graphicView" Android:layout_width="fill_ parent” Android:layout_height="fill_ parent”

[>

</LinearLayout>

Trong file xml kể trên ta có sử dụng một thẻ có tên niit.Android.CustomView,

đây chính là đối tượng đồ họa ta vừa tạo ra Ở trên Trong đó gioi.Android là package cUa project hién tại Thể CustomView Ở trên có ba thuộc tính là

Android:id, Android:layout width và Android:layout height Ta có thể tạo một

Activity có nội dung là file xml kể trên:

public class main extends Activity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

Trang 35

Lúc này Android sẽ tự tạo ra đối tượng CustomView và sử dụng phương thức khởi tạo public CustomView(Context context, AttributeSet attrs) để khởi tạo đối

tượng với các thuộc tính 1a Android:id, Android:layout_width và Android:layout_height được truyền vào thông qua đỐi tƯỢng attrs

Đến đây ta đã tạo xong lớp CustomView, tuy nhiên nếu chạy chƯơng trình Ở bước này ta chỉ được một giao diện trống rỗng ĐỂ vẽ giao diện cho CustomView ta sẽ tiến hành cài đặt phương thức onDraw() với nội dung như sau:

@Override

protected void onDraw(Canvas canvas) { Paint cPaint = new Paint();

cPaint.setColor(Color.RED); Path cPath = new Path();

cPath.addCircle(100, 100, 20, Direction.CW); canvas.drawPath(cPath, cPaint);

Như đã đề cập ở mục trên để vẽ ra màn hình ta tạo một đối tượng Paint được

dùng để định nghĩa màu sắc, style ta cần vẽ ra Gọi phương thức setColor( ) để

gan mau sac của nét vẽ cần vẽ ra Sau đó ta tiến hành khai báo một đối tượng Path

để chứa các nét vẽ và gọi phương thức addCircle( ) để thêm một nét vẽ hình tròn

vào đối tượng cPath Sau đó gọi canvas.drawPath(cPath,cPaint) để vẽ ra các nét vẽ

được chứa trong đối tược cPath với màu sắc được định nghĩa trong đối tượng

cPaint Khi thực thi chương trình ta sẽ được kết quả như sau: Xem hình 10

Như vậy ta đã có lớp Customview, tiếp theo là ta tìm hiểu một số thành phần căn bản của Android

+ Đối tượng Paint: Đây là đối tượng quy định cách hiện thị của đối tượng đồ họa Ví dụ như ta muốn vẽ một đường thẳng có đổ bỏng, vẽ đường tròn với màu tùy chọn Cách khai báo đối tượng như sau

Paint p = new Paint();

p.setColor(Color.RED);

Trang 36

36 Đặng Văn Giỏi - LỚp 508CNT

int color = Color.BLACK;

Ở đây biến color được gán với màu đen, ngoài ra chúng ta cũng có thể viết theo cách

sau

int color = 255; hoặc int color = Color.rgb(255, 0, 0);

+ Đối tượng Canvas: là mỘt lớp quan trỌng trong quá trình xây dung Ung dung, đặt biệt trong Game Nếu như lớp Paint cung cấp cho bạn nhưng dụng cụ color, đường nét, đỘ to nhỏ của nét để về thì Canvas cung cấp cho bạn các phương thức để vẽ lên nhỮng gì bạn muốn, đường thẳng, đường tròn, hình chữ nhật

Ví dụ ta vẽ một chuỗi ký tỰ như sau:

canvas.drawText('Vẽ chuỗi ký tu lên Canvas tại vị trí 30,30 với style là biến

p",30,30,p);

+ Đối tượng Rect: Đây là đối tượng cho ta vẽ lên 1 hình chữ nhật, cách khai báo

đối tượng này nhu sau Rect rect = new Rect();

Ngoài ra Android còn cung cấp rất nhiều các đối tượng khác để vẽ các thành phần khác nhau, như vẽ ảnh, đường thẳng, đường tròn, hình đa giác

3.2.2 Chương trình minh họa

Để hiểu rõ các đối tượng mà Android cung cấp, ta cùng xây dựng một ví dụ nho nhỏ để thấy được cách thể hiện đồ họa của Android Chương trình minh họa sẽ

thực hiện các chức năng sau

- _ Vẽ 1 đường thẳng màu đỏ có độ dài 100 picxel.

Trang 37

Ta có lớp TestAndroid2Dactivity.java nhu sau

package TestAndroid2D.gioi; import Android.app Activity; import Android.os.Bundle;

public class TestAndroid2DActivity extends Activity { /** Called when the activity is first created */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Ở lớp này ta có phần setContentView(R.layout.main);, trong layout main thì có

khai báo đối tượng Customview của chúng ta Nội dung file main nhƯ sau

<?xml version="1.0" encoding="utf-8"?> <TestAndroid2D.gioi.Customview

xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:layout_width="fill_parent"

Android:layout_height="fill_ parent" Android:orientation="vertical” > </TestAndroid2D.gioi.Customview>

Trang 38

38 Đặng Văn Giỏi - LỚp 508CNT

+

Trong file main này ta đã xử dụng lớp Customview, khi chương trình chạy thì

nó sẽ hiện thị nội dung có trong file main này

Tiếp theo ta có lớp Customview nhƯ sau package TestAndroid2D.gioi;

import Android.content.Context; import Android.graphics.Bitmap;

import Android.graphics.BitmapFactory; import Android.graphics.Canvas;

import Android.graphics.Color; import Android.graphics.Paint; import Android.graphics.Paint.Style; import Android.graphics.Path;

12 import Android.view View;

13 public class Customview extends View{ 14 public Customview(Context context) { 15 super(context);

Trang 39

43 } A4 }

26.//Vẽ đường tròn có đổ bóng màu vàng

27 Path circle = new Path();

28 circle.addGircle(150,150,100,Direction.CW); 29 p.setColor(Color YELLOW);

30 p.setShadowLayer(50, 0, +50, Color YELLOW); 31 p.setStyle(Style.STROKE);

32 canvas.drawPath(circle, p);

33.//Vẽ hình chỮ nhật

34 p.setColor(Color.BLUE); 35 Rect r = new Rect();

41 canvas.drawBitmap(bitmap, 20, 300, p); 42 super.onDraw(canvas);

Để vẽ 1 đối tượng đồ họa trong Android ta cần phải khai báo đối tượng Paint, trong lớp Customview Ở dòng 22 chúng ta đã khai bao đối tượng Paint Để vẽ 1 đường thẳng với màu đỏ ta đặt màu đỏ cho đối tượng Paint với câu lệnh dòng 24 Muốn vẽ 1 đường thẳng ta dùng phương thức drawLine của đối tượng Canvas, với dòng 25 ta sẽ vẽ 1 đường thẳng bắt đầu từ vị trí (0,10) cho đến vị trí kết thúc là (100,

10)

Muốn vẽ 1 đường tròn thì ta dùng phương thỨc drawPath nhưng trước đó ta phải khai báo đối tượng circle, đối tượng này thể hiện 1 đường tròn Muốn màu đổ bóng

Trang 40

40 Đặng Văn Giỏi - LỚp 508CNT

Tiếp theo là vẽ 1 bức ảnh: Muốn vẽ 1 bức anh ta cần khai báo thêm đối tượng Bitmap, đối tượng này tải dữỮ liệu từ thư mục drawble với đoạn mã dòng 40, muốn

vẽ lên màn hình ta dùng phương thức drawBitmmap của đối tượng canvas

Cuối cùng ta đã vẽ được 1 số thành phần cơ bản của Android Kết quả chương

trình trên nhƯ sau Xem hình 11

3.3 Đồ họa 3D trong Android

3.3.1 Một số thành phần trong đồ họa 3D

Android cung cấp cho ta gói thư viện OpenGL cu thé 6 day 14 OpenGL ES API

OpenGL 1a m6t nền tảng rất tốt, nó giúp tăng tốc đồ họa 1 cách đáng kể Ngay từ khi ra đời với phiên bản Android 1.0 thì Android đã hỗ trợ OpenGL 1.0 Đến phiên bản

Android 2.2 API 8 thì Android đã hộ trợ thêm OpenGL 2.0, với việc hộ trợ thêm

OpenGL 2.0 thì hệ điều hành này ngày càng được mọi người quan tâm hon Sau đây là 1 số thành phần đồ họa 3D quan trọng của hệ điều hành này

GLSurfaceView: Đây là nơi bạn có thể vẽ và thao tác đối tượng bằng cách gọi

OpenGL API và các nó chức năng giống như một SurfaceView Bạn có thể sử dụng lớp này bằng cách tạo ra 1 đối tượng thể hiện GLSurfaceView và thêm phần Renderer của bạn vào Tuy nhiên nếu bạn muốn bắt sự kiện cảm ứng trên màn hình

thì bạn phải mở rộng lớp này và cài đặt sự kiến lắng nghe

GLSurfaceView.Renderer: Giao diện này định nghĩa các phương thức được yêu cầu để vẽ các thành phần đồ họa của một đối tƯợng GLSurfaceView

GLSurfaceView.Renderer yêu cầu cần phải cài đặt các phương thỨc sau:

Ngày đăng: 29/10/2012, 16:40

HÌNH ẢNH LIÊN QUAN

3.4.1.3.2 Xác định actor và mơ hình use case. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
3.4.1.3.2 Xác định actor và mơ hình use case (Trang 51)
3.4.2.3.2 Xác định actor và mơ hình use case. 3.4.2.3.2.1  Xác  đỉnh  actor.  - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
3.4.2.3.2 Xác định actor và mơ hình use case. 3.4.2.3.2.1 Xác đỉnh actor. (Trang 80)
LỚP ĐỐI TƯỢNG. | DIỄN GIẢI - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
LỚP ĐỐI TƯỢNG. | DIỄN GIẢI (Trang 85)
Các hình ảnh dùng trong khĩa luận. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
c hình ảnh dùng trong khĩa luận (Trang 89)
Hình 1.Kiến chúc hệ điều hành Android - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 1. Kiến chúc hệ điều hành Android (Trang 89)
Hình 4: Tĩm tắt quá trình cập nhật các phiên bản tính đến 2011. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 4 Tĩm tắt quá trình cập nhật các phiên bản tính đến 2011 (Trang 90)
Hình 6 Kết quả khi chạy file SDK Manager. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 6 Kết quả khi chạy file SDK Manager (Trang 91)
Hình 5: Các gĩi cho các hệ điều hành. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 5 Các gĩi cho các hệ điều hành (Trang 91)
Hình 7: Add ADT - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 7 Add ADT (Trang 92)
Hình 10. Hiện thị 1 hình trịn màu đỎ. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 10. Hiện thị 1 hình trịn màu đỎ (Trang 94)
Hình 11: Kết quả chương trình minh họa TestAndroid2D - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 11 Kết quả chương trình minh họa TestAndroid2D (Trang 94)
Hình 12: Kết quả chương trình TestAndroid3D. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 12 Kết quả chương trình TestAndroid3D (Trang 95)
Hình 13: Giao diện menu chính. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 13 Giao diện menu chính (Trang 95)
Hình 15: Xác thực xem muốn thốt hay khơng. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 15 Xác thực xem muốn thốt hay khơng (Trang 96)
Hình 14: Hiện thị thơng tỉn. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 14 Hiện thị thơng tỉn (Trang 96)
Hình 18: Giao diện chính của trị chơi. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 18 Giao diện chính của trị chơi (Trang 97)
Hình 17: Hiện thị thơng báo đang tải dữ liệu. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 17 Hiện thị thơng báo đang tải dữ liệu (Trang 97)
4 _Rất tiếc. Bạn daấfiùazs. F F. lị KH BH - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
4 _Rất tiếc. Bạn daấfiùazs. F F. lị KH BH (Trang 99)
Hình 19: Giao diện menu phụ. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 19 Giao diện menu phụ (Trang 99)
Hình 22: Giao diện lưu điểm. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 22 Giao diện lưu điểm (Trang 100)
Hình 21: Giao diện khi người chơi thắng cuộc. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 21 Giao diện khi người chơi thắng cuộc (Trang 100)
Hình 23: Hiện thị danh sách điểm cao. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 23 Hiện thị danh sách điểm cao (Trang 101)
Hình 25: VỊ trí pX, pY nằm trên TMXLayer. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 25 VỊ trí pX, pY nằm trên TMXLayer (Trang 102)
Hình 26: VỊ trí pX, pY nằm ngồi TMXLayer. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 26 VỊ trí pX, pY nằm ngồi TMXLayer (Trang 102)
Hình 27: Ảnh nền phần menu chính. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 27 Ảnh nền phần menu chính (Trang 103)
Hình 30: Giao diện menu Game Line3D - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 30 Giao diện menu Game Line3D (Trang 104)
Hình 31: Giao diện chơi Game Line3D. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 31 Giao diện chơi Game Line3D (Trang 104)
Hình 32: Ví dụ mỉnh họa cách tính ăn viên bi. - Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android
Hình 32 Ví dụ mỉnh họa cách tính ăn viên bi (Trang 105)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w