ĐỒ ÁN TỐT NGHIỆP KỸ SƯ NGÀNH CNTT ĐỀ TÀI : XÂY DỰNG GAME TRÊN HỆ ĐIỀU HÀNH iOS SỬ DỤNG COCOS2D GAME ENGINE VÀ OPENFEINT API

73 38 0
ĐỒ ÁN TỐT NGHIỆP KỸ SƯ NGÀNH CNTT ĐỀ TÀI : XÂY DỰNG GAME TRÊN HỆ ĐIỀU HÀNH iOS SỬ DỤNG COCOS2D GAME ENGINE VÀ OPENFEINT API

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel (84-511) 736 949, Fax (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn ĐỒ ÁN TỐT NGHIỆP KỸ SƯ NGÀNH CÔNG NGHỆ THÔNG TIN MÃ NGÀNH : 05115 ĐỀ TÀI : XÂY DỰNG GAME TRÊN HỆ ĐIỀU HÀNH iOS SỬ DỤNG COCOS2D GAME ENGINE VÀ OPENFEINT API Mã số : 06T3-054 Ngày bảo vệ : 15/06/2011 SINH VIÊN : PHAN ĐINH VỸ LỚP : 06T3 CBHD : PGS-TSKH TRẦN QUỐC CHIẾN ĐÀ NẴNG, 05/2011 LỜI CẢM ƠN Đầu tiên em xin gửi lời cảm ơn chân thành nhất đến các thầy cô trường Đại học Bách Khoa Đà Nẵng nói chung và các thầy cô Khoa Công Nghệ Thông Tin, Bộ môn Công Nghệ Phần Mềm nói riêng đã tận tình giảng dạy truyền đạt cho em những kiến thức những kinh nghiệm quý báu suốt thời gian qua Trong thời gian làm việc với các thầy cô khoa Công Nghệ Thông Tin em đã được không ngừng tiếp thu thêm nhiều kiến thức mà còn được học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, những điều này rất cần thiết cho em quá trình học tập và công tác sau này Em xin xin chân thành cảm ơn thầy Trần Quốc Chiến đã hết lòng hướng dẫn em thực hiện đề tài Sau cùng em xin gửi lời cảm ơn chân thành nhất đến gia đình bạn bè đã động viên, đóng góp ý kiến và giúp đỡ em quá trình thực hiện đồ án tốt nghiệp LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung luận văn này là thực hiện dưới sự hướng dẫn trực tiếp PGS-TSKH Trần Quốc Chiến Mọi tham khảo dùng luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên, Phan Đinh Vy MỤC LỤC MỞ ĐẦU I Giới thiệu bối cảnh đề tài: II Mục tiêu cần đạt được: .9 III Ý nghĩa thực tiễn: IV Nội dung đề tài: .10 CƠ SỞ LÝ THUYẾT 11 I Objective C: 11 I.1 Lịch sử: 11 I.2 Đặc điểm bản: 11 I.3 Cú pháp: 11 I.3.1 Interface và implement: .11 I.3.2 Category 12 I.3.3 Kiểm soát Exception: 13 I.3.4 Properties: 14 I.3.5 Hàm tạo – Contructor: 14 I.3.6 Quản lý bộ nhớ: 14 II QUẢN LÝ BỘ NHỚ 15 II.1 Cấu trúc bộ nhớ .15 II.1.1 Cấu trúc vùng nhớ Stack: 15 II.1.2 Cấu trúc vùng nhớ Heap: 16 II.2 Rị rỉ bợ nhớ (Memory Leaks) .17 II.2.1 Định nghĩa: 17 II.2.2 Ảnh hưởng rò rỉ bộ nhớ: .17 II.2.3 Một số trường hợp rò rỉ bộ nhớ: 17 II.3 Làm nào để tránh bị rị rỉ bợ nhớ: 20 II.3.1 Nguyên tắc: 20 II.3.2 Các cách phát hiện rò rỉ bộ nhớ: .20 II.3.3 Sử dụng công cụ để kiểm tra 21 III Cocos2D: 22 III.1 Cocos2D là gì? .22 III.2 Vì sử dụng Cocos2D: .22 III.2.1 Hoàn toàn miễn phí: 22 III.2.2 Mã nguồn mở: 22 III.2.3 Được viết sử dụng ngôn ngữ Objective C: .22 III.2.4 Ẩn các thành phần OpenGL ES: 22 III.2.5 Lập trình: 23 III.2.6 Được sự ủng hộ cộng đồng lập trình viên: 23 III.3 Cơ bản về Cocos2D: .23 III.3.1 Singleton: 23 III.3.2 CCDirector: 24 III.3.3 CCNode: 25 III.3.4 CCScene: 26 III.3.5 CClayer: 26 III.3.6 CCSprite: 27 i .III.3.7 CCLabel: 28 III.3.8 CCMenu: 28 III.3.9 Lớp Actions: 29 III.4 Quản lý bộ nhớ với Cocos2D: 29 IV Open Feint: 30 IV.1 Giới thiệu: .30 IV.2 Tính năng: .31 IV.3 Triển khai: .31 XÂY DỰNG GAME 32 I Giới thiệu tổng quan: 32 I.1 Game là gì? .32 I.2 Qui trình làm game: 32 I.3 Vịng đời của mợt game 33 II Xây dựng game đua xe (Racing) .34 II.1 Lịch sử game đua xe: .34 II.2 Giới thiệu về game X-Racing: .35 III Xây dựng game X-Racing: .36 III.1 Xây dựng hệ thống điều khiển: 36 Tính toán vị trí xe dựa vào vector vận tốc: 36 III.1.1 Hệ thống vật lý cho xe: .37 III.1.2 Thiết lập cho camera: .38 III.1.3 Xét va chạm game: 38 III.1.4 Tính thời gian hoàn thành vòng đua game .41 III.2 Xây dựng hệ thống AI (trí thông minh nhân tạo) game: 42 III.2.1 Các phương pháp dò đường: 42 III.2.2 AI cho xe: 45 IV Triển khai chương trình: 48 IV.1 Phân tích thiết kế: 48 IV.1.1 Sơ đồ hoạt động: .48 IV.1.2 Biểu đồ lớp: .49 IV.1.3 Biểu đồ tuần tự: 50 IV.1.4 Các lớp X-Code: 51 IV.2 Triển khai OpenFeint: 52 IV.2.1 Đăng kí tài khoản: .52 IV.2.2 Tích hợp OpenFeint API vào game: 54 CÀI ĐẶT VÀ THỬ NGHIỆM 56 I Cài đặt: .56 I.1 Hệ thống điều khiển của xe: 56 I.1.1 Xe tăng tốc: 56 I.1.2 Khi hãm phanh: 56 I.1.3 Rẽ trái hoặc rẽ phải: 56 I.1.4 Khi không có điều khiển: .57 I.1.5 Cập nhật tọa đợ sau mỡi lần tính toán: 57 I.2 Thiết lập camera: .57 I.3 Sử dụng ảnh để xét va chạm game: 57 I.3.1 Cấp phát mảng va chạm: 58 I.3.2 Lấy từng pixel màu ảnh: .58 I.3.3 Chuyển pixel màu chuyển thành dữ liệu mảng va chạm 58 ii Mục lục iii I.4 Dữ liệu đường đua: 59 I.5 Tính toán xe tự chạy: 59 I.5.1 Tính khoảng cách theo trục tọa độ X và Y giữa xe và điểm kiểm tra: 59 I.5.2 Tính góc xe và đường nối điểm checkpoint (điểm kiểm tra) 60 I.5.3 Điều khiển xe: 60 I.5.4 Chuyển sang checkpoint kế tiếp: 61 I.6 Tính thời gian mỡi vịng đua: 61 I.6.1 Kiểm tra điểm checkpoint 62 I.6.2 Cập nhật thời gian: .62 II Thử nghiệm chương trình: 63 II.1.1 Menus: 63 II.1.2 Bắt đầu cuộc đua: 65 II.1.3 Leaderboard: 67 KẾT LUẬN 69 [1] David M Bourg, Gleen Seeman AI for Game Developers O’Reilly Publisher, Chương 14 .71 [2] Sams Publishing, Programming in Objective-C, 2004 71 [3] Nguyễn Thanh Bình Phân tích và thiết kế hướng đối tượng Khoa CNTT Đại học Bách Khoa Đà Nẵng 71 [4] Trang web: http://developer.apple.com/library/ios 71 [5] Trang web: http://www.cocos2d-iphone.org/forum/ .71 Mục lục iv DANH MỤC HÌNH ẢNH CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .9 HÌNH II.3-1: CÔNG CỤ LEAK 21 HÌNH II.3-2: DEBUG TRONG LEAK 21 HÌNH III.1-3: BIỂU TƯỢNG CỦA COCOS2D TRÊN NỀN TẢNG IOS22 HÌNH III.3-4: SƠ ĐỒ KẾ THỪA CÁC LỚP THÔNG DỤNG 25 HÌNH III.3-5: VỊ TRÍ SPRITE TRONG MÀN HÌNH .27 HÌNH III.3-6: MENU DƯỚI DẠNG TEXT 28 HÌNH IV.1-7: BIỂU TƯỢNG CỦA OPENFEINT 30 HÌNH IV.2-8: GIAO DIỆN OPENFEINT 31 HÌNH I.3-9: VÒNG ĐỜI CỦA MỘT ỨNG DỤNG 33 HÌNH II.1-10: GAME ĐUA XE ĐẦU TIÊN .34 HÌNH II.1-11: GAME POLE POSITION 34 HÌNH II.1-12: GAME MARIO KART 35 HÌNH II.1-13: GAME GRAM TURISMO 35 HÌNH III.1-14: VỊ TRÍ CỦA XE TRONG HỆ TRỤC TỌA ĐỘ .36 HÌNH III.1-15: TÍNH VỊ TRÍ CỦA XE .37 HÌNH III.1-16: VỊ TRÍ CANH GIỮA MÀN HÌNH 38 HÌNH III.1-17: HÌNH ẢNH THỰC VÀ HÌNH ẢNH CHỨC NĂNG CỦA ĐƯỜNG ĐUA 39 HÌNH III.1-18: MÔ TẢ ĐƯỜNG ĐUA .39 HÌNH III.1-19: VA CHẠM CỦA XE VỚI BÊN NGOÀI ĐƯỜNG ĐUA 40 HÌNH III.1-20: ĐIỂM CHECKPOINT TRONG GAME 41 HÌNH III.2-21: ĐƯỜNG CHẠY CỦA XE 42 HÌNH III.2-22: SỬ DỤNG ĐIỂM CHECKPOINT 43 HÌNH III.2-23: SỬ DỤNG DÒ ĐƯỜNG 44 HÌNH III.2-24: MÔ PHỎNG ĐƯỜNG ĐUA 44 HÌNH III.2-25: NHỮNG VỊ TRÍ CỦA XE 45 HÌNH III.2-26: GÓC XOAY CỦA XE .46 HÌNH III.2-27: THUẬT TOÁN XỬ LÝ CỦA XE 47 HÌNH IV.1-28: SƠ ĐỒ HOẠT ĐỘNG .48 Mục lục HÌNH IV.1-29: SƠ ĐỒ LỚP 49 HÌNH IV.1-30: SƠ ĐỒ TUẦN TỰ 50 HÌNH IV.1-31: CÁC LỚP SCENE .51 HÌNH IV.1-34 .51 HÌNH IV.1-32: CÁC LỚP LAYER .51 HÌNH IV.1-33: CÁC LỚP CHÍNH TRONG GAME 51 HÌNH IV.2-35: THÔNG TIN GAME TRÊN OPENFEINT .52 HÌNH IV.2-36: GIAO DIỆN TẠO LEADERBOARD .53 HÌNH IV.2-37: GIAO DIỆN QUẢN LÝ LEADERBOARD 53 HÌNH IV.2-38: FRAMEWORK CHO OPENFEINT .54 HÌNH IV.2-39: THIẾT LẬP CHO PROJECT 54 HÌNH IV.2-40: PHƯƠNG THỨC TRONG FILE HEADER 55 HÌNH IV.2-41: KHỞI TẠO OPENFEINT 55 HÌNH I.5-42: TỌA ĐỘ TRONG COCOS2D VÀ PHOTOSHOP 60 HÌNH I.6-43: MENU CHÍNH .63 HÌNH I.6-44: MENU TÙY CHỌN .63 HÌNH I.6-45: THÔNG TIN GAME 64 HÌNH I.6-46: LỰA CHỌN ĐƯỜNG ĐUA 64 HÌNH I.6-47: KẾT QUẢ CUỘC ĐUA .65 HÌNH I.6-48: BẮT ĐẦU GAME 65 HÌNH I.6-49: ĐUA XE VỚI BOT .66 HÌNH I.6-50: ĐUA MỘT NGƯỜI 66 HÌNH I.6-51: KẾT NỐI BẠN BÈ .67 HÌNH I.6-52: DANH SÁCH ĐƯỜNG ĐUA 67 HÌNH I.6-53: DANH SÁCH NGƯỜI ĐIỂM CAO 68 HÌNH I.6-54: GAME CHANNEL 68 v Mục lục vi DANH MỤC VIẾT TẮT VÀ THUẬT NGỮ Thuật ngư Định nghĩa Ghi chu AI Artificial Intelligence – Trí thông minh nhân tạo CCNode Lớp bản Cocos2D CCSprite Lớp để tạo nhân vật game CCLayer Lớp để chứa đối tượng Không thể trực tiếp hiển thị cần hiển thị màn hình CCScene Lớp để hiển thị tất cả đối tượng màn hình CCLabel Lớp để tạo một nhãn Cocos2D CCMenu Lớp để tạo menu Checkpoint Điểm kiểm tra Cocos2D 2D Game Framework iOS Dashboard Bảng điều khiển của một người chơi OpenFeint Framework Là tập thư viện lớp để lập trình viên sử dụng FPS Frame Per Second - Số khung hình một giây id Kiểu trả về mặc định của Tương đương với void* Objective C C++ iOS Hệ điều hành thiết bị iPhone, iPod Touch, iPad của Apple NAA Non Access Area – Vùng không được phép vào Memory Leak Rị rỉ bợ nhớ Objective C Ngơn ngữ sử dụng Mục lục vii dòng máy của Apple OpenFeint Dịch vụ chia sẻ thông tin giữa người chơi Leaderboard Bảng tổng kết những người có số điểm cao SDK Software Development Kit Singleton Một mẫu Pattern Track Đường đua X-Code Chương trình để viết ứng dụng dịng máy MAC Tập hợp những cơng cụ để lập trình thiết bị hay nền tảng nào đó Design Hình nền của game Xây dựng game Racing hệ điều hành iOS I.1.4 Khi không có điều khiển: SpeedDecay là gia tốc hãm của xe, không có điều khiển thì mặc định tốc độ của xe chậm dần đều đến dừng hẳn .I.1.5 Cập nhật tọa độ sau mỡi lần tính tốn: float carX = -sin([car rotation]*(M_PI/180))*car.speed; float carY = -cos([car rotation]*(M_PI/180))*car.speed; car.position = ccp(car.position.x + carX, car.position.y + carY); carX và carY là khoảng cách mà xe được theo trục X và trục Y .I.2 Thiết lập camera: Trong game điều cần thiết là phải dịch chuyển camera di chuyển theo xe Điều đó có nghĩa là xe phải được nằm giữa màn hình Hàm có tác dụng là đảm bảo cho xe nằm vùng có thể nhìn thấy được và di chuyển xe thì khung nhìn di chuyển theo .I.3 Sử dụng ảnh để xét va chạm game: Việc sử dụng ảnh tuân thủ theo những bước sau đây: SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 57 Xây dựng game Racing hệ điều hành iOS I.3.1 Cấp phát mảng va chạm: Collision image được khơi tạo dựa vào tên của hình ảnh có resource (tài nguyên) của chương trình Mảng collisionMap được khơi tạo vùng nhớ có độ lớn là kích thước tính theo pixel của hình ảnh Vùng nhớ được cấp phát có giá trị khơi tạo bằng cho tất cả phần tử .I.3.2 Lấy từng pixel màu của ảnh: I.3.3 Chuyển pixel màu chuyển thành dữ liệu mảng va chạm Duyệt hết pixel alpha bằng là vùng không được phép vào (NAA – Non Access Area) sau gán giá trị xong cho mảng collisionMap thì có thể giải phóng đối tượng imageData khơi tạo SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 58 Xây dựng game Racing hệ điều hành iOS I.4 Dư liệu đường đua: Dữ liệu đường đua quan trọng gồm có tên của đường đua (trackname), và tọa độ điểm checkpoint .I.5 .I.5.1 Tính tốn xe tự chạy: Tính khoảng cách theo trục tọa độ X Y giữa xe điểm kiểm tra: dx = db[current_track].checkpoint[next_checkpoint].x - car.position.x; dy = db[current_track].checkpoint[next_checkpoint].y - (TRACK_HEIGHT car.position.y); Ở vì tọa độ thiết bị khác với tọa độ được định ảnh nên phải chuyển tọa độ được định ảnh về tọa độ của thiết bị để xử lý SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 59 Xây dựng game Racing hệ điều hành iOS Hình I.5-42: Tọa độ Cocos2D Photoshop .I.5.2 Tính góc của xe đường nối điểm checkpoint (điểm kiểm tra) .I.5.3 Điều khiển xe: • Đầu tiên cần phải tính góc lệch da = angle - car.rotation * M_PI / 180; − Ở tùy thuộc vào góc lệch (da) mà định xe rẽ trái rẽ phải SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 60 Xây dựng game Racing hệ điều hành iOS − Nên cho xe chạy nhanh có thể những đoạn đường thẳng và tốc độ và góc lớn thì nên phanh lại .I.5.4 Chuyển sang checkpoint kế tiếp: • Đầu tiên cần phải tính khoảng cách đến checkpoint gần distance = sqrtf( dx *dx + dy * dy ); − Nếu khoảng cách bé một khoảng định thì chuyển sang checkpoint .I.6 Tính thời gian mỡi vịng đua: Thời gian được tính từ bắt đầu mợt vịng đua đến sớ vịng đua được lớn tởng sớ vịng đua và điều kiện bắt buộc là người chơi phải qua hết điểm checkpoint đã định SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 61 Xây dựng game Racing hệ điều hành iOS I.6.1 Kiểm tra điểm checkpoint Điểm checkpoint được tính bắt đầu từ và được tăng đến điểm ći cùng Mợt vịng đua kết thúc next_checkpoint bằng và current_checkpoint nằm điểm cuối cùng Khi next_checkpoint có tọa độ bằng 1, tức rơi vào điểm cuối cùng thì next_checkpoint trơ về giá trị ban đầu bằng để tiếp tục vòng đua mới .I.6.2 Cập nhật thời gian: Cập nhật thời gian chưa đua được vòng nào (currentlap = 0) và cuộc đua được bắt đầu (isRacing = YES) Hàm updateRacingInfor được cập nhật liên tục sau khoảng thời gian (dt), thống kê thời gian (dt) ta thu được thời gian hoàn thành vòng đua SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 62 Xây dựng game Racing hệ điều hành iOS II Thử nghiệm chương trình: II.1.1 Menus: Hình I.6-43: Menu Hình I.6-44: Menu tùy chọn SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 63 Xây dựng game Racing hệ điều hành iOS Hình I.6-45: Thông tin game Hình I.6-46: Lựa chọn đường đua SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 64 Xây dựng game Racing hệ điều hành iOS Hình I.6-47: Kết cuộc đua .II.1.2 Bắt đầu đua: Hình I.6-48: Bắt đầu game SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 65 Xây dựng game Racing hệ điều hành iOS Hình I.6-49: Đua xe với bot Hình I.6-50: Đua một người SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 66 Xây dựng game Racing hệ điều hành iOS II.1.3 Leaderboard: Hình I.6-51: Kết nối bạn bè Hình I.6-52: Danh sách đường đua SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 67 Xây dựng game Racing hệ điều hành iOS Hình I.6-53: Danh sách người điểm cao Hình I.6-54: Game channel SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 68 Xây dựng game Racing hệ điều hành iOS CHƯƠNG KẾT LUẬN Đề tài đã giải được một phần vấn đề về tiếp cận với việc viết ứng dụng hệ điều hành iOS Tuy nhiên để cung cấp đến tay người dùng một sản phẩm có chất lượng thì cần phải nâng cấp và cập nhật nữa Game có một hình thức tính giờ, có thể xem là hạn chế của game vì thiếu tính hấp dẫn đối với người chơi Có thể cải tiến game những phiên bảng bằng cách cập nhật thêm hệ thống vật phẩm (item) tăng tốc, dầu nhớt, đạn, khiên… Cùng với đó cần thêm vào những mục chơi, những cách chơi mới hấp dẫn chế độ chơi theo cốt truyện (Story Mode) chế độ chơi nhiều người chơi cùng một lúc (Realtime Multiplayer) AI game tương đối đơn giản nhiên có thể viết nâng cao bằng cách dùng mạng nơ ron nhân tạo (Artificial Neural Network) với đầu vào là vị trí của xe, tốc độ và đầu là lệnh điều khiển xe rẽ trái, rẽ phải, thẳng, lùi hay thực hiện những hành động khác Với định hướng viết AI dùng mạng nơ ron nhân tạo hoàn toàn có thể phát triển đề tài không là một game đơn giản mà có thể trơ thành chương trình điều khiển robot mặt đất Cocos2D là một framework mạnh việc ứng dụng framework này có thể xem là biện pháp tối ưu đối với việc phát triển game mà không phải tốn nhiều chi phí Đặc biệt framework này hoàn toàn mơ đồng nghĩa với việc có thể sử dụng mã nguồn một cách tùy ý, điều này giúp lập trình viên tiết kiệm thời gian có thể chỉnh sửa cho phù hợp nhu cầu sử dụng mà không phải viết lại tất cả mã nguồn của Cocos2D SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 69 TÀI LIỆU THAM KHẢO [1] David M Bourg, Gleen Seeman AI for Game Developers O’Reilly Publisher, Chương 14 [2] Sams Publishing, Programming in Objective-C, 2004 [3] Nguyễn Thanh Bình Phân tích và thiết kế hướng đới tượng Khoa CNTT Đại học Bách Khoa Đà Nẵng [4] Trang web: http://developer.apple.com/library/ios [5] Trang web: http://www.cocos2d-iphone.org/forum/ SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 71 TÓM TẮT ĐỒ ÁN TỐT NGHIỆP Đề tài: Xây dựng game Racing hệ điều hành iOS sử dụng Cocos2D game engine và OpenFeint API Bối cảnh đề tài: Trên gian hàng AppStore có nhiều trị chơi tḥc thể loại đua xe nhiên phần lớn số đó là những game 3D với cách chơi tương đối phức tạp Vì vậy đồ án lần này tìm hiểu những phương pháp và kĩ thuật mới với mục tiêu tạo một game đua xe với cách chơi đơn giản nền 2D với cách chơi đơn giản, đồng thời ứng dụng tính gia tốc kế của thiết bị để mơ rộng khả tương tác với người chơi Đề tài đã lựa chọn Cocos2D để làm nền tảng cho việc xây dựng game và mơ rộng việc giao tiếp với người chơi khác bằng cách sử dụng OpenFeint API Nhưng vấn đề cần giải quyết: − Ngôn ngữ Objective C − Quản lý bộ nhớ Objective C hệ điều hành iOS − Tìm hiểu cách thức hoạt động (mẫu singleton) và sử dụng Cocos2D − Cách thức viết game hệ điều hành iOS − Các phương pháp dò đường game đua xe, triển khai để người dùng đua với máy − Kết nối game với module OpenFeint Client API Kết đồ án: Những vấn đề đã giải quyết: − Tìm hiểu về ngôn ngữ Objective C − Tìm hiểu và ứng dụng Cocos2D và OpenFeint API để xây dựng game − Các cách viết AI (trí thông minh nhân tạo) game, cụ thể là game thuộc thể loại đua xe (Racing) theo góc nhìn từ xuống − Triển khai một mô hình viết AI cho game racing theo checkpoint Những vấn đề hạn chế: − Quản lý bộ nhớ chưa tối ưu − Chưa viết được AI cho game sử dụng mạng nơ ron nhân tạo (Artificial neural network) − Chưa triển khai được mô hình nhiều người chơi thời gian thực (Real-time multiplayer) SVTH: Phan Đinh Vỹ Lớp: 06T3 Khoa: Công Nghệ Thông Tin – Đại học Bách Khoa Đà Nẵng 72

Ngày đăng: 20/04/2021, 23:40

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

    • .I Giới thiệu bối cảnh đề tài:

    • .II Mục tiêu cần đạt được:

    • .III Ý nghĩa thực tiễn:

    • .IV Nội dung đề tài:

    • CƠ SỞ LÝ THUYẾT

      • .I Objective C:

        • .I.1. Lịch sử:

        • .I.2. Đặc điểm cơ bản:

        • .I.3. Cú pháp:

          • .I.3.1. Interface và implement:

          • .I.3.2. Category

          • .I.3.3. Kiểm soát Exception:

          • .I.3.4. Properties:

          • .I.3.5. Hàm tạo – Contructor:

          • .I.3.6. Quản lý bộ nhớ:

          • .II QUẢN LÝ BỘ NHỚ.

            • .II.1. Cấu trúc bộ nhớ

              • .II.1.1. Cấu trúc của vùng nhớ Stack:

              • .II.1.2. Cấu trúc của vùng nhớ Heap:

              • .II.2. Rò rỉ bộ nhớ (Memory Leaks)

                • .II.2.1. Định nghĩa:

                • .II.2.2. Ảnh hưởng của rò rỉ bộ nhớ:

                • .II.2.3. Một số trường hợp rò rỉ bộ nhớ:

                • .II.3. Làm thế nào để tránh bị rò rỉ bộ nhớ:

                  • .II.3.1. Nguyên tắc:

                  • .II.3.2. Các cách phát hiện rò rỉ bộ nhớ:

                  • .II.3.3. Sử dụng công cụ để kiểm tra.

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

Tài liệu liên quan