2.8.1 PHP
Giới thiệu:
PHP là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Những ưu điểm của PHP
Được sử dụng rộng rãi, miễn phí, cấu hình nhanh chóng, nhỏ gọn.
Có khả năng đạt hiệu suất cao trong làm việc.
Dễ sử dụng.
Là một dự án mã nguồn mở. Ngôn ngữ này được phát triển bởi một đội ngũ những người tình nguyện trên toàn cầu.
Yêu cầu của ứng dụng là phải có một web service chạy bằng ngôn ngữ PHP nên những kiến thức về lập trình web bằng PHP là rất quan trọng để ứng dụng và web service có thể giao tiếp tốt với nhau.
2.8.2 MySQL
Giới thiệu:
MySQLlà hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.
MySQLlà một trong những ví dụ rất cơ bản về Hệ Quản trị cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
Những ưu điểm của MySQL
MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng.
có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.
MySQL miễn phí hoàn toàn.
Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,...
MySQLđược sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...
2.8.3 Json
Giới thiệu
JavaScript Object Notation(thường được viết tắt là JSON) là một kiểu dữ liệu trongJavaScript. Kiểu dữ liệu này bao gồm chủ yếu là text. Về cấu trúc, nó mô tả một vật thể bằng cách gói những vật thể con trong vật thể lớn hơn trong dấu ngoặc nhọn({}). JSON là một kiểu dữ liệu trung gian, chủ yếu được dùng để vận chuyển thông tin giữa các thành phần của một chương trình.
34
Json có 5 kiểu dữ liệu chính:
Number: Bao gồm kiểu số nguyên và số thực.
String : Kiểu chuỗi,nội dung bao bởi dấu cặp dấu nháy kép ,những ký tự đặt biệt được escape bởi dấu “\”. Json không sử dụng dấu nháy đơn để bọc chuỗi như JavaScript
Boolean:Kiểu luận lý bao gồm true và false.
Array:Kiểu mảng,gồm các phần tử cách nhau bởi dấu phẩy “,” và được bao bọc bởi cặp dấu ngoặc vuông “[“ và ”]”.
Object:Kiểu đối tượng bao gồm những cặp giá trị đi cùng nhau,mỗi cặp được phân cách bởi dấu phẩy “,”,đối tượng được bao bọc bởi cặp dấu ngoặc đơn “{“ và ”}”.Cặp giá trị bao gồm tên và giá trị được phân cách bởi dấu hai chấm “:”.
Null:Giá trị null.
Ưu điểm
JSON nhỏ hơn so với XML, và nhanh hơn và dễ dàng hơn để phân tích.
Json có thể đọc và hiểu được.
Là kiểu dữ liệu trên nền JavaScript nên dễ tiếp cận.
Dữ liệu truyền tải ngắn gọn hơn so với những định dạng dữ liệu khác như XML,HTML...
Dễ dàng chuyển đổi dữ liệu từ dạng chuỗi sang kiểu dữ liệu có thể sử dụng được(Object,Array,number..).
35
CHƯƠNG 3 NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 3.1 PHÂN TÍCH TRÒ CHƠI HỌC TỪ VỰNG
3.1.1 Giới thiệu
Học từ vựng là một trò chơi đơn giản về giao diện cũng như cách chơi,trò chơi giúp người dùng vừa có thể giải trí, vừa thể thể học thêm được một số từ vựng.
Trò chơi có khoảng 1000 từ vựng theo nhiều chủ đề khác nhau như:đồ vật, nghề nghiệp, động vật, thực vật,.v.v...
Trò chơi yêu cầu người dùng phải có kết nối internet để tải hình ảnh minh hoạ cho từ vựng.Ngoài ra người dùng cũng có thể chơi trò chơi mà không cần kết nối internet, nhưng lúc này sẽ không có ảnh minh hoạ cho từ vựng nữa.
Người dùng cũng có thể đăng nhập để trò chơi sao lưu CSDL và điểm của người dùng,và điều này là không bắt buộc, nếu họ không đăng nhập họ vẫn chơi được bình thường. Trò chơi có nhạc nền khi chơi cũng như âm thanh cho các thao tác của người dùng khi chơi trò chơi.
Trò chơi cũng có giới hạn về thời gian cũng như số lần nhập sai đáp án của người dùng. Trò chơi cung cấp nhiều kiểu nút khác nhau,số lượng kiểu nút của người dùng tương đương với số điểm mà học đạt được.
Cho phép người dùng xem lại những từ đã học được.
Đối với những người dùng muốn học một số từ nhất định mà họ muốn, ứng dụng cũng cung cấp tính năng tự học cho người dùng.
3.1.2 Luật chơi, cách chơi và cách tính điểm:
Trong mỗi màn chơi, trò chơi sẽ tạo ra một từ vựng tiếng anh tương ứng với từ với chủ đề từ vựng mà người dùng chọn.Từ vựng này được chia thành nhiều chữ cái nằm liền nhau trong 35 ô tròn và nhiệm vụ của người dùng là tìm ra từng chữ cái đúng theo thứ tự của chữ cái của từ vựng trong khoảng thời gian qui định là 30 giây.
Từ vựng không được hiển thị cho người dùng thấy mà thay và đó là nghĩa tiếng Việt và ảnh minh hoạ của từ vựng đó.Người dùng dựa vào đó để tìm từ vựng.
Nếu sau 30 giây mà người dùng không tìm ra được từ vựng thì trò chơi sẽ kết thúc và thông báo điểm của người dùng, người dùng có thể chọn chơi lại hoặc vào bảng xếp hạng để xem điểm và thứ hạng của mình.
Ngoài ra trong mỗi lần nhấn sai ký tự người dùng sẽ bị trừ 1 giây vào thời gian còn lại. Mỗi lần hoàn thành đúng từ vựng của trò chơi người dùng sẽ được 10 điểm cộng với thời gian còn lại của người dùng.Trả lời đúng càng nhanh thì điểm càng cao.Số điểm này được cộng dồn lại và hiển thị cho người dùng thấy sau đó trò chơi sẽ tạo tiếp từ vựng cho người dùng chơi tiếp.
Sau khi kết thúc trò chơi tổng điểm của người dùng sẽ được lưu lại và số điểm này sẽ hiển thị cho lần chơi tiếp theo.
3.1.3 Lưu trữ thông tin người dùng.
Thông tin của người dùng sẽ được lưu trữ ở CSDL SQLite của ứng dụng và CSDL MySql trên một web service có tên miền là http://nam01678.5gbfree.com/HTV/ Đây cũng là nơi quản lý các phương thức truy vấn đến CSDL MySql.
Để có thể sao lưu dữ liệu trên CSDL MySql người dùng bắt buộc phải đăng ký một tài khoản trong ứng dụng.
36
3.2 THIẾT KẾ TRÒ CHƠI Sơ đồ use case: Sơ đồ use case:
37
38
Sau khi khởi động trò chơi người dùng có thể thực hiện các chức năng sau:
39
Đăng Nhập:Để có thể sao lưu CSDL người dùng cần phải đăng nhập vào ứng dụng với email và mật khẩu đã đăng ký
40
Đăng ký tài khoản:Ứng dụng cho phép người dùng đăng ký tài khoản để đăng nhập vào ứng dụng.
41
Chọn chủ đề:Để bắt đầu trò chơi người dùng cần chọn chủ đề mà mình muốn chơi để trò chơi có thể chọn lọc từ vựng cho phù hợp.
42
Giao diện chính trong trò chơi:
Bật/Tắt âm thanh:Khi chơi thì mặc định sẽ có nhạc nền,để tắt hoặc mở nhạc nền người dùng có thể chọn nút âm thanh trên giao diện trò chơi
Người dùng tạo ra đáp án bằng cách chọn các chữ cái trên màn hình nếu đúng nó sẽ hiện màu xanh lá, nếu sai thì màu đỏ.
43
Giao diện bảng xếp hạng trong trò chơi:Bảng xếp hạng chia làm hai loại gồm bảng xếp hạng thế giới và bảng xếp hạng bạn bè
44
45
3.3 CÁC THUẬT TOÁN TRONG TRÒ CHƠI
Các thuật toán trong trò chơi bao gồm 2 phần: Phần tạo câu hỏi và phần tiếp nhận câu trả lời.
3.3.1 Tạo câu hỏi trong trò chơi
Đầu tiên trò chơi sẽ lấy thông tin từ vựng từ CSDL SQLite dựa vào chủ đề mà người dùng chọn, sau đó sẽ hiển thị nghĩa tiếng việt và tải ảnh minh hoạ của từ vựng, lúc này trò chơi bắt đầu tạo câu hỏi từ 35 nút nằm phía dưới
Hình 3.3.1.1 Các nút sẽ được gán chứ cái
Đầu tiên chọn ngẫu nhiên 1 trong số 35 ô tròn và gán chữ cái đầu tiên của từ khoá cho ô này.
Lưu toạ độ của ô này vào một mảng số nguyên với giá trị là một số nguyên có 2 chữ số, chữ số hàng chục là hàng, chữ số hàng đơn vị là cột.Mảng này dùng để lưu đáp án của câu trả lời nhầm phục vụ việc hiện đáp án ở cuối trò chơi.
Chọn ngẫu nhiên 1 ô liền kề với ô vừa chọn và gán chữ cái tiếp theo của từ khoá cho ô này và xem ô này như ô cuối cùng được gán.
Tiếp tục lưu toạ độ ô này như trên.
Cứ tiếp tục tìm ngẫu nhiên ô liền kề với ô cuối cùng được gán (ngoại trừ các ô đã gán) và gán chữ cái tiếp theo cho đến chữ cái cuối cùng của từ khoá.
46
Hình 3.3.1.2 Từ khoá được tạo là HOUSE
Tiếp theo chỉ cần chạy một vòng lặp để điền các ô trống còn lại bằng một chữ cái ngẫu nhiên.Lúc này từ vựng sẽ nằm ẩn bên trong 35 ô tròn.
47
Hình 3.3.1.4 Sơ đồ thuật toán tạo câu hỏi
3.3.2 Tiếp nhận câu trả lời
Trò chơi nhận câu trả lời từ người dùng bằng cách nhấn vào các nút và tạo thành một từ bằng cách ghép các chữ cái mà người dùng đã nhấn cho đến khi hoàn chỉnh và đúng hoàn toàn với từ vựng mà trò chơi đưa ra.
Nếu chữ cái mà người chơi nhấn đúng với chữ cái tiếp theo của từ vựng ô tròn đó sẽ được tô màu xanh lá đồng thời các ô liền kề cũng được tô màu xanh dương các ô còn lại sẽ được tô màu xám (ngoại trừ các ô đã tô màu xanh lá) và lúc này chỉ có các ô màu xanh dương mới nhấn được nhầm giúp người dùng có cái nhìn trực quan hơn để tìm những chữ cái tiếp theo
48
Hình 3.3.2.1 Khi người dùng chọn đúng chữ cái
Khi chọn sai chữ cái nó sẽ được tô màu đỏ, trừ 1 giây của người dùng, các ô còn lại vẫn giữ nguyên màu sắc.
49
Hình 3.3.2.2 Khi người dùng chọn sai chữ cái Người dùng cứ tiếp tục tìm cho đến khi tìm ra từ vựng hoàn chỉnh
50
Hình 3.3.2.3 Sơ đồ tiếp nhận câu trả lời từ người dùng
3.4 CÁC KĨ THUẬT DÙNG TRONG LẬP TRÌNH TRÒ CHƠI 3.4.1 Sử dụng CSDL SQLite 3.4.1 Sử dụng CSDL SQLite
CSDL SQLite của ứng dụng bao gồm 2 bảng:
Bảng TUVUNG dùng để chứa các thuộc tính của từ vựng.
o ID:Mã của từ vựng
o TUVUNG:Tiếng Anh của từ vựng.
o DUNG:Số lần nhập đúng đáp án của người dùng.
o LINK:Đường dẫn đến hình ảnh minh họa trên web service
o TIENGVIET:Nghĩa tiếng việt của từ vựng.
o MACD:Mã chủ đề của từ vựng.
o DONGBO:Kiểm tra xem từ vụng này đã được đồng bộ lên web service hay chưa.
Bảng CHUDE chứa các chủ đề của từ vựng
o MACD:Mã chủ đề của từ vựng.
o TENCD:Tên chủ đề của từ vựng.
Android cung cấp một lớp SQLiteOpenHelper giúp các lập trình viên có thể tao tác với CSDL SQLite. Lớp này cần override 2 phương thức: onCreate() và onUpgrade() để quản lý việc tạo CSDL và version của CSDL đó.
CSDL SQLite của ứng dụng đã được tạo sẵn và nằm trong thư mục assets của trò chơi.Việc đầu tiên cần làm là đưa CSDL này vào thư mục databases của trò chơi, nơi mà lớp SQLiteOpenHelper sẽ quản lý các CSDL SQLite.
Android cung cấp một số phương thức giúp việc thao tác với CSDL SQLite được thuận tiện và nhanh chóng,dưới đây là một số phương thức tiêu biểu được sử dụng trong ứng dụng:
query():Đây là phương thức thường được sử dụng nhất,nó thích hợp cho các câu truy vấn đơn giản với một bảng và một vài điều kiện truy vấn. Kết quả trả về là một đối tượng cursor.
51
update():Phương thức cập nhật CSDL với tham số thứ 2 là một đối tượng content values chứa các cặp giá trị gồm key và value,các cặp giá trị này có thể có nhiều kiểu dữ liệu khác nhau tương ứng với các giá trị trong CSDL SQLite.Kết quả trả về là một số nguyên kiểu int cho biết số dòng được cập nhật.
delete():Phương thức xóa các dòng trong SQLite với kết quả trả về là một số nguyên kiểu int cho biết số dòng bị xóa.
insert():Đây cũng là một phương thức được sử dụng phổ biến trong SQLite,nó cũng sử dụng một đối tượng content values như phương thức update.
drawQuery():Đây là phương thức thực hiện các câu lệnh SQL chuẩn trong SQLite, nó thích hợp dùng để truy vấn với nhiều bảng và điều kiện ràng buộc.Kết quả trả về là một đối tượng cursor.
Cursor trong SQLite:Là một đối tượng lưu trữ dữ liệu kiểu con trỏ với nhiều kiểu dữ liệu khác nhau, được lưu dữ dưới dạng key và value.
Các phương thức này sẽ được sử dụng để truy vấn và cập nhật CSDL SQLite khi ứng dụng hoạt động.
3.4.2 Đăng ký Broadcast Receiver
Như đã nói ở trên Broadcast Receiver là một trong những thành phần quan trọng của một ứng dụng Android.Broadcast Receiver dùng để nhận các intent từ hệ thống hoặc trao đổi dữ liệu giữa hai hay nhiều ứng dụng.
Một ứng dụng muốn nhận được các thông tin từ hệ thống nó phải đăng ký sử dụng Broadcast Receiver, đăng ký có hai cách:
Đăng ký ngay trong coding: Cách này ít được dùng vì chỉ khi ứng dụng mở lên nó mới nhận các thông tin từ hệ thống, khi ứng dụng tắt đi thì nó cũng không nhận được nữa.
Đăng ký trong AndroidMaintifest.xml: Cách này được sử dụng rất nhiều, với cách đăng ký này ngay cả khi ứng dụng đang tắt nó vẫn có thể nhận được thông tin từ hệ thống, khi nhận được thông tin nó lập tức khởi động ứng dụng.
Trò chơi sẽ đăng ký một Broadcast Receiver nhận thông tin về kế nối mạng của thiết bị.
3.4.3 Xử lý đa tiến trình bằng AsyncTask
AsyncTask là một class được cung cấp sẵn trong Android, giúp cho các thread chạy ngầm mà vẫn dễ dàng giao tiếp với giao diện người dùng thông qua các hàm cung cấp sẵn.
Class này cho phép thực hiện công việc bất đồng bộ lên giao diện người dùng.Nó thực hiện thao tác khóa trong luồng con và sau đó tiếp nhân kết quả lên thread chính chạy trên giao diện người dùng.
Để sử dụng ta cần tạo ra một class kế thừa từ class AsyncTask sau đó thực thi hàm doInBackground(). Để cập nhật giao diện ta cần thực thi hàm onPostExecute(), hàm này chuyển kết quả từ doInBackground và chạy trên thread chính trên giao diện người dùng. Class này được chạy bằng cách gọi execute() từ thread chính, khi thực thi phương thức execute() nó sẽ gọi hai hàm doInBackground() và onPostExecute().
52
Trong AsyncTask<Params, Progress, Result> có 3 đối số là các Generic Type:
Params:Là giá trị (biến) được truyền vào khi gọi thực thi tiến trình và nó sẽ được truyền vào doInBackground().
Progress: Là giá trị (biến) dùng để update giao diện diện lúc tiến trình thực thi, biến này sẽ được truyền vào hàm onProgressUpdate.
Result:Là biến dùng để lưu trữ kết quả trả về sau khi tiến trình thực hiện xong.