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

Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

71 5 0

Đ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

Nội dung

Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DUY TÂN LÊ XUÂN HUY - 152122479 Tên đề tài TÌM HIỂU THƯ VIỆN OPENGLES VÀ XÂY DỰNG GAME LINE3D TRÊN ANDROID GIẢNG VIÊN HƯỚNG DẪN TS PHẠM ANH PHƯƠNG NIÊN KHÓA 2009 - 2013 Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android LỜI CẢM ƠN Để hoàn thành đề tài này, khơng cần phải có nỗ lực thân, mà cịn cần giúp đỡ thầy cơ, gia đình, bạn bè Dù trực tiếp, hay gián tiếp hay dù lời động viên đủ để tiếp thêm nguồn sức mạnh tinh thần lẫn vật chất Chính thế, em biết ơn đến tất người giúp em hoàn thành tốt đề tài Trước tiên, em xin chân thành cám ơn thầy TS Phạm Anh Phương tận tình hướng dẫn, cung cấp kiến thức quý báu giúp đỡ em lúc khó khăn Em xin cảm ơn đến tất thầy cô giảng dạy em, dù không hướng dẫn trực tiếp đề tài này, kiến thức mà thầy cô truyền đạt cho em vô quan trọng, khơng có tảng kiến thức em khó mà hồn thiện đề tài Bên cạnh đó, tơi khơng qn người bạn kề vai sát cánh, vô tận tâm hướng dẫn góp ý cho tơi, cần người gợi ý chút tơi có khối kiến thức khổng lồ Trong q trình thực đề tài, cố gắng với hạn chế kiến thức thời gian, nên chắn khơng tránh khỏi sai sót Vì vậy, em kính mong nhận cảm thơng ý kiến đóng góp q thầy Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android LỜI CAM ĐOAN Em xin cam đoan : a Những nội dung luận văn em thực hướng dẫn trực tiếp thầy TS Phạm Anh Phương b Mọi tham khảo dùng luận văn trích dẫn rõ ràng trung thực tên tác giả, tên cơng trình, thời gian, địa điểm cơng bố c Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỞ ĐẦU CHƯƠNG I: TỔNG QUAN VỀ ỨNG DỤNG TRÊN ANDROID I TỔNG QUAN VỀ ANDROID 1 Lược sử Android Nền tảng Android Kiến trúc ứng dụng Android 3.1 Máy ảo Dalvik 3.2 Các thành phần ứng dụng Android 4 Vòng đời ứng dụng Android 5 Các công cụ để tạo ứng dụng Android 5.1 Eclipse IDE 5.2 Android SDK 5.3 Cài đặt công cụ Thiết bị Android ảo (Android Virtual Device - AVD) 7 Android Project 7.1 Tạo Android Project 7.2 Cấu trúc Project 10 II CÁC THÀNH PHẦN CƠ BẢN CỦA MỘT ỨNG DỤNG TRÊN ANDROID 10 Hoạt động (Activity) 10 1.1 Tạo Activity 10 1.2 Vòng đời Activity 12 1.3 Khởi động Activity 12 1.4 Liên lạc Activity 13 Trình thu phát (BroadcastReceiver) 13 2.1 Chu kỳ sống 13 2.2 Một số broadcast thông dụng 14 III THIẾT KẾ GIAO DIỆN 14 Một số lớp hỗ trợ thiết kế giao diện cho ứng dụng Android 14 Android Widget Toolbox 15 Các kiểu Layout 16 Tạo View 16 4.1 Chỉnh sửa View có sẵn 16 4.2 Tạo điều khiển ghép (compound control) 16 4.3 Tạo Control tùy chỉnh 17 Tạo giao diện Activity với View 17 CHƯƠNG II: ĐỒ HỌA 3D VỚI OPENGLES 18 I GIỚI THIỆU VỀ OPENGLES 18 Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android II CÁC TÍNH NĂNG CỦA OPENGLES 18 Phép dựng (Rendering) 18 Phép chiếu trực giao (Orthographic Projection) 19 Phép chiếu phối cảnh (Perspective Projection) 21 Chiều sâu (Depth) 24 Màu sắc tơ bóng (Color and Shading) 25 Bộ lọc mặt sau (Backface Culling) 26 Ánh sáng (Lighting) 27 Dán chất liệu (Texture Mapping) 28 Pha trộn màu (Blending) 29 10 Hiệu ứng sương mù (Fog) 30 CHƯƠNG III: XÂY DỰNG GAME LINE3D 32 I GIỚI THIỆU 32 II PHÂN TÍCH 32 III THIẾT KẾ HỆ THỐNG 34 Sơ đồ Use case 34 1.1 Đặc tả use case XoayBanCo 35 1.2 Đặc tả use case ChonVienBi 35 Sơ đồ lớp 36 2.1 Các lớp Activity 36 2.2 Các lớp BUS 37 IV THIẾT KẾ GIAO DIỆN 37 Danh sách hình 37 Mơ tả chi tiết hình 38 2.1MenuScreen 38 2.2 Màn hình PlayScreen 39 V THIẾT KẾ GIẢI THUẬT 39 Phương thức giao tiếp Activity 39 Phương thức quay trục tọa độ 39 VI THIẾT KẾ PHẦN MỀM 40 GLSurfaceView 40 Thiết kế bàn cờ 43 2.1 Thiết kế đối tượng viên gạch 43 2.2 Tô màu cho đối tượng viên gạch 48 2.3 Bàn cờ 50 2.4 Thiết kế viên bi 54 KẾT LUẬN Các kết đạt Hạn chế khóa luận Hướng phát triển TÀI LIỆU THAM KHẢO Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android Danh mục hình vẽ: Hình - 1: Cấu trúc Android Hình - 2: Máy ảo Dalvik Hình - 3: Tạo AVD Hình - 4: Tạo Android Project Hình - 5: Vòng đời Activity 12 Hình - 6: Quan hệ thành phần 15 Hình - 1: Phép chiếu trực giao 19 Hình - 2: Kết phép chiếu trực giao 21 Hình - 3: Phép chiếu phối cảnh 22 Hình - 4: Mơ tả góc nhìn camera 23 Hình - 5: Kết phép chiếu phối cảnh 23 Hình - 6: Demo chiều sâu 25 Hình - 7: Kết màu sắc tơ bóng 26 Hình - 8: Kết ánh sáng 27 Hình - 9: Dán chất liệu 29 Hình - 10: Pha màu (GL_ONE, GL_ZERO) 30 Hình - 11:Hiệu ứng sương mù 31 Hình - 1: Sơ đồ phân tích 33 Hình - 2: Sơ đồ Use case 34 Hình - 3: Các lớp Activity 36 Hình - 4: Các lớp BUS 37 Hình - 5: Màn hình lựa chọn 38 Hình - 6: Màn hình chơi game 39 Hình - 7: Khối lập phương OpenGL 44 Hình - 8: Vẽ tam giác khối lập phương 45 Hình - 9: Vẽ viên gạch màu trắng 48 Hình - 10: Mơ hình màu RGB 48 Hình - 11: Viên gạch hoàn chỉnh 49 Hình - 12: Dịch chuyển viên gạch 50 Hình - 13: Quản lý viên gạch ma trận 51 Hình - 14: Bàn cờ 53 Hình - 15: Ghép nhiều tam giác thành hình cầu 54 Hình - 16: Hệ tọa độ cầu 55 Hình - 17: Thứ tự vẽ điểm hình cầu 55 Hình - 18: Viên bi tâm bàn cờ 57 Hình - 19: Hồn chỉnh điều khiển viên bi 58 Hình - 20: Xử lý ăn bi ma trận theo hàng ngang, hàng dọc 59 Hình - 21: Xử lý ăn bi ma trận theo đường chéo 60 Hình - 22: Xử lý ăn bi ma trận theo đường chéo 60 Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android MỞ ĐẦU Cơ sở khoa học thực tiễn đề tài Điện thoại di động đã, công cụ quan trọng thiếu thời đại thông tin Các ứng dụng cho điện thoại di động trở nên quan trọng hết, thành phần thiếu song song với thiết bị thông minh Mac OSX (iphone), Android, Symbian, Windows Mobile Blackbery gương mặt cạnh tranh thị trường điện thoại thông minh tất có điểm thu hút hứa hẹn riêng dành cho nhà phát triển Nhưng thị trường đặc thù Việt Nam, có nhiều điều nước giới áp dụng nước ta Chọn Android giải pháp tối ưu tương lai Android dễ dàng tiếp cận, làm quen Ngơn ngữ lập trình ứng dụng cho Android dựa tảng Java ngôn ngữ phổ biến giới lập trình Việt Nam, giúp họ có bước chuyển đổi dễ dàng Và điều nhà phát triển ứng dụng thừa nhận Android dễ tiếp cận Một người cần có kiến thức làm quen Android vài ngày bắt đầu viết ứng dụng có tính thực tế sau tuần Cho đến nay, Android hệ điều hành cho phép tải toàn mã nguồn Android dựa giấy phép Apache Do đó, nhà phát triển xem cách thiết kế hệ thống tảng Google hướng dẫn chi tiết cách download mã nguồn http://source.android.com Sau tìm hiểu, họ mua bo mạch cho phép Android chạy bo mạch tự tạo Android không gói gọn tảng dành cho diện thoại di động mà tại, Android xuất nhiều thiết bị khác máy nghe nhạc, thiết bị đọc sách điện tử, đầu thu kĩ thuật số,… Điều giúp nhà phát triển có thị trường rộng lớn hơn, đưa ứng dụng đến tay nhiều người dùng Rõ ràng, điều mang lại nhiều lợi ích mặt kinh tế Nhân lực Android mục tiêu nóng thị trường tuyển dụng Theo thống kê, đến có 15 cơng ty Việt Nam có nhu cầu nhân lực mảng với mức đầu tư cao Mảng việc cho Android Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android công ty nhiều bao gồm gia cơng phần mềm, làm sản phẩm làm porting (đưa Android lên phần cứng khác nhau) Nhận thấy nhu cầu người lĩnh vực giải trí di động ngày cao Android tảng ứng dụng phát triển tương lai Chính em chọn đề tài “Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android” nhằm hiểu rõ kĩ thuật lập trình thiết bị di động, đặc biệt kĩ thuật xây dựng đồ họa 3D di động để tạo nên game 3D hoàn chỉnh Mục tiêu đề tài - Tìm hiểu thư viện OpenGLES công cụ liên quan - Xây dựng game Line3D Nội dung nghiên cứu Sử dụng công cụ OpenGLES để phát triển ứng dụng 3D hệ điều hành Android Đối tượng phạm vi nghiên cứu  Đối tượng nghiên cứu: - Thư viện OpenGLES Android  Phạm vi nghiên cứu: - HĐH Android mơi trường phát triển ứng dụng - Tìm hiểu thư viện OpenGLES Phương pháp nghiên cứu - Nghiên cứu đọc hiểu tài liệu - Cài đặt thực nghiệm Lê Xuân Huy – 152122479 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android CHƯƠNG I: TỔNG QUAN VỀ ỨNG DỤNG TRÊN ANDROID I TỔNG QUAN VỀ ANDROID Lược sử Android Android phát hành phiên 11/11/2007, môi trường hệ điều hành hoàn chỉnh dựa hệ điều hành nhân Linux V2.6 Lúc đầu, đích triển khai Android lĩnh vực điện thoại di động, gồm loại điện thoại thông minh loại thiết bị điện thoại kiểu gập chi phí thấp Tuy nhiên, phạm vi đầy đủ dịch vụ điện toán Android hỗ trợ chức phong phú có tiềm mở rộng thị trường điện thoại di động Android cịn hữu ích tảng ứng dụng khác Nền Android sản phẩm Open Handset Alliance (Liên minh thiết bị cầm tay mở), tập đoàn tổ chức hợp tác với để xây dựng nên loại điện thoại di động tốt Tập đoàn Google đứng đầu gồm nhà vận hành (điện thoại) di động, nhà sản xuất thiết bị cầm tay, sản xuất linh kiện, nhà cung cấp giải pháp phần mềm công ty tiếp thị Từ quan điểm phát triển phần mềm, Android trở thành trung tâm giới mã nguồn mở có tiềm phát triển Thiết bị cầm tay có khả Android thị trường thiết bị G1 HTC sản xuất bán T-Mobile Nó trở nên sẵn có sau gần năm đồn đại, mà công cụ phát triển phần mềm sẵn có số phát hành Bộ công cụ phát triển phần mềm (SDK) cải tiến dần bước Khi ngày phát hành G1 gần đến, nhóm Android phát hành SDK V1.0 ứng dụng bắt đầu vượt lên nhằm hướng tới tảng Để kích thích đổi phát triển ứng dụng Android, Google tài trợ hai vòng thi “Các thách thức nhà phát triển Android”, hàng triệu đôla đổ vào ứng dụng dự thi hàng đầu Vài tháng sau G1, Android Market phát hành, cho phép người sử dụng duyệt tải ứng dụng trực tiếp vào điện thoại họ Trong vòng 18 tháng, di động thức có mặt thị trường đối thử cạnh tranh nặng ký di động phổ biến trước Symbian hay Window Mobile Lê Xuân Huy – 152122479 Trang Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android Android cung cấp đầy đủ công cụ thiết kế cho nhà phát triển tận dụng tối đa lợi thiết bị cầm tay để xây dựng nên ứng dụng thực thuyết phục Họ tạo ứng dụng gọi thực chức lõi điện thoại thực gọi, gửi tin nhắn SMS, dùng camera… hay chia sẻ thông tin cá nhân lên trang web chẳng hạn thơng tin liên lạc, vị trí địa lý, lịch biểu… Các nhà phát triển cịn làm việc thiết bị Android hệ thống Android giao tiếp thơng qua Intens - đơn giản chuỗi mơ tả hành động Android cịn cung cấp sẵn dịch vụ định vị (và mạnh Google) với tập ứng dụng “Map” với tính ấn tượng dị đường, tính khoảng cách địa điểm, tìm bạn…Ngồi cịn có số tính bật khác Animation đồng thời hỗ trợ media-playback Android dần hoàn thiện qua phiên bản, mà phiên Android 5.0 Nền tảng Android Với khả rộng rãi Android, dễ dàng nhầm lẫn với hệ điều hành máy tính bàn Android mơi trường phân tầng, xây dựng hệ điều hành nhân Linux, bao hàm nhiều chức phong phú Hệ thống giao diện người sử dụng gồm có:  Cửa sổ  Khung nhìn  Các tiểu trình để hiển thị phần tử phổ biến hộp biên soạn, danh sách, danh sách thả xuống Android gồm trình duyệt nhúng vào được, xây dựng dựa WebKit, máy (engine) trình duyệt mã nguồn mở động trình duyệt Safari iPhone Android khoe mảng dồi nhiều tùy chọn kết nối, gồm WiFi, Bluetooth liệu không dây qua kết nối di động (như GPRS, EDGE 3G) Một kỹ thuật phổ biến ứng dụng Android liên kết tới Google Maps để hiển thị địa trực tiếp ứng dụng Việc hỗ trợ cho dịch vụ địa điểm (chẳng hạn GPS) dụng cụ đo gia tốc có sẵn gói Lê Xuân Huy – 152122479 Trang Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android 0.0f, 0.5f, 1.0f,1.0f, 0.5f, 0.5f, 0.0f,1.0f, 0.5f, 0.5f, 1.0f,1.0f, 0.0f, 1.0f, 0.5f,1.0f }; Trong mảng color khai báo màu đỉnh, mối giá trị đại diện màu cho đỉnh tương ứng Thêm đoạn sau vào hàm KhoiTao( ): ByteBuffer vbb=ByteBuffer.allocateDirect(color.length*4); vbb.order(ByteOrder.nativeOrder()); cb=vbb.asFloatBuffer(); cb.put(color); cb.position(0); Cập nhật lại hàm Draw( ): public void Draw(GL10 gl){ gl.glFrontFace(GL10.GL_CW); gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb); gl.glColorPointer(4, GL10.GL_FLOAT, 0, cb); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); // gl.glEnableClientState(GL10.GL_COLOR_ARRAY); gl.glDrawElements(GL10.GL_TRIANGLES,36, GL10.GL_UNSIGNED_SHORT, veb); // gl.glDisableClientState(GL10.GL_COLOR_ARRAY); gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); } Hình - 11: Viên gạch hoàn chỉnh Lê Xuân Huy – 152122479 Trang 49 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android 2.3 Bàn cờ Ta vẽ viên gạch tâm Vấn đề dịch chuyển viên gạch, ghép nhiều viên gạch lại Thật ra, muốn dịch chuyển viên gạch cần chỉnh tọa độ đỉnh được, muốn lên tăng y, sang phải tăng x ngược lại VD: Dịch viên gạch màu đỏ đến màu xám, xét đình bên phải viên gạch A(0.25,0.25), dịch chuyển đến đỉnh có tọa độ B(0.25,1.25) Vậy dịch chuyển viên gạch lên cần tăng tất tọa độ y lên 0.5 nhân số ô gạch, trường hợp y = 0.25 + 0.5 x = 1.25 Hình - 12: Dịch chuyển viên gạch Ta hiểu nguyên lý dịch chuyển viên gạch Tiếp theo vẽ bàn cờ, thuật toán đưa dùng mảng chứa tất viên gạch, viên gạch có vị trí xuất khác nhau, game khởi động duyệt mảng vẽ viên gạch tương ứng tạo thành bàn cờ Để quản lý bàn cờ, ta dùng ma trận, viên gạch xác định vị trí số dịng, số cột ma trận Lê Xuân Huy – 152122479 Trang 50 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android VD: viên gạch tâm mảng chiều A A[6][6] Hình - 13: Quản lý viên gạch ma trận Nếu ta đặt x (trục hoành) số cột, y(trục tung) số dịng ta có đoạn code dịch chuyển tất đỉnh viên gạch sau: public viengach(int x,int y,int mau,int sogach){ float mauvang[]={ 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f, 1.0f, 1.0f, 0.0f,0.1f }; //khi touch vào bàn cờ tơ cờ thành màu vàng if(mau==0) Lê Xn Huy – 152122479 Trang 51 Tìm hiểu thư viện OpenGLES xây dựng game Line3D Android color=mauvang; for(int i=0;i

Ngày đăng: 05/12/2021, 10:06

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w