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

Tìm hiểu hđh android và xây dựng game sudoku

104 432 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 104
Dung lượng 2,34 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong phạm vi bài báo cáo thực tập tốt nghiệp này để tạo điều kiện cho các bạn mê trò chơi trí tuệ ở mọi lứa tuổi đều có thể chơi game được em sử dụng cách ra bài với các phương pháp suy

Trang 1

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến cô giáo Ts Nông Thị Hoa

– bộ môn hệ thống thông tin đã định hướng và tận tình giúp đỡ, động viên em trong quá trình thực hiện đồ án Cô luôn luôn theo sát chỉ bảo và định hướng để em hoàn thành đề tài một cách tốt nhất Em xin trân thành cảm ơn cô!

Em xin cảm ơn những người bạn và gia đình đã động viên, giúp đỡ để em phấn đấu vượt qua khó khăn trong quá trình học tập và rèn luyện tại Trường Đại học Công nghệ Thông Tin và Truyền Thông Đồ án tốt nghiệp là cơ hội để em có thể áp dụng, tổng kết lại những kiến thức mà mình được học Đồng thời, em rút ra được những kinh nghiệm thực tế và quý giá trong suốt quá trình thực hiện đồ án

Em xin cảm ơn thầy giáo, cô giáo trong ban giám hiệu trường Đại Học Công Nghệ Thông Tin và Truyền Thông Thái Nguyên, cảm ơn quý nhà trường đã tạo cho sinh viên một môi trường học tập thuận lợi với những trang thiết bị hiện đại, giúp sinh viên tiếp cận được công nghệ thực tế ngay khi còn ngồi trên ghế nhà trường

Em gửi lời cảm ơn chân thành nhất đến các thầy cô trong khoa Công Nghệ Thông Tin, trường Đại Học Công Nghệ Thông Tin Thái Nguyên, với sự tận tình trong giảng dạy của quý thầy cô đã giúp chúng em tiếp thu kiến thức tốt hơn

Kính chúc quý thầy cô mạnh khỏe, tiếp tục đạt được nhiều thắng lợi trong nghiên cứu khoa học và sự nghiệp trồng người

Em xin chân thành cảm ơn!

Thái nguyên, ngày 6 tháng 6 năm 2016

Sinh viên

Lý Thị Việt Chung

Trang 3

LỜI CAM ĐOAN

Đồ án bảo vệ tốt nghiệp là tổng hợp kiến thức mà sinh viên đã học được trong thời gian học tập tại trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên Ý thức được điều đó, với tinh thần nghiêm túc, tực giác học hỏi, nghiên cứu miệt mài của bản thân cùng với sự hướng dẫn tận tình của cô giáo Nông Thị Hoa em đã hoàn thành đồ án bảo vệ tốt nghiệp của mình

Em xin cam đoan nội dung đồ án của em không soa chép nội dung từ đồ án khác và sản phẩm của đồ án là của chính bản thân em nghiên cứu và sự hướng dẫn nhiệt tình của cô giáo Nông Thị Hoa Mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước Hội đồng bảo vệ

Thái Nguyên, Tháng 6 năm 2016

Sinh viên

Lý Thị Việt Chung

Trang 4

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC HÌNH 5

LỜI NÓI ĐẦU 6

CHƯƠNG I: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT 8

1.1 Sơ lược về quá trình phát triển hệ điều hành Android 8

1.1.1 Giới thiệu chung về hệ điều hành 8

1.1.2 Hệ điều hành Android 8

1.1.3 Lịch sử ra đời 9

1.1.4 Cộng đồng phát triển Android 10

1.2 Kiến trúc của Android 10

1.2.1 Nền tảng Android 10

1.2.2 Tầng ứng dụng 11

1.2.3 Application framework 11

1.2.4 Library 12

1.2.5 Android Runtime 12

1.3 Android Emulator 12

1.4 Máy ảo Dalvik 13

1.5 Các thư viện của Android 13

1.6 Các thành phần trong một Android Project 14

1.6.1 AndroidManifest.xml 14

1.6.2 File R.java 14

1.7 Các thành phần chính và chu kỳ của một ứng dụng Android 15

1.7.1 Các thành phần chính trong một ứng dụng của Android 15

1.7.2 Chu kỳ sống của ứng dụng Android 19

Trang 5

1.8 Thành phần giao diện Android & các control 19

CHƯƠNG 2: PHÂN TÍCH VÀ ỨNG DỤNG GAME SUDOKU 21

2.1 Khảo sát 21

2.1.1 Giới thiệu về game sudoku 21

2.1.2 Xây dựng chức năng 42

2.2 Phân tích và thiết kế ứng dụng 42

2.2.1 Tác nhân và các Use Case 42

2.2.2 Biểu đồ Use case 43

2.2.3 Đặc tả Use Case 45

2.2.4 Biểu đồ lớp 52

CHƯƠNG 3: ỨNG DỤNG DEMO 54

3.1 Màn hình giao diện chính 54

3.2 Màn hình chọn mức chơi 55

3.4 Giao diện xem kết quả 62

3.5 Giao diện kết thúc bàn chơi 63

3.6 Giao diện lưu lại bàn game đã chơi 64

KẾT LUẬN 66

TÀI LIỆU THAM KHẢO 67

Trang 6

DANH MỤC HÌNH

Hình 1.1: Cấu trúc Android 11

Hình 1.2: Android Emulator 16

Hình 1.3: Activity Stack 17

Hình 1.4: Truyền dữ liệu giữa 2 Activity 18

Hình 1.5: Các thuộc tính của Intent 18

Hình 1.6: Quan hệ giữa các thành phần trên 20

Hình 2.1: Sudoku use case 44

Hình 2.2: Biểu đồ trình tự chức năng Tiếp tục 46

Hình 2.3: Biểu đồ hoạt động chức năng Chơi tiếp 47

Hình 2.4: Biểu đồ trình tự chức năng Chơi mới 49

Hình 2.5: Biểu đồ hoạt động chức năng Chơi mới 50

Hình 2.6: Biểu đồ hoạt động chức năng xem thông tin 51

Hình 2.7 : Biểu đồ hoạt động chức năng xem thông tin 52

Hình 2.8 : Biểu đồ lớp game sudoku 53

Hình 3.1: Giao diện chính game sudoku 54

Hình 3.2: Màn hình chọn các mức chơi 55

Hình 3.3: Màn hình chọn bàn chơi 56

Hình 3.4: Màn hình điền số 57

Hình 3.5: Bàn chơi game mức dễ 58

Hình 3.6 : Bàn chơi ở mức trung bình 59

Hình 3.7: Bàn chơi ở mức khó 60

Hình 3.8: Giao diện khi người chơi điền đáp án sai 61

Hình 3.9: Giao diện xem kết quả bàn game 62

Hình 3.10 : Giao diện khi chơi thắng 63

Hình 3.11: Giao diện lưu lại bàn game lần sau chơi tiếp 64

Hình 3.12: Giao diện bàn game đã lưu 65

Trang 8

LỜI NÓI ĐẦU

Mạng điện thoại di động xuât hiện tại Việt Nam đầu những năm 1990 và theo thời gian số lượng các thuê bao cũng như nhà cung cấp dịch vụ di động tại Việt Nam ngày càng tăng Do nhu cầu trao đổi thông tin hàng ngày tăng và nhu cầu sử dụng sản phẩm công nghệ cao nhiều tính năng, cấu hình cao, chất lượng tốt, kiểu giá mẫu mã đẹp, phong phú nên nhà cung cấp phải luôn cải thiện nâng cao những sản phẩm của mình Do đó việc xây dụng các ứng dụng cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng và hứa hẹn nhiều sự phát triển vượt bậc của ngành khoa học kĩ thuật

Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển mạnh mẽ của xu hướng lập trình phần mềm ứng dụng cho các thiết bị di động Phần mềm, ứng dụng cho đi động hiện này rất đa dạng và phong phú trên các hệ điều hành di động cũng phát triển mạnh mẽ và đang thay đổi từng ngày

Các hệ điều hành J2ME, Android, IOS, Hibrid, Web based Mobile Application đã có rất nhiều phát triển trên thị trường truyền thông di động

Với sự phát triển nhanh chóng đó thì những ứng dụng giải trí cũng đang phát triển mạnh mẽ nhằm phục vụ nhu cầu giải trí của con người Lập trình ứng dụng, lập trình game đang là xu thế thực tế là bước đột phá và cũng là tiềm năng trong sự phát triển của công nghệ di động

Và từ đó các game trên điện thoại di động xuất hiện ngày càng nhiều, trên các hệ điều hành khác nhau như Android, iOS, RIM Blackberry OS, Symbian…

Và Android là hệ điều hành do Google mua về và cho ra đời vào năm 2007, đây là

hệ điều hành tương đối mới và đang rất được ưa chuộng trên thị trường từ khi nó

ra đời, vì thế em quyết định chọn đề tài “Tìm hiểu HĐH Android và xây dựng game Sudoku” Sudoku là trò chơi giải trí giúp rèn luyện trí tuệ tính logic Với

các khuôn dạng ô số Sudoku có số lượng quá nhiều nên tạo ra các Ô-số thuộc đủ

Trang 9

loại khó dễ Ta cũng không biết số tối thiểu cho sẵn trong bài đố là bao nhiêu để có lời giải đáp thỏa đáng Trong phạm vi bài báo cáo thực tập tốt nghiệp này để tạo điều kiện cho các bạn mê trò chơi trí tuệ ở mọi lứa tuổi đều có thể chơi game được em sử dụng cách ra bài với các phương pháp suy luận rút gọn, loại trừ con số y hệt trong các tập hợp liên hệ theo đường thẳng, song song hay chữ thập, để tìm các số tuyển thích hợp, không sử dụng các định luật toán học.

Trang 10

CHƯƠNG I:

TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT

1.1 Sơ lược về quá trình phát triển hệ điều hành Android

1.1.1 Giới thiệu chung về hệ điều hành

Hệ điều hành là chương trình chạy trên hệ thống máy tính, quản lý các tài nguyên trên máy tính và là môi trường cho các ứng dụng chạy trên nó

Ngày nay, khái niệm hệ điều hành không chỉ là trên máy tính mà còn được

mở rộng cho nhiều thiết bị điện tử khác chẳng hạng như điện thoại thông minh (smart phone), các thiết bị cầm tay PDA v.v…

Như vậy hệ điều hành di động là hệ điều hành chạy trên hệ thống máy có tính di động cao Với đặc thù đó, hệ điều hành di động phải có những khả năng đặc biệt mà những hệ điều hành thông thường không có được Chẳng hạn như nó phải chạy trên hệ thống máy có cấu hình máy hạn chế về tốc độ bộ vi xử lý, bộ nhớ sử dụng, phải chạy được ổn định liên tục trong một thời gian dài mà chỉ sử dụng một lượng điện năng nhỏ, trong suốt thời gian chạy đó có thể duy trì các kết nối mạng không dây để đảm bảo liên lạc Một số hệ điều hành tiêu biểu:

Trên máy tính cá nhân: MS DOS, MS WINDOW, MACOS, LINUX, UNIXTrên điện thoại thông minh: Android, Sybian, Window Mobile, iPhone OS Ngoài ra còn có các hệ điều hành chạy trên mainframe, server, thẻ chip…Trong phạm vì bài báo cáo này em sẽ nói về hệ điều hành Android dành cho điện thoại

1.1.2 Hệ điều hành Android

Android – hệ điều hành dành cho điện thoại di động được phát triển bởi Google và ngày càng trở nên phổ biến với các hãng liên tục ra mắt các mẫu điện thoại sử dụng Android

Trang 11

Giao diện màn hình khóa (Android 2.2) Giao diện màn hình chính (Android 2.2)

Android được xây dựng trên nhân linux và được phân phối miễn phí Không giống như Windows mobile và Apple iPhone, tuy cả hai đều cung cấp môi trường phát triển ứng dụng phong phú và đơn giản dễ tiếp cận nhưng luôn có sự ưu tiên cho các ứng dụng mặc định có sẵn của hệ điều hành (native applications) Với Android mọi ứng dụng đều được viết trên cùng một tập API, thế nên không có sự phân biệt giữa các ứng dụng mặc định và các ứng dụng của bên thứ ba Người dùng hoàn toàn có thể thay thế mọi ứng dụng mặc định bằng các ứng dụng yêu

Trang 12

thích của mình, thậm chí ngay cả màn hình thực hiện cuộc gọi mà màn hình nhà (home scream).

1.1.4 Cộng đồng phát triển Android

Android có một cộng đồng phát triển ứng dụng rất lớn, hiện có khoảng hơn 70.000 ứng dụng có sẵn cho Android và đang liên tục được cập nhật Ứng dụng được phát triển bằng ngôn ngữ Java kết hợp với thư viện Java có sẵn của Google Các nhà phát triển ứng dụng có thể sử dụng máy tính chạy hệ điều hành Windows hoặc MacOS hoặc Linux kết hợp với Android SDK để phát triển ứng dụng cho Android Hệ điều hành Android bao gồm 12.000.000 dòng mã trong đó có 3.000.000 dòng XML, 2.800.000 dòng C, 2.100.000 dòng Java, và 1.750.000 dòng

 Cửa sổ

 Khung hình

 Các tiểu trình để hiển thị các phần tử phổ biến như các hộp biên soạn, danh sách, danh sách thả xuống

Trang 13

Android có nhiều tùy chọn kết nối, gồm WiFi, Bluetooth và dữ liệu không dây qua một kết nối di động (như GPRS, EDGE và 3G) Một kỹ thuật phổ biến trong các ứng dụng Android là liên kết tới Google Maps để hiển thị một địa chỉ trực tiếp trong một ứng dụng Việc hỗ trợ cho các dịch vụ dựa trên địa điểm (chẳng hạn như GPS) và các dụng cụ đo gia tốc cũng có sẵn trong gói phần mềm Android, mặc dù không phải tất cả các thiết bị Android được trang bị với các phần cứng cần thiết Ngoài ra còn có cả hỗ trợ máy ảnh (camera).

Về mặt lịch sử, có hai lĩnh vực mà các ứng dụng di động đã gắng sức theo kịp các đối tác máy tính để bàn là đồ họa/đa phương tiện và phương thức lưu trữ

dữ liệu Android giải quyết thách thức về đồ họa bằng sự hỗ trợ dựng sẵn cho đồ họa 2D và 3D, gồm cả thư viện OpenGL Gánh nặng lưu trữ dữ liệu được giảm nhẹ vì nền Android có gồm cả cơ sở dữ liệu SQLite mã nguồn mở phổ biến Hình 1.4 cho thấy một khung hình đơn giản hóa về các tầng phần mềm Android

Hình 1.1: Cấu trúc Android

Trang 14

1.2.2 Tầng ứng dụng

Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết bằng Java

1.2.3 Application framework

Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa

Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ) Cơ chế này cho phép các thành phần tương

tự sẽ được thay thế bởi người sử dụng

1.2.4 Library

Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android Điều này được thể hiện thông qua nền tảng ứng dụng Android Một số các thư viện cơ bản được liệt kê dưới đây:

 System C library: một dẫn xuất BSD có nguồn gốc từ hệ thống thư

viện chuẩn của C (LIBC), được gắn vào các thiết bị Linux

 Media Libraries - Căn cứ vào OpenCORE trong các gói Video, hỗ trợ

các thư viện phát lại, ghi âm và đọc các định dạng video phổ biến, cũng như các tập tin hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, và PNG

 Surface Manager – Quản lý việc truy xuất vào hiển thị hệ thống

 LibWebCore – Trình duyệt web hiện đại có đầy đủ cả trình duyệt

Android và 1 trình xem web hệ nhúng

Trang 15

để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp.

1.3 Android Emulator

Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT) Người lập trình Android sẽ cần phải sử dụng công cụ IDE (Integrated Development Enveronment) này để phát triển, debugging và testing cho ứng dụng

Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết

bị thật Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video, nghe phone, nguồn điện giả lập và bluetooth

Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn mở, công nghệ này được gọi là QEMU (http://bellard.org/qemu/) được phát triển bởi Fabrice Bellard

1.4 Máy ảo Dalvik

Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc

độ xử lý

Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác dưới gốc nhìn của nhà phát triển Khi nhà phát triển viết một

Trang 16

ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên

là dx Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android

1.5 Các thư viện của Android

Android cung cấp các gói API để phát triển ứng dụng Sau đây là các API

mà tất cả các thiết bị Android đều tối thiểu phải hỗ trợ để giúp cho chúng ta một cái nhìn tổng quát về thư viện này

 Android.util: Gói API lõi, chứa các class cấp thấp như container, string formatter, XML parsing

 Android.os: Truy cập tới chức năng của hệ điều hành như: gởi nhận tin nhắn, giao tiếp nội bộ giữa các ứng dụng, thời gian…

 Android.graphics: Cung cấp các lớp liên quan tới xử lý đồ họa ở mức thấp Hỗ trợ các hàm cơ bản như vẽ điểm, vẽ miền, tô màu… trên khung canvas

 Android.text: Cung cấp các hàm phân tích và xử lý chuỗi

 Android.database: Cung cấp các lớp cấp thấp cần thiết để làm việc với database

 Android.content: Dùng để quản lý các tài nguyên, các nội dung và các gói

 Android.view: Views là lớp cha của mọi lớp giao diện người dùng

 Android.widget: Được thừa kế từ lớp View, bao gồm các lớp cơ bản để xây dựng giao diện widget như: list, button, layout…

 Android.map: Gói API cấp cao, dùng để truy cập tới các chức năng của GoogleMap

 Android.app: Gói API cấp cao, bao gồm các Activity và Service – hai

Trang 17

lớp cơ sở cho mọi ứng dụng Android.

 Android.telephony: Cung cấp cho bạn khả năng tương tác trực tiếp với các chức năng cơ bản của một điện thoại như nghe, gọi, tin nhắn

 Android.webkit: cung cấp một webView control trên nền webkit để có thể nhúng ứng dụng, cùng với các API điều khiển cơ bản như stop, refresh, cookieManager…

1.6 Các thành phần trong một Android Project

1.6.1 AndroidManifest.xml

Trong bất kì một project Android nào khi tạo ra đều có một file AndroidManifest.xml, file này được dùng để định nghĩa các screen sử dụng, các permission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin

về phiên bản SDK cũng như main activity sẽ chạy đầu tiên

File này được tự động sinh ra khi tạo một Android project Trong file manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và version

1.6.2 File R.java

File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được

sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh

Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy xa làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá

Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quá trình xây dựng ứng dụng

1.7 Các thành phần chính và chu kỳ của một ứng dụng Android

1.7.1 Các thành phần chính trong một ứng dụng của Android

A, Activity :

Activity là một trong bốn thành phần chính và đóng vai trò quan trọng nhất của một ứng dụng Android Activity là nền tảng của một ứng dụng Hệ điều hành Android quản lý Activity theo dạng stack : khi một Activity mới được khởi tạo, nó

Trang 18

sẽ được xếp lên đầu của stack và trở thành running activity, các activity trước đó sẽ

bị tạm dừng và chỉ hoạt động trở lại khi activity mới được giải phóng Khi khởi động một ứng dụng Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác

Một ứng dụng thường bao gồm nhiều activity được ràng buộc với nhau Thông thường, một trong những activity trong một ứng dụng được quy định như các activity chính, được trình bày cho người dùng khi chạy ứng dụng cho lần đầu tiên Mỗi activity sau đó có thể bắt đầu activity khác để thực hiện hành động khác nhau Mỗi lần một activity mới bắt đầu, các activity trước đó được dừng lại Khi một activity mới bắt đầu, nó được đẩy lên phía sau ngăn xếp Sự sắp xếp ngăn xếp tuân thủ các cơ chế cơ bản vào sau ra trước đây là cơ chế hàng đợi, khi người dùng được thực thi với các activity hiện tại và nhấn phím BACK thì nó sẽ khởi động và phá hủy các activity trước đó

Mỗi Activity chủ yếu có 3 trạng thái chu kỳ chính như sau:

 Activity hoặc running: Khi activity được chạy trên màn hình Activity

này tập trung vào những thao tác của người dùng trên ứng dụng

 Paused: Activity được tạm dựng khi mất quyền hoạt động nhưng người

dùng vẫn trông thấy, có nghĩa là một activity mới ở trên nó nhưng không bao giờ phủ hết màn hình Một activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi

hệ thống trong trường hợp thiếu vùng nhớ

 Stopped: Nếu stopped hoàn toàn chứa bởi Activity khác thì vẫn còn

trạng thái và thông tin thành viên đó Người dùng không nhìn thấy và thường bị loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác

 Các phương thức chính xử lý trong Activity

 Create Activity(): Phương thức này sẽ được triển khai khi hệ thống

chạy và bắt đầu khởi tạo Activity khởi động trong ứng dụng và đây là nơi mà gọi

ra setContentView() để xác định việc layout cho giao diện người dùng của Activity

 Start Activity() : Khi làm việc trong ứng dụng của mỗi người dùng thì

người dùng sẽ cần khởi động các Activity bằng cách tạo ra một Intent rõ ràng và xác định Activity mà người dùng muốn bắt đầu

 Đóng một Activity : Người dùng có thể đóng một Activity bằng cách

gọi phương thúc finish() Tất nhiên, cũng có thể đóng một Activity riêng biệt trước

đó đã bắt đầu bằng cách gọi finishActivity()

Trang 19

Hình 1.2: Android Emulator.

 Activity Stack : Bên trong hệ thống các Activity được quản lý như một

Activity stack Khi một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành Activity đang chạy Activity trước sẽ ở bên dưới Activity mới và sẽ không thấy trong suốt quá trình Activity mới tồn tại Nếu người dùng nhấn nút Back thì

Trang 20

Activity kế tiếp của stack sẽ di chuyển lên và trở thành active.

Hình 1.3: Activity Stack.

Tính liên lạc giữa 2 Activity Khi di chuyển sang một Activity khác thì nó

có thể gửi kèm dữ liệu trong Intent đó như sau :

 Khái niệm Intent :

Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity

Là cầu nối giữa các Activity : Ứng dụng Android thường bao gồm nhiều

Trang 21

Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác.

Hình 1.4: Truyền dữ liệu giữa 2 Activity.

Trang 22

Hình 1.5: Các thuộc tính của Intent.

Đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm với nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi

Intent tương ứng được gửi (tất nhiên khi được cung cấp đúng data)

Ngoài ra còn các các thành phần quan trọng khác như :

Service (Android.app.Service): cung cấp các dịch vụ liên quan đến

client/service Một Service sẽ chạy ngầm bên dưới, sau đó các client (Activity) sẽ kết nối và truy xuất các hàm trên dịch thông qua Interface class

Broadcast receiver (Android.content.BroadcastReceiver): đây là một

ứng dụng chạy ngầm dùng để đọc và cập nhật thông tin trên UI, ví dụ như cập nhật

sự thay đỗi giờ, pin

Trang 23

Content Provider: cung cấp chức năng truy vấn dữ liệu giữa các ứng dụng

của Android

1.7.2 Chu kỳ sống của ứng dụng Android

Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng dụng khi codes cần được xây dựng, khởi chạy và sẽ còn chạy cho đến khi:

 Nó không phụ thuộc

 Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó Thay vào đó, nó được xác định bởi hệ thống qua một kết hợp của:

 Những phần của ứng dụng mà hệ thống biết đang chạy

 Những phần đó quan trọng như thế nào đối với người dùng

 Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống

1.8 Thành phần giao diện Android & các control

Tạo giao diện

Android cung cấp một số công cụ thiết kế giao diện:

 Views: là lớp UI cơ bản cho các control giao diện Tất cả các control giao diện người dùng, các lớp layout đều được dẫn xuất từ lớp Views

 ViewGroups: được mở rộng từ lớp View và có thể chứa nhiều Views ViewGroups cũng được kế thừa để cung cấp các lớp quản lý bố cục như LinearLayout ViewGroup được dùng để xây dựng nên các component có thể dùng lại (widget) hoặc để quản lý bố cục cho các control

 Activity: dùng để hiển thị giao diện người dùng Lớp này do người phát triển ứng dụng viết

Trang 24

Hình 1.6: Quan hệ giữa các thành phần trên

Tạo các Control tùy chỉnh

Người phát triển có thể tạo ra các control theo ý của mình để tạo được một giao diện mang tính duy nhất phù hợp với yêu cầu của người dùng Các control

mới cần phải được thừa kế từ lớp View hoặc SurfaceView.

Lớp View cung cấp một đối tượng Canvas và một số phương thức vẽ cũng

như các lớp Paint, để tạo một giao diện trực quan.Người thiết kế có thể định nghĩa lại các sự kiện người dùng như cảm ứng trên màn hình, nhấn phím để tạo nên sự tương tác.Trong những trường hợp mà không đòi hỏi việc vẽ lại cũng như đồ họa 3D thì lớp cơ sở View có giải pháp hiệu quả

Trong khi đó, lớp SurfaceView cung cấp một đối tượng canvas hỗ trợ việc

vẽ từ một luồng xử lý nền và sử dụng openGL cho đồ họa 3D Đây là một lựa chọn

tuyệt với cho các điều khiển đòi hỏi đồ họa cao, cần phải cập nhật liên tục hoặc hiển thị các đồ họa phức tạp, như game 3D

Tạo giao diện Activity với các View

Một Activity khi chưa thiết kế sẽ khởi động với một màn hình rỗng Để

thiết lập giao diện cho màn hình rỗng này cần gọi phường thức setContentView khi everride lại phương thức onCreate Phương thức setContentView có thể nhận một

tham số là resource ID hoặc một thể hiện của View Do đó, có thể định nghĩa giao diện ứng dụng bằng code hoặc tham chiếu đến resource (layout)

Nếu dùng layout resource thì sẽ tách riêng việc thiết kế giao diện và phần code xử lý, cung cấp một khả năng thay đổi linh hoạt giao diện mà không thay đổi code bên trong

Trang 25

2.1.1.1 Lịch sử Sudoku

Sudoku có lịch sử xa xưa từ hàng ngàn năm Nó từng đi qua các nền văn hóa cổ, và có lẽ nó bắt nguồn từ Trung Hoa, theo như một tài liệu của Ả rập vào thế kỷ thứ 9 Năm 990 một danh sách những “Ô số kỳ ảo” đã xuất hiện và tỏ ra không khác mấy so với bản Sudoku xuất hiện trong Từ Điển Bách Khoa Ikhwan al-salfa của các học giả người Ả Rập Trong từ điển này, họ gọi nó là wafq Những

ô số vuông vắn ấy được dùng làm bùa để giúp phụ nữ dễ sinh đẻ Nó được gọi tên

là ô vuông buduh Món bùa này trở nên phổ biến đến mức các nhà văn Hồi giáo bắt đầu lập ra các tổ hợp số phức tạp hơn sao cho không có con số nào lặp lại

Ý tưởng tạo nên những ranh giới cho các khối vuông (biến nó thành trò chơi) đã được Ahmed al-Buni ghi lại vào năm 1225, mặc dù phương pháp này được tin là có xuất xứ từ Ba Tư

Sudoku có thêm một bước tiến hóa mới vào năm 1776 khi một nhà toán học kiêm vật lý học người Thuỵ Sĩ tên Leonhard Euler bắt đầu nghiên cứu và phát triển các luật chơi mà ngày nay ta gọi là luật chơi Sudoku

Đi xuyên qua một cuộc hành trình dài lâu và kiên trì, Sudoku lần đầu tiên được xuất bản vào cuối thập niên 1970 trong một tờ tạp chí ở New York Tờ tạp chí này đã giới thiệu về các ô số kỳ ảo và khuôn nó lại trong một lưới 9x9, tạo thành từ các khối 3x3 Và như thế, Sudoku đã ra đời

Năm 1986, trong một chuyến đi Mỹ, một nhà xuất bản Nhật Bản, Nikoli, đã khám phá ra các ô số Họ đặt tên cho nó là SuDoku (Su là số, Doku là đơn độc), và làm cho nó nhanh chóng trở thành một trò chơi phổ biến ở Nhật Bản Nhưng Sudoku chỉ bó hẹp trong khuôn khổ xứ sở anh đào trong suốt hơn 20 năm cho đến khi một thẩm phán người Hồng Kông gốc New Zealand tên là Wayne Gould tình

cờ phát hiện một cuốn sudoku trong một hiệu sách Nhật Bản Ông đâm nghiền trò chơi số cổ xưa này Năm 2004, Gould đã thuyết phục tổng biên tập của báo này cho đăng Sudoku bên cạnh các ô chữ Độc giả lập tức bị cuốn hút và yêu cầu đăng thêm nữa Chỉ trong vài tuần lễ, các tờ báo trên khắp nước Anh đã thi nhau đăng

Trang 26

Sudoku Từ đó, Sudoku bắt đầu lan rộng sang Mỹ, Canada, Úc, Pháp, Nam Phi và nhiều quốc gia khác Sudoku là trò puzzle (đoán số hay chữ) phát triển nhanh nhất trên thế giới Nó hiện có hàng triệu tín đồ nghiện trò chơi này Nhiều nhân vật nổi tiếng ủng hộ nó Và nó đã có được một nhà vô địch thế giới Nó được đánh giá là trò chơi thông minh giúp rèn luyện sự logic nhạy bén.

Hiện nay, Sudoku đã có mặt trên các báo, tạp chí hàng đầu và trở thành trò chơi gây sốt tại hơn 40 quốc gia và vùng lãnh thổ trên thế giới, trong đó có Việt Nam Xuất hiện ở Việt Nam khoảng giữa năm 2005, Sudoku không ồn ào, cuồng nhiệt như hip hop, breakdance mà vẫn hút khách bởi nó không chỉ đơn thuần là một trò chơi, mà còn là cách thức giải trí giúp rèn luyện trí não, tư duy lôgic và tính kiên trì, với luật chơi đơn giản nên sudoku nhanh chóng được cập nhật vào

"menu" giải trí của người trẻ Bây giờ, không chỉ chơi sudoku mà nhiều bạn còn sáng tạo ra những ô số Sudoku của riêng mình để "thách đố bạn bè" Từ những ô

số sudoku trên giấy dần dần rất nhiều phiên bản game Sudoku chạy trên hệ điều hành Android cũng ra đời

2.1.1.2 Luật chơi Sudoku

Trước hết, bạn cần một trí tuệ sắc bén và một chút tập trung Luật chơi Sudoku cực kỳ đơn giản, nhưng đáp án đôi khi lại cực kỳ khó giải Do không cần dùng đến kiến thức số học hay tính toán, Sudoku thích ứng cho mọi người Vì vậy trẻ em cũng có cơ hội giải được Sudoku thành công như người lớn Trên thực tế, ở một số nước châu Âu, các em nhỏ đã chiến thắng người lớn trong các cuộc thi đấu Sudoku

Trang 27

số đúng Bạn cần phải suy luận để tìm ra những con số trong các ô trống còn lại Trò chơi kết thúc khi bạn điền đúng và kín hết tất cả các ô trên bàn chơi Các đề sudoku mức dễ thường bắt đầu với nhiều con số đã được điền sẵn, do đó bạn sẽ dễtìm ra đáp án hơn Càng tìm ra nhiều con số, bạn sẽ càng dễ tìm ra các con số khác Khi các đề sudoku trở nên khó hơn, bạn sẽ cần thêm nhiều kỹ thuật và phương pháp để giải

2.1.1.3 Sơ lược các khuôn dạng sudoku và phương pháp giải

A, Các khuôn dạng sudoku

Sudoku có rất nhiều khuôn dạng khác nhau như:

 Kích thước 4*4 ô chia thành 2*2 vùng

 Kích thước 6*6 ô chia thành 2*3 vùng

Biến thể với kích thước lớn cũng khá phổ biến

 Kích thước 16*16 ô (Monster Sudoku)

 Kích thước 12*12 ô chia thành 4*3 vùng ( Doketa Sudoku)

 Kích thước 25*25 ô ( Giant Sudoku)

 Biến thể có kích thước lớn nhất được phổ biến là 100*100 ô

trong đó khuôn dạng chuẩn và phổ biến nhất là 9*9 bảng câu đố hình vuông, mỗi chiều có 9 ô nhỏ, hợp thành 9 cột, 9 hàng và được chia thành 9 ô lớn 3x3 Tổng số có 81 ô trên một bàn chơi

B, Một số ví dụ giải sudoku

Một cách tương đối, độ khó của khung Sudoku tuỳ thuộc phần lớn ở số ô hướng dẫn Để ý rằng độ khó của khung Sudoku cũng tuỳ thuộc ở sự phân phối cũng như trị của các ô hướng dẫn Đầu tiên hãy xem một số ví dụ sau:

Ví dụ 1: Với ô số dễ dàng khuôn dạng 4*4

Để giải đề Sudoku này bạn phải điền làm sao để vào mỗi cột, mỗi hàng và mỗi miền con đều có chứa các con số 1, 2, 3 và 4 Có một cách duy nhất để hoàn tất mỗi ô Sudoku Nếu suy nghĩ kỹ bạn sẽ tìm ra đáp án

Trang 28

Bây giờ bạn cần đoán ra số nào phải điền vào ở góc trên cùng

Nhìn lướt qua hàng đầu tiên, bạn lập tức nhận ra đó là số 2

Trang 29

Đến gì nữa? Bạn cần thay các dấu hỏi bằng một số 3 và một số 4 Nhìn dọc theo hàng cuối cùng, bạn sẽ thấy một con số 3, nên dấu hỏi bên dưới PHẢI điền vào số 4 Tìm ra được đến đây, bạn dễ dàng suy ra ô ở góc trái bên dưới phải chứa

số 2, cứ thế điền vào luôn ( ô xanh)

Hãy nhớ rằng mỗi miền con cũng đều phải chứa các con số 1, 2, 3 và 4 Bạn

có thể thấy rằng các dấu hỏi trong đề Sudoku lúc này giờ phải thay được bằng số 1 Bây giờ chỉ còn hai ô trống, và bạn có thể dễ dàng thấy rằng cả hai ô này đều phải chứa số 4 Bạn đã hoàn tất được bảng số Sudoku 4*4 rồi đấy

Ví dụ 2: Với ô số khuôn dang 9*9

Đây là ô số 9x9 Bây giờ trong mỗi cột, hàng và miền con phải chứa các số

từ 1 đến 9 (mỗi số chỉ xuất hiện một lần)

Trang 30

Khi đang giải một ô số Sudoku lớn, hãy bắt đầu theo cùng một cách suy luận logic như sau : tìm các “bộ ba” Hãy nhìn vào các con số 5 màu vàng Miền 3x3 ở dưới cùng bên phải chỉ có một ô chắc chắn chứa số 5 Giờ hãy nhìn vào các

số 6 màu cam Trong miền 3x3 ở dưới cùng bên phải, số 6 phải nằm ở hàng giữa, ở một trong hai vị trí Nhưng nếu bạn nhìn lên, bạn sẽ thấy đã có một số 6 ở cột bên trái (tô sáng màu xanh), cho nên bạn phải điền số 6 vào ô bên phải

Trang 31

Đôi khi bạn không biết đích xác phải điền số vào ô nào và cần phải có thêm manh mối Đừng đoán mò! Bạn sẽ xa vào một mớ boòng boong nếu hành động như vậy! Nếu bạn không biết đích xác về vị trí của một con số, hãy tìm thêm manh mối Việc ghi chú sẽ có ích cho bạn Hãy dùng một cây viết chì để ghi ra các con

số be bé mà bạn có thể tẩy xóa đi sau này Trong trường hợp của chúng ta, bạn nhìn vào bộ ba các con số 7 là sẽ nhận ran ngay rằng một trong hai ô tô sáng trong miền 3x3 bên dưới phải chứa số 7 Bạn sẽ thực hiện thao tác này nhiều hơn khi đề sudoku khó hơn!

Trang 32

Ví dụ 3: Cách ra bài và phương pháp giải SUDOKU 9*9

Trong Ô-số Sudoku 9x9, người ta cho biết vị trí của một số con số cho sẵn trong tổng số 81 ô vuông của lưới (grid, grille) Mổi ô (O, cell, cellule) chứa một con số có thể là 1, hay 2, 3 cho đến 9 Ta phải điền vào các ô trống còn lại sao cho ra một Sudoku, mà chín hàng ngang (N, row/line, rangée), chín cột dọc (D, column, colonne) và chín khu/vùng nhỏ (K, box/region, région) là những tập hợp (set, ensemble) đều chứa đủ 9 con số, từ 1, 2, 3 cho đến 9 Các tập hợp N, D cắt nhau ở một ô, trong khi N, D có chung với K ba ô liên tiếp N, D, K được đánh dấu theo thứ tự từ trái sang phải, trên xuống dưới Thí dụ N2 là hàng ngang thứ nhì, D4

là cột dọc thứ tư, O93 là ô nằm trên hàng ngang 9 và cột dọc 3 Lời giải sẽ do sự tìm kiếm các con số đặt/viết vào ô trống, và thử nghiệm lại sao cho thỏa mãn luật chơi Nếu các số cho sẵn càng nhiều thì càng dễ kiếm Sudoku, nhưng nếu quá ít và lại đặt vào các ô đặc biệt thì rất khó tìm lời giải

Cách ra bài Ô- số

Để giữ tính giải trí và để dễ kiểm chứng, bài Ô-số chỉ có một lời giải duy nhất Như vậy, nếu bài đố cho ra nhiều đáp số, ta cần xác định thêm vị trí của một vài con số là đáp ứng được nguyên tắc này Chúng ta cùng nhìn vào hình và xác định các loại ô số có bao nhiêu đáp án: Hình 1 là Ô-số #1 thuộc loại khó, có 23 con

số cho trước Ô-số này cho hai bài giải 1 và 2, mà tổng cộng 9 con số của hai đường chéo chính là 41-57 và 43-52, được mô tả trong Hình 2 và Hình 3 Các hình này có bốn ô chứa hai cặp đôi 79 (in đậm) là nguyên nhân Nếu ta xác định vị trí tương ứng của 7 hay 9 thì chỉ còn một lời giải

Trang 34

Nếu ta thêm con số 7 vào Ô-số #1 trong K7, ví dụ ô O93, ta được Ô-số #2 (Hình 4), loại 24 số cho trước Ô-số #2 chỉ có một đáp số duy nhất (Hình 5):

Trang 35

Cũng vậy, nếu ta thêm con số 7 vào Ô-số #1 trong K 7, vào O92, ta sẽ được Ô-số #3 (Hình 6) với một bài giải duy nhất (Hình 7):

Trang 36

Nhưng nếu ta thêm con số 7 vào số #1 trong K 7, vào O83, ta sẽ được

Ô-số #4 (Hình 8) và rất nhiều bài giải (Hình 9,10, 16):

Trang 38

Vì có 3 cặp đôi hoán vị được, nên có tất cả 2^3 =8 lời giải trong hai nhóm, nhận biết qua trị số của hai đường chéo chính, là 46-49 và 46-55 9 Ta có thể tạo những Ô-số với các dạng ngoạn mục, thí dụ #5, #6 (Hình 17, 18), và nhiều khi phải thêm bớt / đổi chỗ một vài con số để có một lời giải

Trang 39

Tóm lại, tùy sự sắp xếp, ta có thể có Ô-số #7 không lời giải (Hình 19), Ô-số

#8 nhiều lời giải (Hình 20), Ô-số #9 (Hình 21) có lời giải duy nhất

Trang 40

Giải bài Ô-số

Cách giải một Ô-số dựa vào sự suy luận hợp lý logic, để kiếm từng bước một các con số khả dụng cho mỗi ô sẽ được trình bầy sơ lược sau đây Riêng những phương thức thực hiện có hệ thống, phức tạp vì mỗi ô trống lúc đầu đủ 9 con số, với các định luật riêng e.g XYZ-Wing, XY-Chain, Swordfish, Jellyfish

ta có thể tìm hiểu thêm qua mạng lưới trong phần thư mục Những con số khả dụng cho mạng/lưới (grid, grille) của Ô-số, tạm gọi là số tuyển (candidate, candidat), có thể là: 1- số đơn độc (singlets, candidat unique), chỉ thấy ở một ô duy nhất 2- cặp đôi (doublets, paire unique) chỉ thấy trong hai ô duy nhất 3- cặp/bộ ba (triplets, triplet unique) chỉ thấy trong ba ô duy nhất 4- cặp/bộ bốn (quadruplets, quadruplet unique) chỉ thấy ở bốn ô duy nhất của một tập hợp N, D, K Cặp bốn rất

ít giá trị tiên liệu

1) Trước hết là tuyển các số đơn độc để điền vào các ô thích hợp, thí dụ số 4 trong Hình 22: theo thứ tự O44, O16, O75, O27, và O33 Trong K5, O44 là ô

Ngày đăng: 08/12/2016, 20:02

TỪ KHÓA LIÊN QUAN

w