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

(LUẬN văn THẠC sĩ) lập trình game trên điện thoại di động bằng nền tảng COCOS2D IPHONE

51 3 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

Thông tin cơ bản

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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỖ QUANG DƯƠNG LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội, 2016 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ ĐỖ QUANG DƯƠNG LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE Ngành: Công nghệ thông tin Chuyên ngành: Truyền liệu Mạng máy tính LUẬN VĂN THẠC SĨ CƠNG NGHỆ THƠNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRẦN THỊ MINH CHÂU Hà Nội, 2016 TIEU LUAN MOI download : skknchat@gmail.com LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, không chép Các số liệu, kế t quả nêu Luận văn là trung thực và chưa từng đươ ̣c công bố bấ t kỳ công triǹ h nào khác Tôi xin cam đoan rằ ng các trích dẫn Luận văn đã đươ ̣c chỉ rõ nguồ n gố c Ho ̣c viên thực hiện Luận văn Đỗ Quang Dương TIEU LUAN MOI download : skknchat@gmail.com MỤC LỤC LỜI CAM ĐOAN CHƯƠNG GIỚI THIỆU BÀI TOÁN 1.1 Hồn cảnh tốn: .4 1.2 Tình hình cơng nghệ giới: .4 1.3 Phát biểu toán CHƯƠNG MỘT SỐ FRAMEWORK LẬP TRÌNH GAME DI ĐỘNG .8 2.1 Cocos2d 2.2 Unity 10 2.3 SpriteKit 10 2.4 Các tảng khác .11 CHƯƠNG COCOS2D-IPHONE .14 3.1 Cấu trúc chương trình viết Cocos2d-iPhone .14 3.2 Các module thư viện lập trình Cocos2d-iPhone [8] 15 3.3 Quản lý đối tượng game 15 3.4 Quản lý hành động 16 3.5 Hiệu ứng vật lý 17 3.6 Hiệu ứng đặc biệt 18 3.7 Hiệu ứng âm 20 CHƯƠNG GẮN QUẢNG CÁO TRONG GAME DI ĐỘNG 21 4.1 Tổng quan 21 4.2 Các nhà cung cấp quảng cáo di động 21 4.3 Các hình thức tích hợp quảng cáo di động 23 CHƯƠNG SỬ DỤNG FRAMEWORK COCOS2D-IPHONE 27 5.1 Các game xây dựng từ Cocos2d-iPhone 27 5.2 Game 1: Xếp hình (Tetrix) 28 5.3 Game 2: Plane .41 CHƯƠNG KẾT LUẬN 47 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE DANH MỤC CÁC BẢNG Bảng 2.1:so so sánh framework lập trình game di động 12 (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE DANH MỤC CÁC HÌNH VẼ Hiǹ h 3.1:Giao diện phần mềm Spine 17 Hiǹ h 3.2: Giao diện công cụ Particle Designer .19 Hình 4.1:Một số nhà cung cấp dịch vụ quảng cáo Thiết bị di động 21 Hiǹ h 4.2:Quảng cáo dạng Banner Ads 24 Hình 4.3: Quảng cáo dạng Interstitial Ads 25 Hiǹ h 4.4:Quảng cáo dạng In-app Purchase 26 Hình 5.1: Game Tetrix 27 Hiǹ h 5.2: Game Line 98 27 Hiǹ h 5.3: Game Recuse Egg 28 Hình 5.4: Game Plane 28 Hiǹ h 5.5: Game KidGame .28 Hình 5.6: Giao diện game Tetrix 29 Hiǹ h 5.7: Các hình khối thơng thường 30 Hình 5.8: hình khối mở rộng 30 Hiǹ h 5.9: Ăn điểm lên Level 32 Hình 5.10: Gắn quảng cáo dạng Banner 39 Hình 5.11: Giao diện game Plane 41 Hiǹ h 5.12: Giao diện game Plane 43 Hình 5.13: Giao diện trước bật cửa sổ quảng cáo 46 Hiǹ h 5.14: Giao diện bật quảng cáo 46 (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE CHƯƠNG GIỚI THIỆU BÀI TỐN 1.1 Hồn cảnh tốn: Năm 2013, game di động Flappy Bird tác giả Nguyễn Hà Đông gây tiếng vang lớn cho giới lập trình viên Việt Nam toàn Thế giới Vào tháng năm 2014, game đứng đầu danh sách download nhiều Apple Store, với hàng chục triệu download Game nhanh chóng làm cho tác giả Nguyễn Hà Đơng trở lên tiếng tồn Thế giới, kiếm số tiền theo dự đoán khoảng 50.000 USD/ngày Doanh thu giúp Nguyễn Hà Đông thời gian ngắn trở thành tỷ phú Trong đó, với góc nhìn lập trình viên, game Flappy Bird game có đồ hoạ đơn giản, kỹ thuật chơi đơn giản khơng khó mặt kỹ thuật để tạo game tương tự Game nhân bản, clone với nhiều phiên ăn theo Tất forum lập trình game, trang hướng dẫn lập trình game có viết hướng dẫn tạo game tương tự Flappy Birds, nhiều tảng khác Cocos2d, Unity, Game Box, … Thơng thường với lập trình viên học, khoảng đến ngày để tạo game tương tự Điều làm cho lập trình viên tồn giới đổ xơ vào học lập trình game di động với hi vọng đạt kết Flappy Bird Game Flappy Bird cho thấy lập trình viên đơn lẻ, với chi phí nhỏ, khơng cần th hạ tầng máy chủ, khơng cần có đội ngũ đồ hoạ hỗ trợ, tạo game có giá trị hàng tỷ đồng Việt Nam, qua thúc đẩy lập trình viên tồn Việt Nam học xây dựng game di động Với học viên, không nằm ngoại lệ, có nhu cầu tìm học tảng lập trình game cho di động để tận dụng thời gian rảnh rỗi với hi vọng kiếm nguồn thu nhập thụ động từ viết game 1.2 Tình hình cơng nghệ giới: Hiện có nhiều tảng lập trình game di động, đại đa số miễn phí Vậy tảng lập trình game di động gì: cơng cụ hỗ trợ lập trình viên lập trình game di động public cho người dùng nhanh chóng, gồm: - Bộ thư viện lập trình: tập hợp class hỗ trợ việc lập trình game di động, gồm class quản lý đối tượng game, quản lý action (hành động), mô tượng vật lý va chạm, lực quán tính, ma sát, trọng lượng, mô âm thanh, ánh sáng, hiệu ứng đặc biệt mưa, lửa, khói, - Bộ cơng cụ đồ hoạ giúp việc lập trình game di động nhanh chóng, export game thành file chạy, tương thích với tảng iOS hay Android, Windows Phone, (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE Vậy với lập trình viên đơn lẻ, khơng để lập trình game di động, cần tìm framwork lập trình game thoả mãn yêu cầu: - Framework lập trình game di động, tạo game cho tàng iOS, Android - Frameword phải có cơng cụ hỗ trợ kiếm tiền từ việc bán đồ hay quảng cáo game - Framework phải miễn phí - Frameword hỗ trợ lập trình game 2D (vì với game 3D, địi hỏi kiến thức nhiều phải có đội ngũ hỗ trợ đồ hoạ lớn, không phù hợp với lập trình viên cá nhân) - Framwork phải có cộng đồng phát triển lớn, để tra cứu, hỏi nhằm sửa lỗi - Framework phải có cơng cụ hỗ trợ đồ hoạ, giúp việc tạo game dễ dàng, nhanh chóng Học viên lập trình viên nêu trên, trình tìm hiểu, học viên tìm tảng thoả mãn yêu cầu nên Đó tảng Cocos2d-iPhone 1.3 Phát biểu tốn Với lập trình viên bình thường, bắt tay vào học lập trình game cho thiết bị di động thơng minh cần tìm hiểu cơng cụ gì? Cần kiến thức cách làm nào? Đây câu hỏi mà học viên gặp bắt đầu học lập trình game Dưới học viên xin tóm tắt lại điểm việc lập trình game di động: a Tìm hiểu tảng lập trình game di động Hiện có nhiều tảng lập trình game 2D thiét bị di động, đại đa số chúng miễn phí Có số framework có phí Unity Unreal, chi phí cho framwork đắt (như Unity có phí lên đến 1500$/hệ điều hành/1bản) Tại lại game 2D: việc xây dựng game 2D thường đỡ tốn công sức nhiều so với game 3D Game 3D thường khơng phải dành cho lập trình viên nghiệp dư không chuyên làm game Để làm game 3D thường lập trình viên phải có hiểu biết sâu sắc việc dựng hình 3D, thuật tốn tạo hình khối, cơng cụ lập trình game 3D thường phức tạp, đòi hỏi nhiều thời gian để học làm chủ công cụ Với game 2D, lập trình viên phát triển game mà khơng cần nhiều đội ngũ hỗ trợ nhân viên đồ hoạ, nhân viên âm thanh, Game 2D phù hợp với lập trình viên nghiệp dư (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE b Cách thức tìm kiếm doanh thu từ Game di động Có cách để tìm kiếm doanh thu từ Game di động: - Bán game di động: Công ty lập trình viên lập trình game bán chợ ứng dụng thông dụng App Store Apple Play Store Google, Game thường có giá từ 1$ trở lên Việc kiếm tiền từ cách khó, địi hỏi game xây dựng phải hay thường cơng ty phát hành game phải có tiếng tăm thị trường - Bán đồ game: cách thức phổ biến Công ty làm game di động, thường họ tạo game có chất lượng tốt, kích thích người sử dụng mua vật phẩm game, ví dụ loại vũ khí, hiệu ứng đặc biệt, Cách thường phù hợp với game có chất lượng tốt, phức tạp có khả giữ người chơi thời gian dài - Quảng cáo game: cách thức phổ biến game di động thuộc loại đơn giản nội dung Với cách này, lập trình viên thường sử dụng thư viện API công ty quảng cáo Internet Admob, Unity Ads, Apple Ads để gắn vào game, giúp hiển thị quảng cáo game Lập trình viên trả tiền cho hiển thị quảng cáo game click vào quảng cáo người sử dụng c Tìm hiểu cơng cụ hỗ trợ Hầu hết tảng miễn phí thường có cơng cụ hỗ trợ, địi hỏi lập trình viên phải tìm hiểu nhiều để tìm cơng cụ hỗ trợ thơng dụng, dễ sử dụng, giúp việc lập trình thuận lợi, nhanh chóng Các cơng cụ gồm: - IDE: cơng cụ lập trình, cho phép biên dịch code thành mã nhị phân, thực thi thiết bị di động Các IDE cịn hỗ trợ việc export file nhị phân tương thích với tảng di động, hỗ trợ việc upload file lên chợ ứng dụng - Công cụ hỗ trợ việc tạo chuyển động phức tạp: thông thường chuyển động phức tạp không nhân viên đồ hoạ tạo từ đầu, họ tạo thành phần đối tượng (như chân, tay, đầu, mình, đi, cánh, ) riêng Sau tuỳ theo chuyển động để tạo hình ảnh động tương ứng, từ việc kết hợp vị trí phận Cơng cụ hỗ trợ việc tạo chuyển động phức tạp giúp việc tạo chuyển động nhanh chóng hơn, đồng thời cho phép kết xuất file theo định dạng mà tảng lập trình game di động hỗ trợ - Công cụ hỗ trợ tạo chơi hay đồ: với game có đồ hoạ phức tạp, việc tạo chơi hay đồ hoàn tồn code vơ phức tạp nhiều cơng sức, vậy, cơng cụ tạo đồ (map) đời, hỗ trợ nhiều cho lập trình viên Cơng cụ tạo đồ cách kéo (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE - thả thành phần đồ, cho phép lập trình viên nhìn cách trực quan đồ này, giúp việc lập trình nhanh chóng hiệu Cơng cụ hỗ trợ việc tạo hiệu ứng đặc biệt lửa, khói, mưa, tuyết Thường hiệu ứng đặc biệt có khoảng 30 thuộc tính, việc lập trình tạo hiệu ứng khó nhiều thời gian để tinh chỉnh Công cụ hỗ trợ tạo hiệu ứng đặc biệt giúp lập trình viên nhìn thấy hiệu thay đổi tham số Qua phân tích nêu trên, cho thấy việc tạo game di động 2D hay tốn nhiều công sức lập trình viên, địi hỏi phải tìm hiểu khối lượng cơng việc khơng nhỏ Đề tài tìm hiểu tổng quan việc xây dựng game cho thiết bị di động thông minh, khảo sát số framework hỗ trợ, cách thức tìm kiến doanh thu từ game di động, từ đề tài áp dụng cho việc xây dựng game di động để tạo thu nhập từ sản phẩm Nội dung đề tài gồm nội dung sau đây: - Giới thiệu tổng quan framework lập trình game di động lý chọn Cocos2d-iPhone để tìm hiểu - Cocos2d-iPhone module framework, cơng cụ hỗ trợ lập trình viên - Tổng quan cách thức tìm kiếm thu nhập lập trình game di động - Một số ứng dụng mà học viên xây dựng Cocos2d-iPhone Trên toán mà học viên cần phải giải quyết, nội dung chi tiết có chương (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE mBannerView = [[GADBannerView initWithAdSize:kGADAdSizeSmartBannerLandscape]; alloc] // Specify the ad's "unit identifier." This is your AdMob Publisher ID mBannerView.adUnitID = ADMOB_BANNER_UNIT_ID; // Let the runtime know which UIViewController to restore after taking // the user wherever the ad goes and add it to the view hierarchy mBannerView.rootViewController = self.navController; [self.navController.view addSubview:mBannerView]; //#ifdef DEBUG // GADRequest *request = [GADRequest request]; // request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil]; //#endif // Initiate a generic request to load it with an ad [mBannerView loadRequest:[GADRequest request]]; CGSize s = [[CCDirector sharedDirector] viewSize]; CGRect frame = mBannerView.frame; off_x = 0.0f; on_x = 0.0f; switch (mBannerType) { case kBanner_Portrait_Top: (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 34 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE { off_y = -frame.size.height; on_y = 0.0f; } break; case kBanner_Portrait_Bottom: { off_y = s.height; on_y = s.height-frame.size.height; } break; case kBanner_Landscape_Top: { off_y = -frame.size.height; on_y = 0.0f; } break; case kBanner_Landscape_Bottom: { off_y = s.height; on_y = s.height-frame.size.height; } break; default: break; } frame.origin.y = off_y; frame.origin.x = off_x; mBannerView.frame = frame; (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 35 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; frame = mBannerView.frame; frame.origin.x = on_x; frame.origin.y = on_y; mBannerView.frame = frame; [UIView commitAnimations]; } -(void)showBannerView { if (mBannerView) { //banner on bottom { CGRect frame = mBannerView.frame; frame.origin.y = off_y; frame.origin.x = on_x; mBannerView.frame = frame; [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGRect frame = mBannerView.frame; frame.origin.y = on_y; (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 36 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE frame.origin.x = on_x; mBannerView.frame = frame; } completion:^(BOOL finished) { }]; } } } -(void)hideBannerView { if (mBannerView) { [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGRect frame = mBannerView.frame; frame.origin.y = off_y; frame.origin.x = off_x; mBannerView.frame = frame; } completion:^(BOOL finished) { }]; } } -(void)dismissAdView { if (mBannerView) (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 37 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE { [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGSize s = [[CCDirector sharedDirector] viewSize]; CGRect frame = mBannerView.frame; frame.origin.y = frame.origin.y + frame.size.height ; frame.origin.x = (s.width/2.0f - frame.size.width/2.0f); mBannerView.frame = frame; } completion:^(BOOL finished) { [mBannerView setDelegate:nil]; [mBannerView removeFromSuperview]; mBannerView = nil; }]; } } Kết thu hình vẽ đây: (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 38 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE Hình 5.10: Gắn quảng cáo dạng Banner 5.2.4 Nhận xét Với thư viện lập trình game Cocos2d-iPhone, việc lập trình game Tetrix đơn giản, chương trình có khoảng 5000 dịng code Nếu khơng sử dụng thư viện này, mà thực lập trình từ đầu, phức tạp, với việc thực chuyển động hay hiệu ứng mờ dần đối tượng đòi hỏi lập trình viên phải tạo nhiều thread để điều khiển Việc quản lý multi thread chương trình thường khó, nhiều cơng sức kinh nghiệm để thực Qua cho thấy tác dụng lớn việc sử dụng thư viện lập trình game (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 39 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE Trong chương trình tetrix, học viên chưa áp dụng module phức tạp Cocos2diPhone hiệu ứng vật lý, hay hiệu ứng đặc biệt, hồn thành game tiếng Nếu nghiên cứu, áp dụng thêm hiệu ứng đặc biệt làm game hấp dẫn (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 40 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 5.3 Game 2: Plane Hình 5.11: Giao diện game Plane 5.3.1 Các yêu cầu - Có chơi, người sử dụng điều khiển máy bay tránh vật cản (máy bay khác, chim, đạn bắn từ hoa, cá mập, ) ăn đồng tiền dọc đường để có đủ lượng chạy đến cuối chơi - Người sử dụng điều khiển nhân vật (máy bay hay tàu ngầm) cách chạm vào hình, di chuyển ngón tay để nhân vật chạy theo, dùng cách lắc điện thoại, để nhân vật di chuyển theo - Các đối tượng game có hoạt hình tương ứng di chuyển, ví dụ máy bay chạy cánh quạt quay, chim bay, đồng tiền (coin) xoay - Có kiểm tra va chạm, nhân vật va chạm vào kẻ thù (máy bay khác, chim, cá mập hay đạn) máu giảm giọt Khi hết máu game over - Gắn quảng cáo dạng cửa sổ bật người chơi kết thúc chơi bị game over 5.3.2 Thực yêu cầu a Nhận kiện tác động người dùng: - Với kiện chạm di chuyển ngón tay người dùng hình: tương tự game Tetrix ta thực bắt hàm TouchBegin TouchEnd - Với kiện lắc điện thoại, nghiên để điều khiển nhân vật: /////////////// (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 41 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE //Xu ly su kien nguoi dung lac tay: (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration { } //Hai su kien xu ly su kien lac tay: - (void)onEnter { [super onEnter]; [_motionManager startAccelerometerUpdates]; } - (void)onExit { [super onExit]; [_motionManager stopAccelerometerUpdates]; } b Tạo hình ảnh động cho đối tượng game - Để tạo hình ảnh động cho đối tượng game, cách đơn giản có tập ảnh liên tiếp nhau, mô tả hành động game, sau khai báo gắn chúng với Animation Frame, đoạn code sau: - (id) init { //Tạo hình ảnh đầu tiên: sprite = [CCSprite spriteWithImageNamed:@"h0.png"]; // Tạo thêm hình ảnh khác, gắn vào Frame NSMutableArray* spriteframes = [NSMutableArray array]; for(int i = 0; i < 14; i++){ NSString *str = [NSString stringWithFormat:@"h%d.png", i]; CCSpriteFrame *frame = [CCSpriteFrame frameWithImageNamed:str]; [spriteframes addObject:frame]; } (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 42 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE //Tao animatin: CCAnimation delay:0.01f]; *animation = [CCAnimation animationWithSpriteFrames:spriteframes CCActionAnimate *animationAction = [CCActionAnimate actionWithAnimation:animation]; CCActionRepeatForever animationAction]; *action = [CCActionRepeatForever actionWithAction: [action setTag:100]; [sprite runAction:action]; return self; } Hình 5.12: Giao diện game Plane c Va chạm Để kiểm tra va chạm ta cài đặt theo cách: - Cách 1, dùng thư viện mô tượng vật lý Cocos2D, Chương II Phương án có nhược điểm hiệu kém, kiểm tra va chạm mơ khó - Cách 2, đơn giản cần kiểm tra khoảng cách hai anchor point, khoảng cách mà nhỏ nửa tổng chiều dài va chạm Học viên lựa chọn cách thứ Với cách này, mã code đơn giản sau: - (BOOL) checkVacham:(CCSprite*) sprite{ (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 43 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE CGPoint postHero = heroSprite.position; CGSize sizeHero = CGSizeMake(heroSprite.contentSize.width *fabs(heroSprite.scaleX)/2, heroSprite.contentSize.height*fabs(heroSprite.scaleY)/2); CGRect rectHero = CGRectMake(postHero.x sizeHero.height, 2*sizeHero.width, sizeHero.height); - sizeHero.width, postHero.y - CGPoint postSprite = sprite.position; CGSize sizeSprite = CGSizeMake(sprite.contentSize.width * fabsf(sprite.scaleX)/2, sprite.contentSize.height * fabsf(sprite.scaleY)/2); CGRect rectSprite = CGRectMake(postSprite.x - sizeSprite.width, postSprite.y sizeSprite.height, * sizeSprite.width, * sizeSprite.height); if(!sprite.visible) return false; //Dang bien mat return CGRectIntersectsRect(rectHero, rectSprite); } 5.3.3 Gắn quảng cáo Học viên lựa chọn phương án gắn quảng cáo sử dụng thư viện API Google Admob cách gắn quảng cáo dùng cửa số bật game over người chơi hoàn thành chơi Để làm cách này, ta sử dụng class GADInterstitial thư viện Admob Cách thực sau: //Tao Admob - (void)preLoadInterstitial { //Call this method as soon as you can - loadRequest will run in the background and your interstitial will be ready when you need to show it GADRequest *request = [GADRequest request]; interstitial_ = [[GADInterstitial 1903138713698660/3686046XXX"]; alloc] initWithAdUnitID:@"ca-app-pub- interstitial_.delegate = self; [interstitial_ loadRequest:request]; } - (void)interstitialDidDismissScreen:(GADInterstitial *)ad { (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 44 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE //An interstitial object can only be used once - so it's useful to automatically load a new one when the current one is dismissed [self preLoadInterstitial]; } - (void)interstitial:(GADInterstitial *)error *)ad didFailToReceiveAdWithError:(GADRequestError { //If an error occurs and the interstitial is not received you might want to retry automatically after a certain interval [NSTimer scheduledTimerWithTimeInterval:2.0f selector:@selector(preLoadInterstitial) userInfo:nil repeats:NO]; target:self } - (void) showInterstitial { //Call this method when you want to show the interstitial - the method should double check that the interstitial has not been used before trying to present it if (!interstitial_.hasBeenUsed) [interstitial_ presentFromRootViewController:[CCDirector sharedDirector].navigationController]; } Mỗi cần thị quảng cáo gọi hàm showInterstitial Kết thu hình dưới: (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 45 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE Hình 5.13: Giao diện trước bật cửa sổ quảng cáo Hình 5.14: Giao diện bật quảng cáo 5.3.4 Nhận xét Trong game thứ hai, học viên sử dụng kỹ thuật: - Bắt kiện tương tác với người dùng qua hai phương án: chạm hình lắc hình - Tạo hoạt hình cho nhân vật từ tập ảnh cho trước - Tạo map cách sinh ngẫu nhiên đối tượng game (các đối tượng backgroud, máy bay, hoa, cá mập, cá, ) - Xử lý va chạm - Quảng cáo dạng cửa sổ bật người chơi kết thúc phiên chơi (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 46 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE CHƯƠNG KẾT LUẬN Đề tài tóm tắt lại kiến thức mà học viên thu thập trình nghiên cứu làm game cho di động, qua giúp người đọc có nhìn tổng quát trình làm game, cách thức tìm kiếm thu nhập vài so sánh framwork lập trình game phổ biến Sử dụng framework Cocos2d-iPhone, học viên xây dựng số ứng dụng public lên kho ứng dụng AppStore Apple, qua giúp học viên kiếm số thu nhập định Việc sử dụng framework Cocos2d-iPhone giúp việc lập trình game cho điện thoại di động thông minh iOS trở lên dễ dàng nhiều, khơng địi hỏi lập trình viên phải tìm hiểu kỹ thuật phức tạp multithread hay hiển thị đồ họa phức tạp, rút ngắn thời gian phát triển ứng dụng game Các framework lập trình game ngày phát triển, tạo nhiều thuận lợi cho lập trình viên Tuy nhiên dẫn đến số lượng ứng dụng game ngày nhiều, làm tăng mức độ cạnh tranh ứng dụng với nhau, ứng dụng muốn thành công cần phải chau chuốt hơn, chỉnh chu hơn, có nội dung hay đồ họa đẹp Như vậy, hội cho lập trình viên đơn lẻ ngày hẹp hơn, cá nhân Nguyễn Hà Đơng ngày Để tạo game di động thành cơng, địi hỏi phải có nhóm làm việc, mà phải có cá nhân có kỹ đồ họa, âm thanh, xây dựng kịch game, …, lập trình viên khơng cịn đóng vai trị định việc xây dựng ứng dụng game Với số lượng ứng dụng kho ứng dụng AppStore Apple, PlayStore Google lên đến số hàng triệu Việc ứng dụng muốn thành cơng, ngồi thân nội dung ứng dụng, cịn có nhiều yếu tố ảnh hưởng đến nó, có yếu tố quan trọng tối ưu từ khóa việc đặt tên ứng dụng, mô tả ứng dụng để tăng hội người dùng tìm thấy ứng dụng chợ ứng dụng Đây hướng nghiên cứu học viên thời gian tới (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE 47 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE (LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE(LUAN.van.THAC.si).lap.trinh.game.tren.dien.thoai.di.dong.bang.nen.tang.COCOS2D.IPHONE

Ngày đăng: 17/12/2023, 01:53

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

TÀI LIỆU LIÊN QUAN

w