XÂY DỰNG GAME TRÊN HỆ ĐIỀU HÀNH iOS SỬ DỤNG COCOS2D GAME ENGINE VÀ OPENFEINT API

74 40 0
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: III Ý nghĩa thực tiễn: .10 IV Nội dung đề tài: 10 CHƯƠNG 1: 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 của vùng nhớ Stack: 15 II.1.2 Cấu trúc của 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 của 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 thành phần của OpenGL ES: 22 III.2.5 Lập trình: 23 III.2.6 Được sự ủng hộ của 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 i III.3.6 CCSprite: 27 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 CHƯƠNG 2: 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 III.1.1 Tính toán vị trí của xe dựa vào vector vận tốc: 36 III.1.2 Hệ thống vật lý cho xe: 38 III.1.3 Thiết lập cho camera: .38 III.1.4 Xét va chạm game: .39 III.1.5 Tính thời gian hoàn thành vòng đua game 40 III.2 Xây dựng hệ thống AI (trí thông minh nhân tạo) game: 41 III.2.1 Các phương pháp dò đường: 41 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 CHƯƠNG 3: 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 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 tố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 của ảnh: 58 ii Mục lục iii I.3.3 Chuyển pixel màu chuyển thành dữ liệu mảng va chạm .58 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 của 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 VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 69 I Kết luận: 69 II Định hướng phát triển: .69 Mục lục iv DANH MỤC HÌNH ẢNH Chương 1: CƠ SỞ LÝ THUYẾT HÌNH II.3-1: CÔNG CỤ LEAK 21 Hình II.3-2: Debug Leak 21 Hình III.1-1: Biểu tượng của Cocos2D nền tảng iOS 22 Hình III.3-1: Sơ đồ kế thừa lớp thông dụng 25 Hình III.3-2: Vị trí Sprite màn hình .27 Hình III.3-3: Menu dưới dạng text 28 Hình IV.1-1: Biểu tượng của OpenFeint 30 Hình IV.2-1: Giao diện OpenFeint 31 CHƯƠNG 2: XÂY DỰNG GAME 32 Hình I.3-1: Vòng đời của mợt ứng dụng .33 Hình II.1-1: Game đua xe đầu tiên 34 Hình II.1-2: Game Pole Position 34 Hình II.1-3: Game Mario Kart .35 Hình II.1-4: Game Gram Turismo 35 Hình III.1-1: Vị trí của xe hệ trục tọa độ .36 Hình III.1-2: Tính vị trí của xe 37 Hình III.1-3: Vị trí canh giữa màn hình 38 Hình III.1-4: Hình ảnh thực và hình ảnh chức của đường đua 39 Hình III.1-5: Mô tả đường đua 39 Hình III.1-6: Va chạm của xe với bên ngoài đường đua .40 Hình III.1-7: Điểm Checkpoint game 41 Hình III.2-1: Đường chạy của xe 42 Hình III.2-2: Sử dụng điểm checkpoint 43 Hình III.2-3: Sử dụng dò đường 44 Hình III.2-4: Mô phỏng đường đua .44 Hình III.2-5: Những vị trí của xe 45 Hình III.2-6: Góc xoay của xe .46 Hình III.2-7: Thuật toán xử lý của xe 47 Hình IV.1-1: Sơ đồ hoạt động 48 Hình IV.1-2: Sơ đồ lớp 49 Hình IV.1-3: Sơ đồ tuần tự 50 Hình IV.1-7 .51 Hình IV.2-1: Thông tin game OpenFeint 52 Hình IV.2-2: Giao diện tạo Leaderboard .53 Hình IV.2-3: Giao diện quản lý Leaderboard 53 Hình IV.2-4: Framework cho OpenFeint .54 Hình IV.2-5: Thiết lập cho Project 54 Hình IV.2-6: Phương thức file header 55 Hình IV.2-7: Khởi tạo OpenFeint 55 Hình I.5-1: Tọa độ Cocos2D và Photoshop 60 CHƯƠNG 3: CÀI ĐẶT VÀ THỬ NGHIỆM 56 Hình I.6-1: Menu chính 63 Hình I.6-2: Menu tùy chọn 63 Hình I.6-3: Thông tin game 64 Hình I.6-4: Lựa chọn đường đua 64 Mục lục v Hình I.6-5: Kết quả cuộc đua 65 Hình I.6-6: Bắt đầu game .65 Hình I.6-7: Đua xe với bot .66 Hình I.6-8: Đua một người 66 Hình I.6-9: Kết nối bạn bè .67 Hình I.6-10: Danh sách đường đua 67 Hình I.6-11: Danh sách người điểm cao 68 Hình I.6-12: Game channel 68 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 sẽ 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 sẽ phải được nằm giữa màn hình Hàm có tác dụng là sẽ đả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 sẽ di chuyển theo .I.3 Sử dụng ảnh để xét va chạm game: Việc sử dụng ảnh sẽ 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 58 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 từng 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 59 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 60 Xây dựng game Racing hệ điều hành iOS Hình Tính tốn xe tự chạy:-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 61 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 ḅ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 62 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à sẽ được tăng đến điểm cuối cùng Mợt vòng đua sẽ 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 sẽ 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à c̣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 sẽ 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 63 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 Thử nghiệm chương trình:-43: Menu Hình Thử nghiệm chương trình:-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 64 Xây dựng game Racing hệ điều hành iOS Hình Thử nghiệm chương trình:-45: Thông tin game Hình Thử nghiệm chương trình:-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 65 Xây dựng game Racing hệ điều hành iOS Hình Thử nghiệm chương trình:-47: Kết cuộc đua .II.1.2 Bắt đầu đua: Hình Thử nghiệm chương trình:-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 66 Xây dựng game Racing hệ điều hành iOS Hình Thử nghiệm chương trình:-49: Đua xe với bot Hình Thử nghiệm chương trình:-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 67 Xây dựng game Racing hệ điều hành iOS II.1.3 Leaderboard: Hình Thử nghiệm chương trình:-51: Kết nối bạn bè Hình Thử nghiệm chương trình:-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 68 Xây dựng game Racing hệ điều hành iOS Hình Thử nghiệm chương trình:-53: Danh sách người điểm cao Hình Thử nghiệm chương trình:-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 69 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 70 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 sẽ 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: 03/05/2020, 18:58

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

  • Đang cập nhật ...

Tài liệu liên quan