Đồ án game traffic warden

80 751 4
Đồ án game traffic warden

Đ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

BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ ISPACE -o0o KHOA: CÔNG NGHỆ THÔNG TIN NGÀNH: LẬP TRÌNH MOBILE ĐỒ ÁN TỐT NGHIỆP GAME TRAFFIC WARDEN HỒ CHÍ MINH, năm 2015 BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ ISPACE -o0o KHOA: CÔNG NGHỆ THÔNG TIN NGÀNH: LẬP TRÌNH MOBILE ĐỒ ÁN TỐT NGHIỆP GAME TRAFFIC WARDEN GVHD : LÊ HỒNG KỲ SVTH : LÊ VĂN DŨNG VÕ THỊ THÚY HUỲNH TRẦN VĂN NAM 97510010002 97510010022 97510010016 HỒ CHÍ MINH, năm 2015 LỜI CẢM ƠN Đầu tiên, em xin gửi lời cảm ơn đến tất quý thầy cô tham gia giảng dạy Trường Cao đẳng nghề CNTT iSpace truyền đạt kiến thức hữu ích làm sở cho em thực đồ án Em xin chân thành cảm ơn đến thầy Lê Hồng Kỳ, người tận tình hướng dẫn, tạo điều kiện thuận lợi để chúng em hoàn thành tốt đồ án Sau em xin gửi lời biết ơn sâu sắc đến gia đình tạo điều kiện cho chúng em suốt trình học tập thực đồ án Hồ Chí Minh, tháng 06 năm 2015 Trân trọng TÓM TẮT ĐỒ ÁN Traffic Warden game với giao diện cách chơi đơn giản, từ trẻ em đến người trung niên, người lớn tuổi thích hợp Traffic Warden mang lại cho người chơi kiến thức bổ ích cần thiết liên quan đến luật giao thông Biết đâu qua trò chơi mà người chơi không bị cảnh sát giao thông bắt phạt Đồ án gồm 05 chương: Chương 1: Tổng quan tình hình game Lập trình Game thiết bị di động, giới thiệu Game Traffic Warden Chương 2: Lập trình game với thư viện LibGDX Chương 3: Thiết kế xây dựng Game Traffic Warden Chương 4: Phát triển Game Đa tảng Chương 5: Tối ưu Game cho tảng di động MỤC LỤC DANH MỤC HÌNH DANH MỤC BẢNG MỞ ĐẦU Kể từ máy tính xuất hiện, game trở thành ứng dụng phổ biến thị trường Cùng với đa dạng phong phú thể loại game lựa chọn, cần tập trung vào yếu tố phù hợp với tảng di động (điện thoại di động, máy tính bảng, ), đặc biệt quan tâm đến game phát triển nhóm người Với tiềm to lớn thị trường di động, không ngạc nhiên có nhiều nghiên cứu ý tưởng đưa nhằm mục đích tạo nên game di động hấp dẫn nhiều người chơi Cùng với việc tiếp tục áp dụng nguyên tắc thông thường thiết kế game máy tính, ta cần quan tâm đến số đặc điểm game thiết kế thiết bị di động: + Không lãng phí thời gian người chơi + Cung cấp trợ giúp cần thiết cho người chơi + Làm cho mục tiêu trò chơi dễ hiểu + Hiển thị trạng thái game cách rõ ràng + Người dùng di động thường chơi game thời gian ngắn + Người chơi dễ dàng tạm dừng hay tiếp tục game cần thiết + Người chơi đạt tiến thời gian ngắn + Những hạn chế thiết bị di động ảnh hưởng đến việc xây dựng game: • Kích thước hình nhỏ, đa dạng kích thước hình, độ phân giải • Có nhiều cách thức nhập liệu từ người dùng: bàn phím, cảm ứng, cảm biến gia tốc, cảm biến độ nghiên,… • Hạn chế sức mạnh tính toán sức mạnh đồ họa • Hạn chế pin Nhằm đáp ứng đặc điểm trên, nhóm em xây dựng gameTraffic Warden game quản lý thời gian (Time Management) đơn giản, không buộc người chơi phải nhiều công sức tìm hiểu cách chơi Không thế, người chơi góp thêm cho kiến thức luật tham gia giao thông Việt Nam Trang CHƯƠNG 1: GIỚI THIỆU VỀ GAME TRAFFIC WARDEN 1.1 GIỚI THIỆU VỀ GAME TRAFFIC WARDEN Theo tìm hiểu nhóm App Store (iPhone & iPad) CH Play (Android) game liên quan đến giao thông, phần lớn game điều khiển xe chạy cho đường (Traffic Warden – App Store Traffic Control – CH Play), hay game bật đèn tín hiệu cho xe dừng đường để không gây tai nạn (Traffic Control Emergency) chưa có game sâu vào khai thác công việc thật Cảnh sát giao thông – bắt xe quy phạm luật giao thông Hầu thể loại game giao thông Chính thế, nhóm định phát triển game Traffic Warden – Quản lý giao thông, với ý tưởng nói hoàn toàn mẻ lại hoàn toàn kho ứng dụng game Với cách chơi đơn giản đồ họa nhẹ nhàng, Traffic Warden mang đến cho người chơi giây phút giải trí thoải mái 1.2 CỐT TRUYỆN GAME TRAFFIC WARDEN Lấy ý tưởng từ cậu bé có người cha bị qua đời tai nạn giao thông, từ cậu bé tâm học thật giỏi để trở thành Cảnh sát giao thông với mong ước giúp tất người xung quanh tuân thủ luật giao thông, để không xảy tai nạn không mong muốn, không chịu cảnh người thân cậu Trong Traffic Warden người chơi vào vai người cảnh sát giao thông bắt xe vi phạm luật giao thông Trang CHƯƠNG 2: LẬP TRÌNH GAME VỚI LIBGDX Do nhu cầu không ngừng người chơi game nhà phát triển, ngày thị trường có nhiều framework hỗ trợ việc xây dựng phát triển game thiết bị di động, đặc biệt hệ điều hành Android Tùy theo yêu cầu đặc điểm game, mà lập trình viên lựa chọn cho framework thích hợp để lập trình Một số framework kể đến như: LibGDX, AndEngine, Unity,… Qua đồ án này, chúng em muốn giới thiệu Framework hỗ trợ lập trình đa tảng LibGDX 2.1 GIỚI THIỆU VỀ LIBGDX LibGDX framework phát triển ứng dụng game, viết ngôn ngữ lập trình Java, số thành phần viết C C++ để có hiệu tốt Nó cho phép phát triển ứng dụng desktop mobile codebase LibGDX chạy đa tảng, hỗ trợ Windows, Linux, Mac OS X, Android, iOS, web browsers với WebGL Một số ưu điểm LibGDX: -Đa tảng: cần viết code lần chạy nhiều tảng khác Một ứng dụng tính phát triển ứng dụng cho Android Để phát triển ứng dụng cho Android, chạy thử ứng dụng, cần chạy ứng dụng Emulator thiết bị thật Việc thời gian Emulator chạy chậm trình cài đặt chạy ứng dụng thiết bị thật tốn Với LibGDX, chạy ứng dụng PC, sau cần với vài dòng code, chạy ứng dụng Android với hiệu tương đương Điều giúp kiểm thử tìm lỗi ứng dụng nhanh hiệu -Hiệu năng: Hiệu LibGDX thực ấn tượng LibGDX có thành phần viết C C++ -Cộng đồng: cộng đồng sử dụng LibGDX tuyệt vời với số lượng người dùng lớn Các lập trình viên đóng góp giúp đỡ cho cộng đồng Việc sửa lỗi nâng cấp thư viện cập nhật thường xuyên Trang 10 Hình 4.8: Chọn đường dẫn lưu tập tin APK -Vào thư mục chọn để kiểm tra, lấy tập tin APK vừa tạo cài vào máy thật 4.3 TRÊN WEB (HTML5) 4.3.1 Chạy chế độ Debug với Eclipse -LibGDX có hỗ trợ chạy HTML5 trợ giúp công cụ Google Web Toolkit Để chạy thử trình duyệt cần phải cài Google Plugin for Eclipse, GWT Designer for GPE, Google Web Toolkit SDK, trình duyệt hỗ trợ GWT Developer Plugin Tôi sử dụng FireFox phiên 24.0 cài plugin hình (Hình 4.9) Các phiên trình duyệt không hỗ trợ plugin Hình 4.9: Plugin hỗ trợ FireFox -Sau chuẩn bị hoàn tất, vào Eclipse chọn Project HTML, nhấp phải chuột chọn GWT Complie hình (Hình 4.10) Trang 66 Hình 4.10: Chọn GWT Complie -Sau hộp thoại “GWT Complie” ra, chọn “Entry Point Modules” theo hình (Hình 4.11), khác để mặc định bấm “Complie” Hình 4.11: GWT Complie -Hộp thoại chọn thư mục “war” nơi để lưu Complie Bấm “OK” để bắt đầu Complie Quá trình Complie chép tập tin cần thiết vào thư mục war nên tốn thời gian lâu Có thể xem chi tiết trình Complie công cụ “Process” “Console” Eclipse Nếu có lỗi Project thông báo “Console” Sau Process chạy xong, không bị lỗi, ta nhấp phải lên Project HTML Eclipse, chọn “Run as” -> “Web Trang 67 Application (GWT Super Dev Mode)” Quá trình chuẩn bị chạy bắt đầu, chạy xong khung “Development Mode” lên hình (Hình 4.12) Hình 4.12: Chuẩn bị chạy trình duyệt -Trong có đường link, hình http://127.0.0.1:8888/index.html, ta chép địa dán vào FireFox phiên 24 chuẩn bị Khi trình duyệt Complie chéo Project Html lần Sau tự khởi động (Hình 4.13) vào hình Game (Hình 4.14) Hình 4.13: Loading LibGDX vào trình duyệt Trang 68 Hình 4.14: Vào hình Menu Game -Game chạy thử HTML chậm Game chạy Desktop Android Với TileMap Game phải lưu với định dạng Encoding CSV 4.3.2 Chạy trực tiếp Server Để đưa Game lên trang Web, ta phải Build thành dạng mã Javascript chạy độc lập với Eclipse Trong dùng Gradle PHP để chạy Các bước thực sau: -Chép tập tin từ Project Html, Projecjt Android (do đặt thư mục Assets chứa hình liệu)và Project Core Eclipse vào thư mục tương ứng “html” “core” lúc tạo Project LibGDX (là thư mục dùng Import Project vào Eclipse) Trang 69 Hình 4.15: Chép tập tin cần thiết vào chuẩn bị chạy với Gradlew -Chạy Command Prompt Windows quyền Administrator, vào thư mục vừa chép lúc Chạy lệnh: gradlew html:dist để bắt đầu trình Build (Hình 4.16 ) Hình 4.16: Bắt đầu Build -Chú ý trình Build phải sử dụng Gradlew phiên Và tắt bớt chương trình làm việc công việc cần nhiều nhớ RAM Quá trình Build hoàn tất hình (Hình 4.17) Trang 70 Hình 4.17: Quá trình Build html hoàn tất -Quá trình Build hoàn tất, tập tin đặt thư mục “html\dist” Chép tập tin thư mục lên Server chạy 4.4 TRÊN iOS Để chạy thử Build tập tin IPA phải có máy Mac chạy MacOS nên phần nhóm đủ điều kiện nên không chạy thử Trang 71 CHƯƠNG 5: TỐI ƯU GAME CHO NỀN TẢNG DI ĐỘNG Mục đích việc tối ưu cải thiện tốc độ Game giải vấn đề tốn nhiều nhớ Để chọn phương pháp tối ưu phải vào mục đích người viết code cân tốc độ xử lý / tối ưu nhớ Để tối ưu tốt nhất, nên làm sau viết code hoàn chỉnh Những biện pháp sau áp dụng để tối ưu Game này: 5.1 TỐI ƯU BỘ NHỚ SỬ DỤNG -Không sử dụng vòng lặp for each: vòng lặp tạo đối tượng để sử dụng vòng lặp Nên sử dụng vòng lặp for gọi trực tiếp giá trị, không tạo đối tượng trung gian -Sử dụng hình ảnh dạng PNG thay BMP, JPG, : Do PNG giữ nguyên chất lượng hình cho kích cỡ tập tin có dung lượng chấp nhận Đặc biệt có màu suốt (Transparent) đỡ tốn dung lượng không che khuất hình ảnh nằm phía sau -Nén âm định dạng OGG thay WAV: Định dạng tiết kiệm dung lượng lưu trữ mà chất lượng âm không nhiều so với định dạng WAV -Nếu có nhiều hình ảnh nhỏ, dùng Texture Packer để gộp lại thành hình lớn Việc tiết kiệm nhớ giảm số lần đọc tập tin tải hình Trong Game sử dụng cách để giảm dung lượng ảnh ImageButton từ 154KB (có 34 hình) 75.8KB, giảm 51% dung lượng -Chỉ dùng BitmapFont thật cần thiết: Với chữ không sử dụng không nên đưa vào tập tin font FNT nhằm giảm dung lượng nhớ để lưu trữ hình ảnh chữ -Dispose thành phần dùng xong Các đối tượng không sử dụng lại nên hủy để lấy phần nhớ trống cho đối tượng khác Đặc biệt Pixmap LibGDX, đối tượng sử dụng nhớ nhiều, dễ treo máy Để đối tượng không sử dụng nhớ làm chương trình thu gom rác chạy liên tục, tốn thời gian xử lý -Không khai báo đối tượng sử dụng nhớ lớn vòng lặp Game Loop Mỗi lần khai báo, hệ điều hành cấp vùng nhớ cho đối tượng Sau dùng xong, đối tượng xóa chưa kịp xóa xong đối Trang 72 tượng tạo vòng lặp Bộ nhớ tăng dần không gọi vòng lặp Nếu phải bắt buộc khai báo khởi tạo đối tượng bên vòng lặp Khi vào vòng lặp gán giá trị cho đối tượng -Tạo Map Game nên dùng TiledMap ghép nhiều ảnh nhỏ (Tileset) lại thay dùng ảnh lớn làm Map Trong Game bắt đầu vẽ Map, chương trình đọc ảnh nhỏ ghép vào vị trí lưu tập tin TMX kèm Vì đọc ghép ảnh nhỏ nên làm tốn thời gian xử lý việc đọc ảnh lớn lần Chọn cách tùy thuộc vào hiệu nhớ / tốc độ xử lý định Như Game này, sử dụng Map ảnh lớn nhớ sử dụng tăng lên 40MB (trong môi trường Desktop), xử lý nhanh Còn sử dụng TileMap tốc độ xử lý chậm xem toàn ảnh Ảnh sử dụng định dạng PNG có kích cỡ 3200*2192 pixel, kích cỡ với TileMap có 200*137 ô Tileset kích cỡ 16*16 pixel -Chỉ nên khai báo đối tượng cần thiết Việc khai báo đối tượng sử dụng lần lãng phí nhớ -Khai báo kiểu liệu phù hợp với nhiệm vụ đối tượng biến Khi viết chương trình nhỏ có vài biến không ảnh hưởng Nhưng với Game lớn, khai báo không phù hợp hàng trăm ngàn, hàng triệu giá trị mảng gây tốn nhiều nhớ Ví dụ: cần sử dụng biến lưu số tiền, dùng kiểu Float (tốn 4byte nhớ) phù hợp dùng kiểu Double (tốn 8byte nhớ) Hoặc dùng kiểu mảng chiều thay dùng ArrayList cho mảng có độ dài cố định -Cuối hạn chế sử dụng hình ảnh tĩnh với trường hợp đơn giản vẽ Game Ví dụ: Game có khung hình chữ nhật đơn giản sử dụng Pixmap để vẽ thay tải ảnh 5.2 TỐI ƯU TỐC ĐỘ XỬ LÝ -Ưu tiên thuật toán có tốc độ xử lý nhanh -Không khai báo đối tượng vòng lặp không cần thiết trình bày phần Tối ưu nhớ (Mục 5.1) Khai báo làm tốn thời gian để chép liệu đến vị trí -Không gọi chương trình gom rác không cần thiết Việc gọi giải phóng nhớ CPU tốn nhiều thời gian để làm việc Trang 73 -Dùng if else thay cho nhiều if điều kiện if có liên quan tới -Khi vẽ hình TiledMap Game, nên giảm số lần vẽ Tileset xuống đến mức chấp nhận (cân nhớ xử lý) Ví dụ: TileMap có 200*140 ô Tileset kích cỡ 16*16pixel, số lần vẽ lần render là: 200*137=28.000 Nếu Game chạy bình thường, giây vẽ 60 lần, nên số lần vẽ giây là: 28000*60=1,68 triệu lần Để giảm số lần vẽ, ta tăng kích cỡ Tileset lên 64*64 pixel, số ô Tileset TiledMap mới: 50*35 số lần vẽ lần render là: 50*35=1750 lần Trong giây vẽ: 1750*60=105.000 Cách giảm tới 93% số lần vẽ so với cách cũ, số lớn Đây cách tối ưu dùng làm TildeMap Game -Đo tốc độ xử lý để biết phần tốn nhiều thời gian CPU Trong Java có phương thức System.currentTimeMillis() trả thời gian tính mili giây Nếu muốn xác ta dùng phương thức System.nanoTime() trả thời gian tính nano giây Sau biết thành phần gây tốn nhiều thời gian xử lý, ta dễ dàng tìm cách giải mò mẫm toàn dòng code 5.3 TỐI ƯU CHO THIẾT BỊ MÀN HÌNH KHÁC NHAU Do thiết bị di động có nhiều kích cỡ khác từ điện thoại 2.5 inches tablet 10 inches, độ phân giải từ 320*240 pixel đến FullHD hay 2K, 4K nên việc tối ưu theo kích cỡ quan trọng Việc tối ưu để tránh hình ảnh, chữ nhìn thiết bị độ phân giải thấp vừa mà nhìn thiết bị độ phân giải cao nhỏ xíu, ngược lại Hướng tối ưu có hướng với ưu điểm nhược điểm riêng: 5.3.1 Tạo nhiều hình có kích thước khác Cách ứng dụng Android sử dụng Mỗi loại hình có ảnh vừa với nó, chạy ứng dụng, hệ điều hành lấy ảnh tương ứng để hiển thị Ưu điểm hình ảnh vừa với độ phân giải nên hình đẹp, mịn màng Nhược điểm lưu nhiều ảnh nên làm tăng dung lượng ứng dụng lên Với Game cần nhiều hình ảnh lại vấn đề 5.3.2 Kéo giãn hình ảnh cho vừa với độ phân giải Trang 74 Tôi sử dụng cách Game Ưu điểm đỡ tốn nhiều dung lượng lưu trữ Nhược điểm làm “bể hạt” ảnh kéo giãn nhiều Để khắc phục nhược điểm này, ta dùng ảnh kích thước trung bình, kéo giãn kéo co lại không ảnh hưởng nhiều Dĩ nhiên mức chấp nhận ảnh không đẹp cách (Mục 5.3.1) Trang 75 KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN KẾT QUẢ ĐẠT ĐƯỢC Do ý tưởng làm Game dạng mẻ, chưa xuất cửa hàng trực tuyến AppStore, CHPlay, nên nhóm khó khăn để định hình hướng Game cho riêng Và Game đầu tay thành viên nhóm nên nhiều thứ mẽ lạ lẫm Tuy vậy, nhóm cố gắng hoàn thành phần sau đây: -Tạo Map Game -Tạo điều khiển Camera cho phép phóng to, thu nhỏ, di chuyển Map -Tạo áp dụng thành công cách để vật thể (trong Game Xe nhân vật NPC) di chuyển theo đường cho, tạo đường mới, tự biết tìm đường khác hết đường cũ -Tiếp nhận xử lý thao tác từ người chơi Desktop thiết bị di động -Cho phép người chơi chơi từ đầu hay chơi tiếp từ lần chơi trước -Chạy nhiều tảng Desktop, Android, WEB -Có tối ưu tốc độ thời gian xử lý -Có tối ưu cho thiết bị di động có kích cỡ hình khác -Tạo Game hoàn chỉnh chơi ngôn ngữ Anh Việt Ngôn ngữ Anh chưa dịch hết 100% Do thời gian học tìm hiểu Framework LibGDX ngắn (2 tháng học tháng tự nghiên cứu) nên nhóm bỡ ngỡ làm Game Nhưng với tâm học hỏi tìm tòi, nhóm vượt qua tất để tạo Game hoàn chỉnh chơi chưa hay Nhóm hy vọng khởi đầu cho tương lai tốt đẹp thành viên nhóm công việc say HƯỚNG PHÁT TRIỂN -Đầu tiên nhóm mong muốn cải thiện đồ họa cho đẹp Do thành viên không chuyên đồ họa nên hình ảnh Game mang tính đơn giản chưa đẹp mắt Trang 76 -Là game dạng giáo dục nên với mong muốn nhiều người biết đến chơi nên nhóm muốn phát triển thành Game xã hội (Social Game) chơi Facebook, Zing trang Game online khác -Về ngôn ngữ Game hạn chế nên dừng lại ngôn ngữ Anh Việt Ngôn ngữ Anh chưa chuyển hết toàn Với phiên sau, hoàn thiện thêm ngôn ngữ, đa dạng ngôn ngữ -Các lỗi vi phạm Game so với vi phạm luật Giao thông thực tế Mong phiên bổ sung hoàn chỉnh -Về lỗi va chạm xuyên tường, xe nằm lên Game, nhóm tìm hướng giái thời gian có hạn nên chưa dám nghiên cứu sâu để áp dụng Đây lí nhóm phải tạm dừng phát triển tính xe tự dừng gặp đèn đỏ tránh xe khác có va chạm -Với thời gian tìm hiểu chưa nhiều nên nhiều sức mạnh mà Framework LibGDX mang lại chưa tận dụng hết Như việc sử dụng Scene, Stage giúp lập trình gọn hơn, plugin Bullet tính toán va chạm tốt hơn, plugin Box2D có lẽ tốt cách viết code từ đầu đến cuối -Vì nhóm có thành viên nên việc kiểm tra tính năng, lỗi Game thiếu sót Nhóm hy vọng có góp ý thầy cô, bạn người yêu thích Game Trang 77 CÁC QUI ƯỚC TRONG GAME -Góc tọa độ 00 góc hướng lên song song trùng với trục Y hệ tọa độ OXY -Gốc tọa độ O(0,0) Game vị trí nằm phía trái hình -Các thao tác nhập từ người dùng có trả tọa độ gốc tọa độ O(0,0) nằm vị trí góc trái hình Do phải chuyển lại gốc tọa độ Game thành góc trái Trang 78 TÀI LIỆU THAM KHẢO -https://github.com/libgdx/libgdx/wiki -http://www.katharinasabel.de/teaching/libgdx-game-of-codes/ -http://www.badlogicgames.com/forum/ -http://libgdx.toxsickproductions.com/category/libgdx/ -http://www.serivn.com/search/label/Libgdx -http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx -http://stackoverflow.com -http://congdongandroid.vn -http://emptymind.me -http://congdongandroid.vn/forumdisplay.php?fid=3 -http://obviam.net/index.php/table-of-contents/ -http://fanart.pokefans.net/tilesets/top -http://bitowl.de Trang 79 BẢNG PHÂN CHIA CÔNG VIỆC TRONG NHÓM Nguyên tắc phân chia theo chiều dọc công việc: người giao tự tìm thiết kế hình, hình, code test code phần Nếu gặp khó khăn nhờ thành viên khác hỗ trợ STT 10 11 12 13 14 15 16 17 18 19 20 21 22 Công việc Người thực Dũng, Nam, Huỳnh Dũng, Nam Tìm, thiết kế, vẽ hình Hiển thị xe chuyển động xe Code, tính toán cho xe chạy theo đường, tính góc Dũng quay cho xe Di chuyển, zoom camera Dũng Tiếp nhận xử lý thao tác từ người chơi Nam, Dũng Vẽ Map gắn vào Game Dũng Tạo khung tương tác với người chơi (Camera GUI) Dũng Gắn xe vào Map , di chuyển xe đường Map Dũng Gắn nhân vật Animation NPC, tạo di chuyển cho Dũng nhân vật Tạo lỗi, tạo khung va chạm cho xe Nam, Dũng Xây dựng kiện bắt lỗi xử lý xe vi phạm Nam Xây dựng mua vật phẩm Game Dũng Âm thanh, nhạc Game Dũng, Nam Khung Pause, Save Load game Dũng Xây dựng hình Splash Huỳnh, Dũng Xây dựng hình Menu Huỳnh Xây dựng chức hướng dẫn, cốt truyện Huỳnh Sửa lỗi, tối ưu Game Dũng Hoàn thiện Game Dũng Test game Huỳnh, Nam, Dũng Xây dựng Game đa tảng Dũng Viết báo cáo chuẩn bị thuyết trình Huỳnh, Nam, Dũng Bảng phân chia công việc thiết kết xây dựng Game Trang 80 [...]... dụng LibGDX trên Web 2.4.3 CHẠY THỬ TRÊN DESKTOP Trang 16 Hình 2.8: Chạy thử ứng dụng LibGDX trên Desktop Trang 17 CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG GAME TRAFFIC WARDEN 3.1 THIẾT KẾ 3.1.1 SƠ ĐỒ THIẾT KẾ GAME TRAFFIC WARDEN Hình 3.1: Sơ đồ thiết kế game Traffic Warden 3.1.2 GIẢI THÍCH VIỆC CHIA THEO PACKAGE -Do 1 nhóm có 3 thành viên nên việc phân chia Package sẽ ưu tiên theo tên thành viên, sau đó sẽ chia... 3.10: Demo menu screen game Traffic Warden 3.2.4 Class Main Game -Tạo Class đặt tên “MainGame” trong package “com.doan.projecta .game , kế thừa Class Game của LibGDX Trang 30 -Class này sẽ được gọi thứ 2 (sau các Class DekstopLauncher hoặc AndroidLauncher) khi vào Game -Trong Class có phương thức “create()” dùng để gọi Class tải hình và âm thanh vào Game, khởi tạo Class “SplashGame” -Class còn có phương... Assets.instance.logoTren.getRegionWidth()) / 2,yTren - 20); batch.end();//Kết thúc vẽ +Phương thức dispose() để giải phóng bộ nhớ Dưới đây là Demo màn hình Splash Screen của game Traffic Warden (Hình 3.8) Hình 3.8: Demo splash screen trong game Traffic Warden 3.2.3 Class MenuScreen Khi game đã sẵn sàng, chúng ta cần cung cấp cho người chơi màn hình để lựa chọn, ví dụ như: Bắt đầu vào trò chơi hay Chơi tiếp, Hướng dẫn cách chơi,... TMX mới, đưa vào Game để kiểm tra không còn bị lỗi sọc đen nữa 3.2.2 Class SplashGame -Để phân chia tốt thời gian hoạt động, trước khi game sẵn sàng, sẽ có một quá trình nạp dữ liệu, quá trình này có thể kéo dài đến vài giây Trong thời gian đó, tránh để người dùng phải nhìn vào một màn hình trống Vì thế, hãy hiển thị một Trang 24 màn hình chờ (splash screen) Nó cho người dùng biết game vẫn đang hoạt... người chơi Đây cũng là phần Game Loop trong Lập trình Game -Phương thức resize() được gọi khi có thay đổi về kích thước màn hình Game -Phương thức pause() và resume(), hide() sẽ gọi phần load và save Game -Phương thức dispose() giải phóng bộ nhớ những phần liên quan do Class “ProjectA” này đã tạo Phương thức sẽ không được tự gọi mà ta phải gọi phương thức này từ Class “MainGame” 3.2.6 Class Xe -Tạo Class... “com.doan.projecta.util” có các Class để chứa Hằng số, các phương thức dùng chung, Class Asset load hình, âm thanh -Trong Package “com.doan.projecta.world” là những Class liên quan tới điều khiển và vẽ trong Game 3.2 XÂY DỰNG GAME TRAFFIC WARDEN 3.2.1 Vẽ Map 3.2.1.1 Nguyên liệu cần thiết: -Chương trình vẽ, ở đây dùng Tiled phiên bản 0.12 -Hình Tileset gồm các ảnh nhỏ được gom lại thành 1 tập tin ảnh, các ảnh nhỏ này sẽ được... thanh vào Game, khởi tạo Class “SplashGame” -Class còn có phương thức “displose()” được gọi để giải phóng bộ nhớ khi đóng Game 3.2.5 Class ProjectA -Tạo Class đặt tên “ProjectA” implements Screen trong package “com.doan.projecta .game -Class này sẽ khởi tạo các Class chính cho Game hoạt động bao gồm “WorldController”, “WorldRender”, “World”, “MainCamera” -Do implement Class Screen nên có đủ các phương... ImageButton btnNext.setPosition(w - 80, y + 40); //w: độ rộng màn hình btnNext.render(batch); -Màn hình Thoát game – Mục đích chính của màn hình này giúp người chơi có thể chọn lại tiếp tục chơi nếu không may nhấp nhầm Nút Thoát game, vì màn hình này cho ta 2 sự lựa chọn là Chơi Tiếp hoặc là Thoát game – phương thức drawThoat() -Vì có nhiều màn hình phụ, ta sẽ tạo cờ (Flag) cho mỗi màn hình phụ kiểu boolean... dùng 0 Không có lỗi Bảng 3.1: Lỗi tham khảo trong Game -Trong Class này có thủ tục vẽ các xe lên màn hình Một vòng lặp sẽ quét từng thông tin xe trong Mảng các xe để tìm vị trí xe hiện tại, góc quay xe, vị trí tiếp theo của xe, kiểm tra có va chạm với xe khác hay không rồi vẽ ra màn hình Trang 32 3.2.7.1 Tìm vị trí hiện tại của xe Hình 3.12: Sơ đồ tính toán vị trí đặt xe theo tâm -Giả sử điểm O (x1,y1)... chuyển Các nhân vật này thêm vào để sinh động thêm cho Game -Bước 4: Vẽ trên từng Layer tương ứng trong Map cho hoàn chỉnh như hình (Hình 3.5) Trang 22 Hình 3.5: Map hoàn chỉnh -Bước 5: Lưu và đặt tên thành “map.tmx” Đây là Map ở mức chơi đầu tiên Sau này nếu có nâng cấp lên sẽ vẽ thêm vài Map nữa -Bước 6: Chạy thử và kiểm tra Map Khi vào màn hình Game ở mức zoom 1.0 thì Map không vấn đề gì Nhưng khi

Ngày đăng: 07/05/2016, 23:53

Từ khóa liên quan

Mục lục

  • DANH MỤC HÌNH

  • DANH MỤC BẢNG

  • MỞ ĐẦU

  • CHƯƠNG 1: GIỚI THIỆU VỀ GAME TRAFFIC WARDEN

    • 1.1 GIỚI THIỆU VỀ GAME TRAFFIC WARDEN

    • 1.2 CỐT TRUYỆN GAME TRAFFIC WARDEN

    • CHƯƠNG 2: LẬP TRÌNH GAME VỚI LIBGDX

      • 2.1 GIỚI THIỆU VỀ LIBGDX

      • 2.2 CÀI ĐẶT MÔI TRƯỜNG LÀM VIỆC

      • 2.3 TẠO PROJECT LIBGDX

      • 2.4 IMPORT PROJECT VÀO ECLIPSE

        • 2.4.1 CHẠY THỬ TRÊN ANDROID

        • 2.4.2 CHẠY THỬ TRÊN WEB

        • 2.4.3 CHẠY THỬ TRÊN DESKTOP

        • CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG GAME TRAFFIC WARDEN

          • 3.1 THIẾT KẾ

            • 3.1.1 SƠ ĐỒ THIẾT KẾ GAME TRAFFIC WARDEN

            • 3.1.2 GIẢI THÍCH VIỆC CHIA THEO PACKAGE

            • 3.2 XÂY DỰNG GAME TRAFFIC WARDEN

              • 3.2.1 Vẽ Map

                • 3.2.1.1 Nguyên liệu cần thiết:

                • 3.2.1.2 Các bước để vẽ

                • 3.2.2 Class SplashGame

                • 3.2.3 Class MenuScreen

                • 3.2.4 Class Main Game

                • 3.2.5 Class ProjectA

                • 3.2.6 Class Xe

Tài liệu cùng người dùng

Tài liệu liên quan