bao cao thuc tap tn

51
Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ ĐẠ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.dut.udu.vn , E-mail: [email protected] BÁO CÁO THỰC TẬP NHẬN THỨC NGÀNH CÔNG NGHỆ THÔNG TIN MÃ NGÀNH: 05115 ĐỀ TÀI: 05 TÌM HIỂU iOS & XÂY DỰNG UD GAME ĐUỔI HÌNH BẮT CHỮ SINH VIÊN : Trần Xuân Nam LỚP : 11T.CLC CBHD :ThS. Cán bộ Võ Đức Hoàng

Upload: nam-tran-xuan

Post on 19-Jan-2016

54 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TINTel. (84-511) 736 949, Fax. (84-511) 842 771

Website: itf.dut.udu.vn, E-mail: [email protected]

BÁO CÁO THỰC TẬP NHẬN THỨCNGÀNH CÔNG NGHỆ THÔNG TIN

MÃ NGÀNH: 05115

ĐỀ TÀI: 05

TÌM HIỂU iOS & XÂY DỰNG

UD GAME ĐUỔI HÌNH BẮT CHỮ

SINH VIÊN : Trần Xuân NamLỚP : 11T.CLCCBHD : ThS. Cán bộ Võ Đức Hoàng

ĐÀ NẴNG, 05/2014

Page 2: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

Page 3: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

LỜI CẢM ƠNCùng thời điểm này, trong sự kiện WWDC 2014, như thường lệ Apple sẽ giới thiệu phiên

bản mới của iOS mang tên iOS 8. Đây hứa hẹn là một cải tiến đáng kể nữa của Apple trong việc nâng cao trải nghiệm của người dùng.

Đề tài Thực Tập Nhận Thức của em là: Tìm hiểu về iOS và xây dựng UD game Đuổi hình bắt chữ. Mục đích của đề tài này nhằm giúp em có thể hiểu rõ hơn, nắm bắt được những kiến thức cơ bản về Hệ Điều Hành iOS. Xây dựng được một ứng dụng trên nền tảng iOS (game đuổi hình bắt chữ) và có được những kiến thức cơ bản phục vụ cho công việc của ems au này.

Đăc biệt em xin gửi lời cảm ơn đến thầy Võ Đức Hoàng đã giúp em hoàn thành tốt đề tài này!

Người thực hiện đề tài:

Họ tên: TRẦN XUÂN NAM

MSSV: 102110355

SĐT: 01693381274

Email: [email protected]

Page 4: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

MỤC LỤC

LỜI CẢM ƠN..................................................................................................2

MỤC LỤC........................................................................................................3

GIỚI THIỆU VỀ CÔNG TY..........................................................................4I. Giới thiệu công ty Viettel...........................................................................................4

II. Lĩnh vực hoạt động.................................................................................................4

III. Đinh hướng phát triển của công ty.........................................................................4

TÌM HIỂU VỀ IOS.........................................................................................6I. Giới thiệu chung.........................................................................................................6

II. Lịch sử ra đời..........................................................................................................6

III. Giới thiệu về iOS 7.................................................................................................6III.1. Giao diện chính..............................................................................................7III.2. Control Center................................................................................................8III.3. Đa nhiệm kiểu mới.........................................................................................9III.4. Máy ảnh........................................................................................................10III.5. AirDrop........................................................................................................11III.6. Safari............................................................................................................12III.7. Siri................................................................................................................13III.8. App Store......................................................................................................14

NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH.........................................15I. Ngôn ngữ Objective-C..............................................................................................15

I.1. Lịch sử ra đời................................................................................................15I.2. Objective-C là gì?.........................................................................................16

II. Bộ công cụ hỗ trợ lập trình Xcode.......................................................................16II.1. Giao diện chính............................................................................................17

XÂY DỰNG GAME ĐUỔI HÌNH BẮT CHỮ...........................................20I. Xây Dựng Game.......................................................................................................20

I.1. Gameshow Đuổi hình bắt chữ......................................................................20I.2. Xây dựng giao diện cho game......................................................................20I.3. Xây dựng cơ sở dữ liệu cho game................................................................21I.4. Thuật toán cơ bản để xây dựng game...........................................................23I.5. Demo............................................................................................................24

KẾT LUẬN....................................................................................................30

PHỤ LỤC.......................................................................................................31I. PHỤ LỤC A : MÃ NGUỒN....................................................................................31

A.1 FirstView_ViewController.h........................................................................31A.2 FirstView_ViewController.m.......................................................................31A.3 ImageChangeViewController.h....................................................................33A.4 ImageChangeViewController.m...................................................................33

Page 5: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

CHƯƠNG 1

GIỚI THIỆU VỀ CÔNG TY

I. Giới thiệu công ty ViettelTập đoàn Viễn Thông Quân Đội (Viettel) là doanh nghiệp kinh tế quốc phòng 100% vốn nhà nước, chịu trách nhiệm kế thừa các quyền, nghĩa vụ pháp lý và lợi ích hợp pháp của Tổng Công ty Viễn Thông Quân Đội (Viettel) do Bộ Quốc Phòng thực hiện quền chủ sở hữu và là một doanh nghiệp quân đội kinh doanh trong lĩnh vực bưu chinh – viễn thông và công nghệ thông tin. Với slogan “Hãy nói theo cách của bạn”, Viettel luôn cố gắng nỗ lực phát triển vững bước trong thời gian hoạt động.

Viettel là Tập đoàn Viễn Thông và Công nghệ thông ti lớn nhất Việt Nam đồng thời được đánh giá là một trong những công tu viễn thông có tốc độ phát triển nhanh nhất thế giới và nằm trong top 15 các công ty viễn thông toàn cầu về số lượng thuê bao. Hiện nay, Viettel đã đầu tư tại 7 quốc gia ở 3 châu lục gôm Châu Á, Châu Mỹ, Châu Phi với tổng dân số hơn 190 triệu. Năm 2012, Viettel đạt doanh thu 7 tỷ USD với hơn 60 triệu thuê bao trên toàn cầu.

II. Lĩnh vực hoạt độngBên cạnh là nhà cung cấp dịch vụ viễn thông lớn nhất cả nước, Viettel đang có

những bước phát triển lớn về lĩnh vực CNTT. Trung tâm Giải pháp CNTTT & VT Viettel (Viettel ICT) trực thuộc Tập đoàn Viễn thông Quân đội Viettel là đơn vị tiên phong về lĩnh vực Viễn thông và Công nghệ Thông tin chuyên sâu về các sản phẩm và công nghệ. Các dịch vụ, sản phẩm chủ yếu gồm:

Thiết kế, tối ưu, tư vấn, đào tạo trong lĩnh vực Viễn thông và Công nghệ thông tin.

Nghiên cứu, chế tạo, sản xuất thiết bị phần cứng và phần mềm.

Đầu tư và kinh doanh các dịch vụ Viễn thông, công nghệ thông tin.

III. Đinh hướng phát triển của công tyKhông chỉ dừng lại ở vị trí quán quân với hơn 40% thị phần viễn thông ở Việt

Nam, Viettel còn đặt mục tiêu trở thành tập đoàn số 1 Việt Nam cả về viễn thông và CNTT vào năm 2015. Ngành Công nghệ thông tin và Viễn thông (CNTT-VT) đã đóng góp trực tiếp 5-6% vào GDP quốc gia. Mức tăng trưởng trung bình của ngành này vào khoảng 20-15%/năm. Bản thân CNTT-VT là một ngành công nghiệp lớn, là nền tảng và đòn bẩy để thúc đẩy các ngành kinh tế khác. Tuy nhiên, ông Nguyễn Mạnh Hùng, Phó Tổng giám đốc Tập đoàn Viễn thông Quân đội (Viettel) cho biết, hiện nay, nghề

Trần Xuân Nam – 11T.CLC Page | 4

Page 6: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

kinh doanh chính của các công ty VT là cung cấp các dịch vụ về điện thoại – dịch vụ đã gần như bão hòa khi mà mật độ sử dụng ở Việt Nam đã đạt ngưỡng 60-70%.

Giải pháp để phát triển ngành của Viettel giờ đây không chỉ dừng lại ở việc cung cấp từng dịch vụ đơn lẻ như đường truyền, thiết bị, kết nối, đàm thoại hay phần mềm… mà phải kết hợp tổng thể các dịch vụ nói trên thành một dịch vụ thống nhất, hoàn chỉnh cho khách hàng.

Theo đó, Viettel sẽ tập trung vào các khâu nghiên cứu thiết kế, sản xuất thử nghiệm và hướng tới thương mại hóa các sản phẩm là thiết bị đầu cuối của dịch vụ VT. Tạo ra các danh mục sản phẩm “Made in Viettel” cho phép bao phủ hầu hết các lĩnh vực điều hành sản xuất của Viettel bao gồm phần mềm, thiết bị dân sự như: USB 3G, máy tính bảng, máy tính All-in-one, máy điện thoại, thiết bị cảnh báo sóng thần, thiết bị giám sát mực nước hồ chứa nước... và thiết bị quân sự.

Ông Tống Viết Trung cho biết, hiện tại Viettel đã đạt được một số nền móng vững chắc cho mục tiêu trở thành tập đoàn số 1 về CNTT-VT của Việt Nam. Đó là, việc hình thành các bộ phận &D ( esearch and Development - nghiên cứu và phát triển) của Tập đoàn về CNTT với hơn 1.000 kỹ sư phần mềm hàng trăm kỹ sư thiếtkế, sản xuất phần cứng. Xây dựng Viện nghiên cứu phát triển chuyên thiết kế, chế tạo thiết bị CNTT, sản xuất phần mềm.

Đồng thời, cho ra đời Trung tâm Tích hợp giải pháp nhằm cung cấp dịch vụ tích hợp cho doanh nghiệp, dịch vụ Datacenter Trung tâm CNTT toàn cầu đảm nhận việc quản trị, vận hành, khai thác Công ty IDC cung cấp Việt Nam Nhà máy M1, nhà máy M3 là các nhà máy sản xuất đại trà các thiết bị của Viettel.

Không chỉ trở thành tập đoàn cung cấp CNTT-VT lớn nhất Việt Nam mà Viettel sẽ phấn đấu để trở thành top 30 nhà cung cấp VT lớn nhất thế giới top 10 nhà đầu tư VT toàn cầu vào năm 2015. Theo đó, sẽ đạt thị trường 500 triệu dân vào năm 2015 và thị trường 1 tỷ dân vào năm 2020.

Đồng thời, sẽ trở thành nhà sản xuất thiết bị CNTT-VT hàng đầu khu vực ASEAN vào năm 2015 với doanh thu 1 tỷ USD làm bùng nổ thị trường CNTT Việt Nam bằng việc bình dân hóa dịch vụ, đưa CNTT-VT vào mọi lĩnh vực đời sống xã hội.

Trần Xuân Nam – 11T.CLC Page | 5

Page 7: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

CHƯƠNG 2

TÌM HIỂU VỀ iOS

I. Giới thiệu chungiOS là hệ điều hành trên các thiết bị di động của Apple. Ban đầu hệ điều hành này

chỉ được phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng sau đó nó đã được mở rộng để chạy trên các thiết bị của Apple như iPod touch, iPad và Apple TV. Ngày 31 tháng 5, 2011, App Store của Apple chứa khoảng 500 000 ứng dụng iOS, và được tải về tổng cộng khoảng 15 tỷ lần. Trong quý 4 năm 2010, có khoảng 26% điện thoại thông minh chạy hệ điều hành iOS, sau hệ điều hành Android của Google và Symbian của Nokia.

Giao diện người dùng của iOS dựa trên cơ sở thao tác bằng tay. Người dùng có thể tương tác với hệ điều hành này thông qua rất nhiều động tác bằng tay trên màn hình cảm ứng của các thiết bị của Apple.

Phiên bản mới nhất của iOS là 7.0 ra ngày 18 tháng 9 năm 2013, dành cho tất cả các thiết bị kể từ iPhone 4, iPod 5, iPad 2 trở lên.

II. Lịch sử ra đờiHệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn ra vào

tháng 1 năm 2007 và được phát hành vào tháng 9 năm đó. Khi đó, hệ điều hành này chưa có một cái tên riêng nên chỉ đơn giản là "iPhone chạy OS X". Ban đầu, ứng dụng bên thứ ba không được hỗ trợ. Steve Jobs đã chỉ ra rằng những nhà phát triển có thể xây dựng các ứng dụng web mà "sẽ cư xử như những ứng dụng ban đầu trên iPhone". Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ phát triển phần mềm đang được xây dựng và họ dự định sẽ đưa nó đến "tay của các nhà phát triển vào tháng 2". Ngày 6 tháng 3 năm 2008, Apple đã phát hành bản dùng thử đầu tiên, cùng với một cái tên mới cho hệ điều hành, đó là "iPhone OS".

Tháng 6 năm 2010, Apple đổi cái tên iPhone OS thành iOS. Nhãn hiệu "IOS" đã được Cisco dùng để đặt tên cho hệ điều hành của mình. Để tránh các vụ kiện cáo, Apple đã xin giấy phép sử dụng nhãn hiệu iOS từ Cisco.

III. Giới thiệu về iOS 7Ngày 11/6/2013 Apple đã đã chính thức giới thiệu phiên bản kế tiếp của iOS với

thiết kế phẳng. Toàn bộ giao diện từ ngoài vào trong của iOS 7 đã được các kỹ sư Apple thiết kế lại hoàn toàn, mang tới một cái nhìn mới dành cho hệ điều hành. Ngoài giao diện mới, iOS 7 giờ đây đã có cửa sổ widget mà nhiều người mong ước, cửa sổ

Trần Xuân Nam – 11T.CLC Page | 6

Page 8: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

quản lý đa nhiệm mới, font chữ mới, thư mục kiểu mới và mọi thứ mới. Từ năm 2007, đây được coi là sự thay đổi lớn nhất với iOS mà Apple thực hiện.

Cảm nhận đầu tiên của nhiều người về iOS 7 là nó rất khác và lung linh hơn so với iOS 6 trở về trước.Thiết kế phẳng được sử dụng nhiều nơi ở iOS 7. Nó đem lại sự thay đổi lớn nhất trên phiên bản hệ điều hành này, nó giúp iOS trông khác hơn bao giờ hết và thật sự đã đơn giản hơn nhiều. Nếu như các tính năng mới làm cho iOS 7 hữu dụng hơn thì thiết kế phẳng làm cho người ta nhìn vào nó với con mắt khác: lạ lẫm, phấn khích, hào hứng và một chút e dè. Đúng như lời của CEO Apple Tim Cook, iOS 7 là thay đổi lớn nhất mà Apple từng làm với nó kể từ khi iPhone ra mắt năm 2007.

III.1. Giao diện chính

Hình 2. 1 Giao diện chính của iOS 7

iOS 7 mang một giao diện hoàn toàn mới cho người dùng iPhone và iPad, từ màn hình khóa cho tới màn hình chính. Những chi tiết nhỏ nhất đều được Apple thay đổi nhằm mang tới sự đơn giản và tiện lợi cho người dùng. Có thể ví dụ như màn hình khóa mới, cột sóng mới, font chữ mảnh hơn hay hình nền dạng 3 chiều đẹp mắt. Bộ icon các ứng dụng hệ thống trên iOS 7 đều được làm mới lại hoàn toàn dựa trên thiết kế phẳng và bảng màu (palette) mới. Màu sắc được sử dụng trên iOS 7 đã không còn đậm như xưa, không nổi mà ngược lại nó nhiều màu sắc và nhẹ nhàng hơn.

Trần Xuân Nam – 11T.CLC Page | 7

Page 9: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.2. Control Center

Hình 2. 2 Control Center trên iOS 7

Control Center được coi là một tính năng mới trên iOS 7 nơi cho phép người dùng truy cập nhanh vào một số thiết lập hay sử dụng như tắt mở WiFi, chế độ máy bay, Bluetooth, đèn pin, chỉnh độ sáng, nghe nhạc... Nói cách khác, widget đã lần đầu tiên được mang lên iOS dù theo cách hoàn toàn khác so với Android đang làm. Control Center được kích hoạt bằng cách vuốt tay từ dưới màn hình lên, một cửa sổ chiếm khoảng 3/4 màn hình sẽ xuất hiện với hình nền có thể thay đổi và các chi tiết được thể hiện rõ ràng.

Trần Xuân Nam – 11T.CLC Page | 8

Page 10: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.3. Đa nhiệm kiểu mới

Hình 2. 3 Đa nhiệm kiểu mới trên iOS 7

Trình quản lý đa nhiệm trên iOS 7 đã được nâng cấp để hỗ trợ mọi ứng dụng. Cửa sổ quản lý chúng cũng được làm mới với giao diện dạng thẻ (card) và icon tương ứng ở phía dưới. Dù hỗ trợ toàn bộ ứng dụng nhưng Apple cho biết điều đó không làm ảnh hưởng tới thời gian sử dụng pin của thiết bị. Nói cách khác, toàn bộ ứng dụng của người dùng sẽ có thể chạy nền mà nó không hề làm hao pin. Ngoài ra, ứng dụng cũng sẽ tự động được cập nhật nền mà bạn thậm chí không biết tới điều đó cho tới khi mở chúng ra hoặc nhìn vào thông báo mới.

Trần Xuân Nam – 11T.CLC Page | 9

Page 11: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.4. Máy ảnh

Hình 2. 4 Máy ảnh trên iOS 7 được cải tiến rất nhiều

Nhiều người cho rằng trình chụp ảnh trên iPhone quá nhàm chán và chẳng thể điều chỉnh được gì. Apple lắng nghe, điều đó đã phần nào được giải quyết trên iOS 7. Bên cạnh tỉ lệ 16:9 chuẩn, iPhone giờ đây sẽ có khả năng chụp ảnh dạng vuông, tương tự như Instagram. Không chỉ có vậy, một vài bộ lọc màu cũng được Apple bổ sung trên iOS 7 để người dùng có thể tùy biến màu sắc cho tấm hình vừa chụp trước khi chia sẻ nó lên mạng xã hội, qua AirDrop hay PhotoStream.

Trần Xuân Nam – 11T.CLC Page | 10

Page 12: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.5. AirDrop

Hình 2. 5 Chia sẻ file dùng AirDrop

Nếu đã từng dùng OS X thì bạn sẽ nhận ra sự lợi hại của tính năng chia sẻ file này. Nhờ kết nối không dây mà người dùng iOS 7 giờ đây có thể chia sẻ dữ liệu với người dùng iOS khác trực tiếp từ Control Center. Đáng tiếc AirDrop trên iOS 7 chỉ hỗ trợ các phần cứng bao gồm iPhone 5, iPod touch gen 5, iPad gen 4 và iPad mini mà thôi. Do giới hạn phần cứng mà các phiên bản thấp hơn không thể sử dụng tính năng này.

Trần Xuân Nam – 11T.CLC Page | 11

Page 13: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.6. Safari

Hình 2. 6 Safari

Giống như Safari trên OS X 10.9, ứng dụng trình duyệt web của Apple cũng được làm mới trên iOS 7. Hỗ trợ duyệt web toàn màn hình, điều chỉnh với các thao tác cử chỉ, màn hình xem tab đang mở dạng mới, thanh tìm kiếm gộp chung với thanh địa chỉ... là những cái mới nổi bật trên Safari iOS 7.

Trần Xuân Nam – 11T.CLC Page | 12

Page 14: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.7. Siri

Hình 2. 7 Siri trên iOS 7

Trợ lý Siri giờ đây cũng có giao diện phẳng trên iOS 7. Giọng nói của trợ lý ảo cũng được Apple cập nhật với tùy chọn giọng nam hoặc giọng nữ với các ngôn ngữ như Anh, Pháp hay Đức. Ngoài ra, Siri giờ đây còn có thể được dùng để ra lệnh bật/tắt các kết nối Bluetooth hoặc điều chỉnh ánh sáng nữa.

Trần Xuân Nam – 11T.CLC Page | 13

Page 15: Bao cao thuc tap TN

Tìm hiểu iOS & xây dựng UD game Đuổi hình bắt chữ

III.8. App Store

Hình 2. 8 App Store

Cải tiến lớn nhất trong kho ứng dụng trực tuyến này là gợi ý nội dung dựa trên vị trí bạn đang ở. Lấy ví dụ, khi đang ở viện bảo tàng, App Store mới sẽ gợi ý các ứng dụng có liên quan tới vị trí đó. App Store mới cùng với đa nhiệm thông minh đã có thể tự động cập nhật ứng dụng mà không phải đợi những thao tác thủ công từ người dùng.

Trần Xuân Nam – 11T.CLC Page | 14

Page 16: Bao cao thuc tap TN

CHƯƠNG 3

NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH

I. Ngôn ngữ Objective-C

I.1. Lịch sử ra đời

Vào đầu những năm 1980, Brad J. Cox đã thiết kế ra ngôn ngữ Objective-C dựa trên ngôn ngữ SmallTalk-80. Có thể hình dung rằng Objective-C là ngôn ngữ lập trình được đặt ở lớp trên của ngôn ngữ lập trình C truyền thống, điều này có nghĩa rằng ngôn ngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên một ngôn ngữ lập trình mới đó chính là Objective-C. Ngôn ngữ Objective-C này cho phép chúng ta tạo và quản lý các đối tượng (Objects).

Từ năm 1988, Công ty NeXT Software nắm giữ bản quyền của ngôn ngữ Objective-C này. Họ đã phát triển các bộ thư viện và cả môi trường phát triển cho nó có tên là NEXTSTEP.

Năm 1994, NeXT Computer phối hợp với Sun Microsystems chuẩn hóa lại NEXTSTEP trong bản đặc tả tên là OPENSTEP. Bản hiện thực của OPENSTEP chính là GNUStep. Một hệ thống bao gồm cả Linux kenel và môi trường phát triển GNUStep lúc đó được gọi là LinuxSTEP.

Đến năm cuối tháng 12 năm 1996, hãng Apple đã mua lại công ty NeXT Software và môi trường NEXTSTEP/OPENSTEP đã trở thành thành phần cột lỗi của hệ điều hành OS X mà Apple giới thiệu sau này. Phiên bản chính thức của môi trường phát triển này do Apple giới thiệu ban đầu có tên là Cocoa. Bằng việc hỗ trợ sẵn ngôn ngữ Objective-C, đồng thời tích hợp một số công cụ phát triển khác như Project Builder (đây chính là tiền thân của Xcode) và Interface Builder, Apple đã tạo ra một môi trường mạnh mẽ để phát triển ứng dụng trên MAC OS X.

Đến năm 2007, Apple tung ra bảng nâng cấp cho ngôn ngữ Objective-C và gọi đó là Objective-C 2.0. Cho đến khi Apple chính thức giới thiệu iPhone vào năm 2007, các rất rất nhiều các developers mong muốn được tham gia phát triển ứng dụng trên thiết bị mang tính cách mạng về công nghệ này. Ban đầu, Apple không khuyến khích việc tham gia phát triển ứng dụng từ bên thứ ba này mà chỉ cho phép các ứng dụng chạy trên nền web được chạy thông qua ứng dụng dạng trình duyệt Safari mà họ cấy sẵn trong iPhone. Điều này làm cho các ứng dụng khi muốn chạy phải yêu cầu kết nối tới máy chủ web host ứng dụng của các developers tham gia phát triển. Rõ ràng động tác này của Apple không thể đáp ứng nhu cầu của các developers cho có rất nhiều hạn chế trong việc phát triển ứng dụng web-based như thế. Ngay sau đó, Apple đã trấn an giới phát triển ứng dụng bằng việc chính thức thông báo rằng các developers sẽ có thể phát triển các ứng dụng thuần iPhone. Tức là các ứng dụng nằm trong iPhone và chạy

Trần Xuân Nam – 11T.CLC Page | 15

Page 17: Bao cao thuc tap TN

trên hệ điều hành của iPhone giống như các ứng dụng có sẵn của Apple như Contacts, Stocks, Weather,…chạy trên thiết bị đặc biệt này.

Thật sự thì hệ điều hành iOS chính là 1 phiên bản đặc biệt của hệ điều hành MAC OS X, điều này cho phép các developers có thể phát triển và kiểm thử ứng dụng của mình trên các dòng máy tính như MacBook Pro, MacBook Air, Mac Mini,…Và thực tế, Apple đã nhanh chóng sau đó giới thiệu bộ công cụ phát triển ứng dụng mạnh mẽ (Software Development Kit – SDK) cho phép phát triển và kiểm thử ứng dụng trên iPhone một cách nhanh chóng. Bộ mô phỏng thiết bị iPhone của Apple, iPhone Simulator, cho phép developers có thể debug các ứng dụng của họ ngay trong môi trường phát triển mà không cần phải chạy thật trên các thiết bị iPhone và iPod Touch.

Đến năm 2010, với việc chính thức giới thiệu thêm thiết bị iPad, Apple chuyển sang sử dụng thuật ngữ tổng quát hơn đó chính làiOS để chỉ hệ điều hành dùng trên các thiết bị di động có thể có sự khác biệt về kích thước vật lý và độ phân giải như iPhone, iPod, iPad và các phiên bản khác nhau của chúng. iOS SDK giờ đây sẽ cho phép các developers phát triển ứng dụng trên bất cứ thiết bị iOS này. iOS 7 chính là phiên bản hiện tại của hệ điều hành đầy thú vị này.

I.2. Objective-C là gì?

Là ngôn ngữ lập trình hướng đối tượng

Được mở rộng từ C

Nhẹ nhàng (không sử dụng VM – không quá phức tạp với friend virtuals, temple,...

Mềm dẻo (do được mở rộng từ C nên bạn có thể dùng C thuần cấu trúc, ngoài ra đây còn là ngôn ngữ run-time)

Reflection (có hỗ trợ)

nil được dùng thay thế cho NULL, bởi vì bạn có thể gửi thông điệp cho nil còn NULL thì không thể.

BOOL có 2 giá trị là YES và NO chứ không phải là true và false

Objective-C là ngôn ngữ chính được Apple chọn để viết các ứng dụng cho hệ điều hành MAC, iPod và iPhone

II. Bộ công cụ hỗ trợ lập trình XcodeXcode là bộ công cụ phát triển ứng dụng (IDE) được tích hợp các công cụ phát

triển phần mềm được phát triển bởi Apple cho các nhà phát triển ứng dụng trên OSX và iOS. Được giới thiệu lần đầu vào năm 2003, phiên bản chạy ổn định mới nhất là Xcode 5.1

Trần Xuân Nam – 11T.CLC Page | 16

Page 18: Bao cao thuc tap TN

II.1. Giao diện chính

Hình 3. 1 Giao diện start của Xcode 4

Hình 3. 2 Cửa sổ làm việc chính của Xcode

Trần Xuân Nam – 11T.CLC Page | 17

Page 19: Bao cao thuc tap TN

Cửa sổ làm việc của Xcode được chia thành nhiều phần nhỏ, tuy nhiên nó được sắp xếp một cách khoa học.

Việc thiết kế giao diện cho ứng dụng trên Xcode được sửa dụng hoàn toàn bằng cách kéo thả các đối tượng.

Hình 3. 3 Các đối tượng để xây dựng giao diện

Ngoài ra việc truy cập các class, các file hình ảnh, sql cũng vô cùng dễ dàng sử dụng, vô cùng trực quan.

Trần Xuân Nam – 11T.CLC Page | 18

Page 20: Bao cao thuc tap TN

Hình 3. 4 Một ví dụ về việc truy cập các file trong Project

Một trong những điều mà lập trình viên thích thú với việc phát triển các ứng dụng trong Xcode nữa đó là việc trình bày source code vô cùng đẹp mắt, dễ nhìn, rất rõ rang, khoa học. Ngoài ra Xcode còn cung cấp tình năng Completion vô cùng mạnh mẽ, giúp ích rất lớn cho các lập trình viên.

Hình 3. 5 Code completion trên Xcode

Trần Xuân Nam – 11T.CLC Page | 19

Page 21: Bao cao thuc tap TN

CHƯƠNG 4

XÂY DỰNG GAME ĐUỔI HÌNH BẮT CHỮ

I. Xây Dựng Game

I.1. Gameshow Đuổi hình bắt chữ

Gameshow đuổi hình bắt chữ là một gameshow có lối chơi khá đơn giản: người dẫn chương trình đưa ra một hình ảnh về một câu nói, câu ca dao tục ngữ hay đơn giản chi là một hành động một sự vật, sự việc. Nhiệm vụ của người tham gia chơi là đưa ra các câu trả lời nhanh chóng và chính xác. Các hình ảnh được xây dựng một cách dí dỏm, nhưng cũng không kém phần logic. Game đem lại nhiều câu trả lời dí dỏm, bất ngờ với người chơi và khán giả.

Ý tưởng của game cũng tương tự như vậy, sử dụng các hình ảnh từ database và so sánh câu trả lời của người chơi và đáp án cho từng bức ảnh.

I.2. Xây dựng giao diện cho game

I.2.1. Giao diện start

Hình 4. 1 Giao diện start (giao diện xuất hiện đầu tiên)

Giao diện start được xây dựng đơn giản. Bao gồm 2 button: Play và Highscore. Button Play được dùng để vào giao diện chính của game, button Highscore để người chơi có thể xem được điểm cao của mình.

Trần Xuân Nam – 11T.CLC Page | 20

Page 22: Bao cao thuc tap TN

I.2.2. Giao diện chơi chính

Hình 4. 2 Giao diện chơi chính của game

Giao diện chơi chính bao gồm một IBOutlet UILabel *lblScore để hiển thị điểm của người chơi hiện tại. Một IBOutlet UIImageView *imageView để hiển thị hình ảnh của câu hỏi. IBOutlet UIProgressView *pgTimer được dùng để hiện thị thời gian còn lại để trả lời câu hỏi. Để đưa ra câu trả lời cho câu hỏi người chơi nhập câu trả lời của mình vào IBOutlet UITextField *txtAnswer sau đó bấm vào IBOutlet UIButton *btnAnswer để kiểm tra câu trả lời có đúng hay không. Cuối cùng là IBOutlet UIButton *btnBack được dùng để trở về giao diện start.

I.3. Xây dựng cơ sở dữ liệu cho game

Cơ sở dữ liệu cho game là một trong những thành phần quan trọng không thể thiếu cho game. Chúng ta sử dụng SQLite để quản lý database. SQLite là một công cụ mạnh cho những ứng dụng không cần quá nhiều thao tác phức tạp trên database, giao diện thận thiện, thao tác đơn giản.

Trong game này chúng ta tạo một database có tên database.sqlite để chứa thông tin các bảng và truy vấn, update dữ liệu trên các bảng database.sqlite có chứa 2 bảng chính là images được dùng để chứa hình ảnh và câu trả lời tương ứng với từng câu hỏi, bảng highScore được dùng để chứa điểm cao của người chơi mỗi khi người chơi đạt điểm cao. Bảng sqlite_sequence được dùng để giao tiếp giữa sqlite và game.

Trần Xuân Nam – 11T.CLC Page | 21

Page 23: Bao cao thuc tap TN

Hình 4. 3 Cấu trúc của cơ sở dữ liệu trong game

Hình 4. 4 Cấu trúc của bảng images

Hình 4. 5 Cấu trúc của bảng highScore

Trần Xuân Nam – 11T.CLC Page | 22

Page 24: Bao cao thuc tap TN

I.4. Thuật toán cơ bản để xây dựng game

Hình 4. 6 Thuật toán chính của game

Phần xây dựng chi tiết cho từng chức năng, hàm được trình bày trong phần mục lục.

Trần Xuân Nam – 11T.CLC Page | 23

Page 25: Bao cao thuc tap TN

I.5. Demo

Xcode cung cấp cho lập trình viên Emulator để có thể test ứng dụng của mình mà không cần phải dùng tới thiết bị thật. Sau đây là kết quả demo của game khi chạy trên Emulator.

Hình 4. 7 Giao diện khi bắt đầu game

Trần Xuân Nam – 11T.CLC Page | 24

Page 26: Bao cao thuc tap TN

Hình 4. 8 Bắt đầu game

Trần Xuân Nam – 11T.CLC Page | 25

Page 27: Bao cao thuc tap TN

Hình 4. 9 Người chơi nhập câu trả lời

Khi nhập câu trả lời đúng, điểm sẽ được cộng. Khi nhập câu trả lời sai sẽ nhận được thông báo điểm. Người chơi có thể ấn Continue để tiếp tục chơi hoặc ấn Quit để thoát về giao diện bắt đầu.

Trần Xuân Nam – 11T.CLC Page | 26

Page 28: Bao cao thuc tap TN

Hình 4. 10 Trả lời sai

Trần Xuân Nam – 11T.CLC Page | 27

Page 29: Bao cao thuc tap TN

Hình 4. 11 Hết thời gian

Trần Xuân Nam – 11T.CLC Page | 28

Page 30: Bao cao thuc tap TN

Hình 4. 12 Xem điểm cao

Trần Xuân Nam – 11T.CLC Page | 29

Page 31: Bao cao thuc tap TN

KẾT LUẬN

Bản thân em thấy đây là một đề tài rất thiết thực cho sinh viên. Hướng sinh viên tìm hiểu về một nền tảng di động mạnh như iOS. Lập trình di động hứa hẹn sẽ là một trong những hướng phát triển của ngành công nghệ phần mềm.

Qua quá trình thực hiện đề tài này, em đã nhận được nhiều kiến thức quan trọng trong lập trình di động nói chung cũng như trong lập trình iOS nói riêng. Mặc dù đã cố gắng tìm hiểu nhưng chắc chắn những gì mà em tìm hiểu trong quá trình ngắn ngủi thực hiện đề tài thì em không thể nắm bắt hết những vấn đề quan trọng khác của lập trình iOS.

Hướng phát triển tương laic ho đề tài: tạo ra ngân hàng câu hỏi lớn hơn, tạo ra nhiều màn chơi, thể loại chơi hơn. Người chơi có thể chia sẻ điểm cao của mình qua MXH nhưng Google Plus, Facebook, Yahoo…

Trần Xuân Nam – 11T.CLC Page | 30

Page 32: Bao cao thuc tap TN

PHỤ LỤC

I. PHỤ LỤC A : MÃ NGUỒN

A.1 FirstView_ViewController.h

//// FirstView_ViewController.h// ImageChangeApplication//// Created by Tran Xuan Nam on 5/14/14.// Copyright (c) 2014 ___TRAN XUAN NAM___. All rights reserved.//#import <UIKit/UIKit.h>#import <sqlite3.h>@interface FirstView_ViewController : UIViewController{ IBOutlet UIButton *btnPlay; IBOutlet UIButton *btnAbout; IBOutlet UIButton *btnHighscore; sqlite3 *imagesDB;}- (IBAction)showHighscore:(id)sender;@end

A.2 FirstView_ViewController.m//// FirstView_ViewController.m// ImageChangeApplication//// Created by Tran Xuan Nam on 5/14/14.// Copyright (c) 2014 ___TRAN XUAN NAM___. All rights reserved.//#import "FirstView_ViewController.h"@interface FirstView_ViewController ()@endNSString *dbpath;sqlite3_stmt *statement;@implementation FirstView_ViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) {

Trần Xuân Nam – 11T.CLC Page | 31

Page 33: Bao cao thuc tap TN

// Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad]; //khoi tao sqlite NSFileManager *fileMgr = [NSFileManager defaultManager]; dbpath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"database.sqlite"]; BOOL success = [fileMgr fileExistsAtPath:dbpath]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbpath); } else{ NSLog(@"OK"); }}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (IBAction)showHighscore:(id)sender{ if(sqlite3_open([dbpath UTF8String], &imagesDB)==SQLITE_OK){ //NSLog(@"ket noi thanh cong"); NSMutableString *query=[NSMutableString stringWithString:@"SELECT * FROM highScore"]; const char *query_stmt=[query UTF8String]; if (sqlite3_prepare_v2(imagesDB, query_stmt,-1 , &statement, NULL)==SQLITE_OK) { NSLog(@"Thanh Cong"); if(sqlite3_step(statement)==SQLITE_ROW){ int highScore=(int)sqlite3_column_int(statement, 1); //show alert NSMutableString *strScore=[[NSMutableString alloc]init]; [strScore appendFormat:@"%d",highScore]; UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"High Score" message:[NSString stringWithString:strScore] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; [alert show]; } }else{ NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(imagesDB)); } }

Trần Xuân Nam – 11T.CLC Page | 32

Page 34: Bao cao thuc tap TN

}@end

A.3 ImageChangeViewController.h//// ImageChangeViewController.h// ImageChangeApplication//// Created by Tran Xuan Nam on 5/5/14.// Copyright (c) 2014 ___TRAN XUAN NAM___. All rights reserved.//#import <UIKit/UIKit.h>#import <sqlite3.h>@interface ImageChangeViewController : UIViewController{ IBOutlet UIImageView *imageView; int randomNumber; IBOutlet UITextField *txtAnswer; NSString *dataPath; IBOutlet UILabel *txtTest; sqlite3 *imagesDB; IBOutlet UILabel *lblQuestion; IBOutlet UILabel *lblScore; IBOutlet UIButton *btnAnswer; IBOutlet UIProgressView *pgTimer; NSTimer *timer; float progressValue; int score; int highScore; BOOL stopProgress; BOOL showAlert; IBOutlet UIButton *btnBack;}- (IBAction)dismissAction:(id)sender;- (IBAction)dismissByTouch:(id)sender;- (IBAction)dismissByTouchUpOutsite:(id)sender;- (IBAction)answerAction:(id)sender;- (IBAction)textFieldMove:(id)sender;- (IBAction)actionBack:(id)sender;@end

A.4 ImageChangeViewController.m//// ImageChangeViewController.m// ImageChangeApplication//// Created by Tran Xuan Nam on 5/5/14.

Trần Xuân Nam – 11T.CLC Page | 33

Page 35: Bao cao thuc tap TN

// Copyright (c) 2014 ___TRAN XUAN NAM___. All rights reserved.//

#import "ImageChangeViewController.h"#import <stdlib.h>

@interface ImageChangeViewController ()

@endNSString *dbpath;sqlite3_stmt *statement;NSString *answer;NSTimer *newTimer;

@implementation ImageChangeViewController

- (void)viewDidLoad{ [super viewDidLoad]; // khoi tao sqlite NSFileManager *fileMgr = [NSFileManager defaultManager]; dbpath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"database.sqlite"]; BOOL success = [fileMgr fileExistsAtPath:dbpath]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbpath); } else{ NSLog(@"OK"); } [self makeARandomNumber]; [self loadData]; progressValue=0.0; [pgTimer setProgress:progressValue animated:YES]; timer=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerScheduled) userInfo:nil repeats:YES]; score=0; [self setScore]; [self loadHighScore]; stopProgress=false; showAlert=false; }

-(void)timerScheduled{ if(!stopProgress){ if (progressValue<=1) { progressValue+=0.0125; [pgTimer setProgress:progressValue]; }

Trần Xuân Nam – 11T.CLC Page | 34

Page 36: Bao cao thuc tap TN

else{ stopProgress=TRUE; if(!showAlert){ if(score>highScore){ highScore=score; } [self setHighScore]; [self loadHighScore]; NSMutableString *strScore=[[NSMutableString alloc]init]; [strScore appendString:@"New\n"]; [strScore appendFormat:@"%d",score]; [strScore appendString:@"\n Best\n"]; [strScore appendFormat:@"%d",highScore]; UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Oops!" message:[NSString stringWithString:strScore] delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:@"Quit", nil]; [alert show]; showAlert=true; score=0; [lblScore setText:@"0"]; } } }}-(void) setScore{ lblScore.text=[NSString stringWithFormat:@"%d",score];}-(void)resetTimer{ [timer invalidate]; timer=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerScheduled) userInfo:nil repeats:YES];}- (IBAction)answerAction:(id)sender { //randomNumber NSString *uAnswer=[txtAnswer.text lowercaseString]; if ([uAnswer isEqualToString:answer]) { [self loadData]; score+=(10000-progressValue*10000)/100; [self setScore]; [txtAnswer setText:@""]; progressValue=0; [pgTimer setProgress: 0]; } else{ stopProgress=true; if(score>highScore) { [self setHighScore]; highScore=score; [self loadHighScore];

Trần Xuân Nam – 11T.CLC Page | 35

Page 37: Bao cao thuc tap TN

NSMutableString *strScore=[[NSMutableString alloc]init]; [strScore appendString:@"New\n"]; [strScore appendFormat:@"%d",score]; [strScore appendString:@"\n Best\n"]; [strScore appendFormat:@"%d",highScore]; UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Congratulations!" message:[NSString stringWithString:strScore] delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:@"Quit", nil]; [alert show]; } else { [self loadHighScore]; NSMutableString *strScore=[[NSMutableString alloc]init]; [strScore appendString:@"New\n"]; [strScore appendFormat:@"%d",score]; [strScore appendString:@"\n Best\n"]; [strScore appendFormat:@"%d",highScore]; UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Oops!" message:[NSString stringWithString:strScore] delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:@"Quit", nil]; [alert show]; } [self resetTimer]; showAlert=true; score=0; } }-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ if(buttonIndex==0){ stopProgress=false; score=0; progressValue=0; [pgTimer setProgress: 0]; [self setScore]; [txtAnswer setText:@""]; [self makeARandomNumber]; [self loadData]; showAlert=false; } else if(buttonIndex==1){ [self dismissViewControllerAnimated:YES completion:nil]; showAlert=false; }}

-(void)makeARandomNumber{ randomNumber=arc4random()%45+1;}

Trần Xuân Nam – 11T.CLC Page | 36

Page 38: Bao cao thuc tap TN

-(void)loadData{ //NSString *question=[[NSString alloc]init]; if(sqlite3_open([dbpath UTF8String], &imagesDB)==SQLITE_OK){ //NSLog(@"ket noi thanh cong"); NSString *stringOfRandomNumber=[@(randomNumber) stringValue]; NSMutableString *query=[NSMutableString stringWithString:@"SELECT * FROM images WHERE stt= '"]; //[query appendString:[txtAnswer text]]; [query appendString:stringOfRandomNumber]; [query appendString:@"'"]; const char *query_stmt=[query UTF8String]; if (sqlite3_prepare_v2(imagesDB, query_stmt,-1 , &statement, NULL)==SQLITE_OK) { NSLog(@"Thanh Cong"); if(sqlite3_step(statement)==SQLITE_ROW){ // const char *raw=sqlite3_column_blob(statement, 2); int rawLen=sqlite3_column_bytes(statement, 2); NSData *data=[NSData dataWithBytes:raw length:rawLen]; imageView.image=[UIImage imageWithData:data ]; // answer=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 1)]; //lblQuestion.text=answer; } }else{ NSAssert1 (0, @"Error while inserting data. '%s'", sqlite3_errmsg(imagesDB)); } } sqlite3_finalize(statement); }-(void)loadHighScore{ if(sqlite3_open([dbpath UTF8String], &imagesDB)==SQLITE_OK){ //NSLog(@"ket noi thanh cong"); NSMutableString *query=[NSMutableString stringWithString:@"SELECT * FROM highScore"]; const char *query_stmt=[query UTF8String]; if (sqlite3_prepare_v2(imagesDB, query_stmt,-1 , &statement, NULL)==SQLITE_OK) { NSLog(@"Thanh Cong"); if(sqlite3_step(statement)==SQLITE_ROW){ highScore=(int)sqlite3_column_int(statement, 1); // //[lblScore setText:[NSString stringWithFormat:@"%d",highScore]];

Trần Xuân Nam – 11T.CLC Page | 37

Page 39: Bao cao thuc tap TN

} }else{ NSAssert1 (0, @"Error while inserting data. '%s'", sqlite3_errmsg(imagesDB)); } } sqlite3_finalize(statement);}-(void)setHighScore{ if(sqlite3_open([dbpath UTF8String], &imagesDB)==SQLITE_OK){ //NSLog(@"ket noi thanh cong"); NSMutableString *query=[NSMutableString stringWithString:@"UPDATE highScore SET highscore=? WHERE stt= 1"]; const char *query_stmt=[query UTF8String]; if (sqlite3_prepare_v2(imagesDB, query_stmt,-1 , &statement, NULL)==SQLITE_OK) { NSLog(@"Thanh Cong"); sqlite3_bind_int(statement, 1, score); sqlite3_step(statement); sqlite3_finalize(statement); }else{ NSAssert1 (0, @"Error while inserting data. '%s'", sqlite3_errmsg(imagesDB)); } } sqlite3_finalize(statement);}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}

- (IBAction)dismissAction:(id)sender { [sender resignFirstResponder]; CGRect frame1=txtAnswer.frame; //CGRect frame2=pgTimer.frame; frame1.origin.x=10; frame1.origin.y=336; //frame2.origin.x=0; //frame2.origin.y=300; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; txtAnswer.frame=frame1; //pgTimer.frame=frame2; [UIView commitAnimations];}

- (IBAction)dismissByTouch:(id)sender { [txtAnswer resignFirstResponder];

Trần Xuân Nam – 11T.CLC Page | 38

Page 40: Bao cao thuc tap TN

}

- (IBAction)dismissByTouchUpOutsite:(id)sender { [txtAnswer resignFirstResponder];}- (IBAction)textFieldMove:(id)sender { CGRect frame1=txtAnswer.frame; //CGRect frame2=pgTimer.frame; frame1.origin.x=10; frame1.origin.y=234; //frame2.origin.x=0; //frame2.origin.y=150; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; txtAnswer.frame=frame1; //pgTimer.frame=frame2; [UIView commitAnimations]; }

- (IBAction)actionBack:(id)sender { [self resetTimer]; [self dismissViewControllerAnimated:YES completion:nil]; showAlert=true; if(score>highScore){ highScore=score; [self setHighScore]; }}@end

Trần Xuân Nam – 11T.CLC Page | 39

Page 41: Bao cao thuc tap TN

TÀI LIỆU THAM KHẢO[1] Jacque Arsac. Nhập môn lập trình. Nguyên bản : Premières lecons de

programmation. Trung tâm hệ thống Thông tin ISC, Hà nội 1991, 241 tr.

[2] Dmitry Volevodz. iOS 7 Game Development. Packt Publishing, ISBN: 978-1-78355-157-6, 2014

[3] Trang web : http://www.informatik.uni-leipzig.de/~duc

[4] Trang web: http://en.wikipedia.org/wiki

[5] Trang web: http://google.com

[6] Trang web: http://www.tinhte.vn

[7] Trang web: http://www.youtube.com