Tải bản đầy đủ (.pdf) (43 trang)

Xây dựng web game cờ caro và chat online

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.39 MB, 43 trang )

MỤC LỤC
DANH MỤC HÌNH ẢNH ................................................................................. 3
LỜI CẢM ƠN ................................................................................................... 5
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ THỰC HIỆN .................... 7
1.1. Tổng quan về CodeIgniter ....................................................................... 7
1.1.1. Giới thiệu về Codeigniter .................................................................. 7
1.1.2. Tính năng .......................................................................................... 7
1.1.3. Ưu điểm và nhược điểm của CodeIgniter .......................................... 9
1.1.4. Cài đặt CodeIgniter ......................................................................... 12
1.1.5. Giới thiệu về PHP và MySQL ......................................................... 14
1.1.6. Cài đặt Wamppserver trên localhost ................................................ 19
Chương 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ..................................... 21
2.1. Giới thiệu trò chơi cờ caro ..................................................................... 21
2.1.1. Luật chơi cờ caro ............................................................................. 21
2.1.2. Giới thiệu về Web Service ............................................................... 22
2.2. Phân tích và thiết kế hệ.......................................................................... 23
2.2.1. Tác nhân và các user ....................................................................... 23
2.2.2. Biểu đồ Use Case (UC) ................................................................... 23
2.2.3. Đặc tả một số UC chính................................................................... 25
2.3. Thiết kế hệ thống ................................................................................... 32
2.4. Biểu đồ lớp các ca sử dụng .................................................................... 33
2.5. Biểu đồ triển khai .................................................................................. 33
2.6. Biểu đồ quan hệ thực thể ....................................................................... 34
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH .................................................... 35
3.1. Ý tưởng xây dựng.................................................................................. 35
3.2. Kịch bản xây dựng chương trình ........................................................... 35
3.3. Xây dựng chương trình.......................................................................... 36
3.3.1. Màn hình chính ............................................................................... 36
1



3.3.2. Màn hình đăng nhập ........................................................................ 37
3.3.3. Màn hình đăng ký ............................................................................ 37
3.3.4. Màn hình load phòng game ............................................................. 38
3.3.5. Màn hình thi đấu ............................................................................. 39
3.3.6. Màn hình hỗ trợ ............................................................................... 40
KẾT LUẬN..................................................................................................... 42
TÀI LIỆU THAM KHẢO ............................................................................... 43

2


DANH MỤC HÌNH ẢNH

Hình1.1: Mô hình MVC............................................................................................... 9
Hình 1.2: Mô hình MVC trong dự án website ............................................................ 10
Hình 2.1:Biểu đồ UC mức tổng thể ............................................................................ 24
Hình 2.2: Biểu đồ UC chi tiết tác nhân quản trị hệ thống ........................................... 24
Hình 2.3: Biểu đồ UC chi tiết tác nhân người chơi ..................................................... 25
Hình 2.4: Biểu đồ trình tự UC đăng ký thành viên ..................................................... 26
Hình 2.5: Biểu đồ trình tự UC đăng nhập hệ thống .................................................... 28
Hình 2.6: Biểu đồ trình tự UC load DS phòng............................................................ 29
Hình 2.7 : Biểu đồ lớp ca sử dụng đăng ký ................................................................ 33
Hình 2.8: Biểu đồ lớp ca sử dụng đăng nhập .............................................................. 33
Hình 2.9: Biểu đồ triển khai ....................................................................................... 34
Hình 2.10: Biểu đồ quan hệ thực thể .......................................................................... 34
Hình 3.1 : Màn hình trang chủ ................................................................................... 36
Hình 3.2 : Màn hình đăng nhập .................................................................................. 37
Hình 3.3: Màn hình đăng ký ...................................................................................... 38
Hình 3.4: Màn hình load danh sách phòng game ........................................................ 39
Hình 3.6: Màn hình thi đấu ........................................................................................ 40

Hình 3.7: Màn hình trợ giúp ...................................................................................... 41

3


LỜI NÓI ĐẦU

Ngày nay khi công nghệ thông tin ngày càng phát triển và nhu cầu giải trí
của con người ngày càng cao thì việc vận dụng công nghệ thông tin vào việc xây
dựng các ứng dụng game trên internet để đáp ứng nhu cầu của con người là một
hướng đi không còn mới mẻ với chúng ta. Nhưng việc đó vẫn chưa hết hấp dẫn
hiện nay. Và đó là một trong những nghề hái ra tiền nhất khi vận dụng công
nghệ thông tin.
Bắt nguồn từ những lợi ích mà các webgame mang lại, cùng với sự hướng
dẫn của cô giáo Nguyễn Hiền Trinh, em đã thực hiện đề tài “Xây dựng
webgame cờ caro và chat online”.
Là một sinh viên ngành Công nghệ thông tin đang học tập trong Trường
Đại Học Công Nghệ Thông Tin Và Truyền Thông Thái Nguyên em luôn cố
gắng học hỏi và trang bị cho mình những kỹ năng cần thiết. Với mục đích tổng
hợp những kiến thức đã học vào tìm hiểu và vận dụng để giải quyết các công
việc thực tiễn, đặc biệt dưới sự hướng dẫn nhiệt tình của cô giáo hướng dẫn và
sự nỗ lực của bản thân, em đã hoàn thành đề tài của mình đúng thời gian.
Đề tài đã thực hiện khảo sát, phân tích, thiết kế và xây dựng ứng dụng
trong thực tế. Để xây dựng được một Website theo đúng yêu cầu cần giải quyết
một số công việc sau:
- Tìm hiểu về mã nguồn mở CodeIgniter và sử dụng các kỹ thuật ajax để
hiểu một cách sâu sắc ngôn ngữ này và cách hoạt động của nó theo mô hình
MVC.
- Phân tích, thiết kế và xây dựng Webgame cờ caro có chat online dành cho
người chơi.

Nội dung chính của đề tài bao gồm:
Chương 1: Cơ sở lý thuyết và công cụ thực hiện
Chương 2: Phân tích và thiết kế hệ thống
Chương 3: Xây dựng chương trình
4


LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cảm ơn tới các thầy cô trường đại học Công
nghệ Thông tin và Truyền thông, đặc biệt là các thầy cô trong khoa Công
nghệ thông tin đã trang bị cho em nền tảng vững chắc về kiến thức chuyên
ngành, kiến thức lập trình và nhiều lĩnh vực liên quan khác.
Trong quá trình làm đồ án mặc dù đã có nhiều cố gắng nhưng kinh
nghiệm còn chưa nhiều nên thiết kế và xây dựng sản phẩm của em không thể
tránh khỏi những thiếu sót. Em rất mong nhận được sự chỉ bảo, đóng góp ý
kiến của toàn thể các thầy cô giáo để thiết kế của em ngày càng hoàn thiện
hơn nữa.
Có được kết quả tốt như vậy, phải nói đến công lao chỉ bảo của cô giáo
Nguyễn Hiền Trinh. Em xin chân thành cảm ơn thầy,cô cùng các thầy cô
giáo trong Trường ĐH công nghệ thông tin và truyền thông- Đại học Thái
Nguyên đã nhiệt tình tạo điều kiện và hướng dẫn em hoàn thành đồ án này.
Em xin chân thành cảm ơn !
Sinh viên thực hiện

NGUYỄN THỊ THÚY LÀNH

5


LỜI CAM ĐOAN

Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng được
yêu cầu đề ra, em đã cố gắng tìm hiểu, học hỏi, tích lũy kiến thức đã học. em có
tham khảo một số tài liệu đã nêu trong phần “Tài liệu tham khảo” nhưng không
sao chép nội dung từ bất kỳ đồ án nào khác.
Em xin cam đoan những lời trên là đúng, 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.
Thái nguyên, ngày tháng năm 2017
Sinh viên
Nguyễn Thị Thúy Lành

6


Chương 1
CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ THỰC HIỆN
1.1.

Tổng quan về CodeIgniter

1.1.1. Giới thiệu về Codeigniter
Codeignter là một nền tảng ứng dụng web (web application framework)
nguồn mở được dùng để xây dựng các ứng dụng web động tương tác với PHP.
Nó cho phép các nhà phát triển xây dựng một ứng dụng web nhanh hơn - so với
việc viết mã hỗn tạp – bằng cách cung cấp 1 bộ thư viện đầy đủ cho các tác vụ
thông thường, cũng như cung cấp một mô hình tương tác đơn giản và dễ hiểu
cho việc kết nối tới nhwungx bộ thư viện đó. Phiên bản chính thức đầu tiên của
Codeigniter được công bố vào 28/ 2/ 2006. Phiên bản mới nhất hiện nay là 3.1.4.
Codeigniter là một framework viết bằng ngôn ngữ lập trình PHP dựa trên nền
tảng MVC (Model – View - Controller) cho phép tạo các trang web để có kịch
bản tối thiểu kể từ khi trìn bày và tách biệt với kịch bản PHP, nói đơn giản thì

code thuần PHP thì phải tự tổ chức cấu trúc giữa giao diện, xử lý code và cơ sở
dữ liệu.
1.1.2. Tính năng
CodeIgniter khuyến khích các lập trình viên sử dụng mô hình MVC (model–
view - controller) cho các ứng dụng web của mình.
CodeIgniter cũng mang một số khái niệm đặc thù và các tính năng cơ bản của
các mô hình MVC khác như Ruby on Rails:
 Hỗ trợ kết nối và tương tác đa nền tảng cơ sở dữ liệu
 Tương tác với cơ sở dữ liệu thông qua active records
 Session Management (quản lý Session)
 Dịnh dạng và chuẩn hóa form và dữ liệu đầu vào
 Hỗ trợ Caching toàn trang để tăng tốc độ thực thi và giảm tải tối thiểu cho
máy chủ.

7


 Hỗ trợ Template Engine hoặc sử dụng chính PHP tags để điều hướng
trong Views
 Hỗ trợ Hooks, các lớp ngoại (Class Extensions) và các Plugins
Trong số các mô hình framework MVC khác, CodeIgniter có các ưu điểm sau :
 Tương thích hoàn toàn với PHP 4. Nếu sử dụng PHP 5 sẽ dùng được các
tính năng hữu ích khác nhưu khả năng gọi phương thức dây chuyền
(method chaining ablity).
 Mô hình code nhẹ cho hệ thống, cải thiện tốc độ thực thi.
 Đơn giản trong việc cài đặt, cấu hình và cấu trúc thư mục.
 Mềm dẻo trong việc định tuyến URI (URI Routing)
Framework này tích hợp thêm vào một số lớp thư viện khác mà các
framework khác chưa mặc định tích hợp:
 Bảo mật và XSS Filtering

 Gửi Email, hỗ trợ đính kèm, HTML/Text email, đa giao thức (sendmail,
SMTP và mail).
 Thư viện chỉnh sửa ảnh (cắt ảnh, thay đổi kích thước, xoay ảnh,v.v…) Hỗ
trợ GD, ImageMagick và NetPBM
 Upload file
 FTP Class – Tương tác với máy chủ thông qua giao thức FTP
 Localization
 Phân trang tự động
 Mã hóa dữ liệu – Data Encryption
 Đo lường tốc độ thực thi – Benchmarking
 Application Profiling
 Lịch – Clendaring Class
 User Agent Class
 Nén – Zip Encoding Class
 Trackback Class
8


 XML – RPC Library
 Unit Testing Class
 Một lượng lớn các hàm hỗ trợ.
1.1.3. Ưu điểm và nhược điểm của CodeIgniter
CodeIgniter được đánh giá là một PHP framework có tốc độ nhanh nhất
hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache), kiểm tra bộ đệm trước
khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử lý dữ
liệu, từ đó tối ưu hóa tốc độ tải trang.
 Ưu điểm
Được thiết kế theo mô hình Model-View-Controller
Mô hình MVC giúp tách thành phần hiển thị giao diện (presentation)
và xử lý (business logic) của một phần mềm thành những thành phần độc

lập, từ đó giúp cho việc thiết kế, xử lý và bảo trì mã nguồn dễ dàng, đồng
thời tăng khả năng mở rộng của phần mềm.

Hình1.1: Mô hình MVC
Quy trình hoạt động mô hình MVC trong dự án website
Mô hình trên là thể hiện mô hình MVC trong các dự án website và sẽ hoạt động
theo quy trình sau:

9


Hình 1.2: Mô hình MVC trong dự án website
- Người dùng sử dụng một BROWSER trình duyệt web bất kỳ (Firefox,
Chrome, IE,…) để có thể gửi những yêu cầu (HTTP Request) có thể kèm theo
những dữ liệu nhập tới những CONTROLLER xử lý tương ứng. Việc xác định
Controllerr xử lý sẽ dựa vào một bộ Routing điều hướng.
- Khi CONTROLLER nhận được yêu cầu gửi tới, nó sẽ chịu trách nhiệm
kiểm tra yêu cầu đó có cần dữ liệu từ MODEL hay không? Nếu có, nó sẽ sử
dụng các class/function cần thiết trong MODEL và nó sẽ trả ra kết quả(
Resulting Arrays), khi đó CONTROLLER sẽ xử lý giá trị đó và trả ra VIEW để
hiển thị. CONTROLLER sẽ xác định các VIEW tương ứng để hiển thị đúng với
yêu cầu.
- Khi nhận được dữ liệu từ CONTROLLER, VIEW sẽ chịu trách nhiệm xây
dựng các thành phẩn hiển thị như hình ảnh, thông tin dữ liệu… và trả về GUI
Content để CONTROLLER đưa ra kết quả lên màn hình BROWSER.
- BROWSER sẽ nhận giá trị trả về( HTTP Response) và sẽ hiển thị với
người dùng. Kết thúc một quy trình hoạt động.

CodeIgniter vận dụng mô hình này trong thiết kế, giúp tách biệt các tập
tin giao diện với các tập tin xử lý dữ liệu, nâng cao khả năng quản lý và dễ


10


bảo trì. Nhỏ gọn: Gói cài đặt chỉ 404KB (không bao gồm phần User
Guide). So với các PHP framework khác như CakePHP (1.3MB), Symfony
(5.08MB) hay Zend Framework (5.66MB)…kích thước của CodeIgniter giúp
giảm thiểu đáng kể không gian lưu trữ.
Tốc độ nhanh
CodeIgniter được đánh giá là một PHP framework có tốc độ nhanh nhất
hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache), kiểm tra bộ đệm
trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử
lý dữ liệu, từ đó tối ưu hóa tốc độ tải trang.
Miễn phí
CodeIgniter được phát hành dưới giấy phép Apache/BSD mở rộng, cho
phép người dùng tự do thay đổi, phát triển và phân phối mã nguồn. Hỗ trợ
Search Engine Optimization: Cấu trúc URL của CodeIgniter rất thân thiện với
các robot tìm kiếm.
Hệ thống thư viện phong phú
CodeIgniter cung cấp các thư viện phục vụ cho những tác vụ thường gặp
nhất trong lập trình web, chẳng hạn như truy cập cơ sở dữ liệu, gửi email,
kiểm tra dữ liệu, quản lý session, xử lý ảnh…đến những chức năng nâng cao
như XML-RPC, mã hóa, bảo mật…
Bảo mật hệ thống
Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa XSS và SQL Injection của
CodeIgniter giúp giảm thiểu các nguy cơ bảo mật cho hệ thống.
 Nhược điểm
Chưa hỗ trợ Object Relational Mapping
Object Relational Mapping (ORM) [25] là một kỹ thuật lập trình, trong
đó các bảng của cơ sở dữ liệu được ánh xạ thành các đối tượng trong

chương trình. Kỹ thuật này giúp cho việc thực hiện các thao tác trong cơ
sở dữ liệu (Create Read Update Delete – CRUD) dễ dàng, mã nguồn
ngắn gọn hơn. Hiện tại, CodeIgniter vẫn chưa hỗ trợ ORM.
11


Chưa hỗ trợ AJAX
AJAX (Asynchronous JavaScript and XML) [26] đã trở thành một
phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX giúp nâng
cao tính tương tác giữa người dùng và hệ thống, giúp cho người dùng có cảm
giác như đang sử dụng ứng dụng desktop vì các thao tác đều diễn ra “tức
thời”. Hiện tại, CodeIgniter vẫn chưa có thư viện dựng sẵn nào để hỗ trợ xây
dựng ứng dụng AJAX. Lập trình viên phải sử dụng các thư viện bên ngoài,
như jQuery, Script.aculo.us, Prototype hay Mootools…
Chưa hỗ trợ một số module thông dụng
So sánh với framework khác, CodeIgniter không có các module thực thi
một số tác vụ thường gặp trong quá trình xây dựng ứng dụng web như Chứng
thực người dùng (User Authorization), trình phân tích RSS (RSS Parser) hay
trình xử lý PDF…
Chưa hỗ trợ Event-Driven Programming
Event-Driven Programming (EDP) là một nguyên lý lập trình, trong đó
các luồng xử lý của hệ thống sẽ dựa vào các sự kiện, chẳng hạn như click
chuột, gõ bàn phím không phải là một khuyết điểm to lớn của CodeIgniter
vì hiện tại, chỉ có một số ít framework hỗ trợ EDP, bao gồm Prado,
QPHP và Yii.
1.1.4. Cài đặt CodeIgniter
Bước 1: Tải version 3.1.4 của CodeIgniter tại trang chính tại địa chỉ
/>Bước 2: Tạo thư mục “caro” trong Wamp/htdocs
Bước 3:
Giải nén file vừa tải về vào thư mục “caro”.

Tìm đến thư mục “config” trong thư mục “system/ application” để chỉnh sửa
một số file nhằm cấu hình cho ứng dụng.
Bước 4:
Tìm đến file “config.php” và thêm vào các dòng lệnh:
12


$config['base_url'] = "http://localhost/caro";
Đây là đường dẫn để chạy chương trình web nằm trên thư mục caro trên
localhost.
Nếu trên mạng internet thì chúng ta đổi thành cấu hình khác bằng cách thêm các
dòng lệnh như sau:
$config['base_url'] = isset($_SERVER['HTTPS']) &&
strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : http';
$config['base_url'] .= '://'. $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), '',
$_SERVER['SCRIPT_NAME']);
Giải thích:
Với các dòng lệnh này thì trang web sẽ tự nhận tên miền, tức là động hoàn
toàn khi fix tên miền.
Tìm đến file “constants.php” và thêm cách hằng cần dùng vào đây
Tìm đến file “database.php” và chỉnh sửa một số thông tin cần thiết:
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "caro";
(Thông tin về tên đăng nhập và mật khẩu vào CSDL, thông tin về tên CSDL sẽ
kết nối đến)
$db['default']['dbdriver'] = "mysql";
(Thông tin về loại CSDL, mặc định là mysql, có thể thay đổi bởi CSDL khác là
Oracle, SqlServer…)

$db['default']['dbprefix'] = "";
(Thông tin tiền tố đối với các bảng CSDL)
$db['default']['pconnect'] = TRUE;
(Nếu

đặt

giá

trị



TRUE

thì

$db['default']['db_debug'] = TRUE;

13

sẽ

tạo

kết

nối

thường


trực)


(Có bật tính năng nhìn thấy lỗi hay không, nếu để là TRUE thì sẽ nhìn thấy lỗi
khi trang web có lỗi).
$db['default']['cache_on'] = FALSE;
(Bật tắt tính năng để sử dụng hay không sử dụng cache, nếu để FALSE thì cache
không được bật).
$db['default']['cachedir']

=

"";

(Cài đặt thư mục lưu cache)
1.1.5. Giới thiệu về PHP và MySQL
1.1.5.1. Giới thiệu về PHP
PHP (Hypertext Preprocessor) 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.
Cặp thẻ <?php ...... ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã
PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá
tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng
trong việc xây dựng phần giao diện ứng dụng HTTP.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng

đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển
lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP
phát triển ở quy mô doanh nghiệp.
Lịch sử phát triển của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn
giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý
lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal
14


Home Page Tools'.Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra
một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và
giúp cho người sử dụng phát triển các ứng dụng web đơn giản.Rasmus đã
quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng cũng
như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm
một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó
có các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp
HTML nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều,
đơn giản và có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu
hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên
miền đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên
mạng Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu
chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của
một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một
thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu
sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.

PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi
với các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi
Gutmans và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã
nguồn trước đó. Lý do chính mà họ đã tạo ra phiên bản này là do nhận họ
thấy PHP/FI 2.0 hết sức yếu kém trong việc phát triển các ứng dụng thương
mại điện tử mà họ đang xúc tiến trong một dự án của trường đại học. Trong
một nỗ lực hợp tác và bắt đầu xây dựng dựa trên cơ sở người dùng đã có của
PHP/FI, Andi, Rasmus và Zeev đã quyết định hợp tác và công bố PHP 3.0

15


như là phiên bản thế hệ kế tiếp của PHP/FI 2.0, và chấm dứt phát triển
PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở
rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ
sở hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác
nhau, các tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển
tham gia và đề xuất các mô đun mở rộng mới. Hoàn toàn có thể kết luận được
rằng đây chính là điểm mấu chốt dẫn đến thành công vang dội của PHP
3.0.Các tính năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp
hướng đối tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ
mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên
PHP/FI 2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt
hồi quy của "PHP: Hypertext Preprocessor".
Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng
chục ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài
nó.Vào thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ

Web có trên mạng Internet.
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời
gian 9 tháng được cộng đồng kiểm nghiệm.
PHP 4
Mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố,
Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi
của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức
tạp, và cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã
chạy được trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các
cơ sở dữ liệu và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế
để xử lý các ứng dụng phức tạp như thế này một cách có hiệu quả.

16


Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên
của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành
công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên
động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính
thức được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra
đời. Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính
năng chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên
làm việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người
sử dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ
mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên
mạng Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều
nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR,

PECL và tài liệu kĩ thuật cho PHP.
PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát
triển PHP tự mãn.Cộng đồng php đã nhanh chóng giúp họ nhận ra những yếu
kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng
(OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1
và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev
và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot
đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12
năm 2002 nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì
đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6
năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm
nghiệm.Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2
sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất
17


được chờ đợi: Iterators, Reflection nhưng namespaces một tính năng gây
tranh cãi khác đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5
Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ
trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều
lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13
tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta
4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng
PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP.
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố
đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực
trong việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ
liệu và thực hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển
PHP tiếp tục có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun

PCRE lên bản PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP,
streams và SPL
PHP 6
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản
sử dụng thử đã có thể được download tại địa chỉ . Phiên
bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên
bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa
công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn
cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện
PECL...
1.1.5.2. Hệ quản trị cơ sở dữ liệu MySQL
MySQL là 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. Vì 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
18


cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn
toàn cho nên có thể tải về MySQL từ trang chủ. 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 là 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).
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,...
1.1.6. Cài đặt Wamppserver trên localhost
Wampserver là chữ viết tắt của Windows – Apache – MySQL – PHP.

Wampserver là chường trình tạo máy chủ web với mục đích giúp cho người lập
trình web có thể chạy các ứng dụng web trên máy cá nhân (localhost) trước khi
chuyển lên chạy chính thức trên web.
Bước 1: Tải chương trình wampserver từ website của nhà cung cấp tại địa
chỉ: />Chọn 64 bits hoặc 32 bits tùy theo hệ điều hành máy bạn đã cài đặt. Bạn có
thể xem bằng cách click chuột phải vào biểu tượng Computer -> chọn Properties
là thấy!
Sau khi tải về chúng ta có file wampserver2.5-Apache-2.4.9-Mysql-5.6.17php5.5.12-32b.exe
Lưu ý: khi cài đặt Wampserver bạn cần phải cài đặt Visual C++
Redistributable for Visual Studio 2012 tránh tình trạng báo lỗi thiếu file không
khởi động được wamp.
Ban có thể down và cài đặt về máy tại link. />Việc cài đặt hoàn toàn đơn giản, nếu khi cài đặt có báo lỗi là bạn chưa cài
Visual C++ link ở trên. Cần cài Visual C++ và gỡ Wamp ra cài lại từ đầu.
Bước 2: Cài đặt wampserver.
19


Chúng ta click vào file mới tải về để chạy chương trình cài đặt. Và tiến
hành cài đặt.
Lưu ý: khi khởi động wamp, nếu bạn có cài Skype và đang đăng nhập thì
bạn nên thoát nick và ứng dụng Skype ra, để skype không giành port 80 khi
chạy web nha. Sau khi khởi động wamp báo hiệu xanh như hình dưới rồi login
Skype lại là được.

20


Chương 2
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1. Giới thiệu trò chơi cờ caro

Cờ caro là một trò chơi trí tuệ, đòi hỏi người chơi phải nhanh trí trong khi
chơi. Nó là một trò chơi nhỏ hấp dẫn và không thiếu phần sáng tạo, chắc chắn ai
cũng từng trải nghiệm qua trò chơi này trong những lúc xả stress cùng bạn bè.
Nhưng trong cuộc sống hiện đại ngày nay chúng ta không thể trực tiếp ngồi chơi
cờ cùng nhau. Vì vậy, cờ caro online đã ra đời phục vụ nhu cầu đó.
2.1.1. Luật chơi cờ caro
Luật chơi cũng có đôi chỗ khác nhau, nhưng luật cơ bản là hai bên thay
phiên nhau đi những nước đi (bằng các dấu X, O hoặc bằng các quân cờ đen,
trắng), bên nào có đường 5 quân liền nhau trên một hàng, một cột hoặc một
đường chéo là thắng.
Trong môn cờ carô, bên đi trước luôn có lợi thế rất lớn, thậm chí
L.Victor Allis còn chứng minh được rằng trong cờ carô tự do, bên đi trước
luôn luôn thắng. Chính vì vậy, người ta đưa ra một số luật bổ sung để hạn chế
lợi thế của người đi trước (quân đen) và tăng cường khả năng phòng thủ của
người đi sau.
Chẳng hạn, trong luật chơi cờ ca-rô của Việt Nam, người nào đi được 5
quân nhưng đã bị chặn trước ở 2 đầu sẽ không thắng. Một số nơi thì không
công nhận 6 quân liền nhau là thắng, một số nơi lại không công nhận bẫy 3 x
3 (tức là nước đi tạo thành 2 hàng 3 chưa có quân chặn của đối phương sẽ bị
cấm) …
Trong các luật bổ sung như vậy thì luật renju (theo tên gọi của người
Nhật) là phức tạp và chặt chẽ nhất, đồng thời cũng giúp cân bằng cơ hội của
quân trắng (đi sau) với quân đen. Xin giải thích ngắn gọn các luật cơ bản như
sau: Ván cờ được chơi trên bàn cờ n x n dòng kẻ ( số dòng kẻ có thể là 10
hoặc 15 hoặc một số bất kì). Hai bên sẽ thay phiên nhau đi những quân cờ
vào giao điểm của các hàng ngang và cột dọc. Luật thắng cờ ca-rô được tính
21


như sau: không được tạo thành một hàng 6 quân liên tiếp (overlines), không

được tạo thành các bẫy 3×3 (double-threes) và 4×4 (double-fours) – nếu đi
vào những nước như vậy coi như thua. Cuối cùng, có luật về nước đi thứ 5 và
thứ 7: Ở những nước thứ 5 và thứ 7, quân đen phải đưa ra 2 phương án nước
đi để quân trắng có quyền lựa chọn (Alternative moves 5th and 7th). Hai lựa
chọn này phải không đối xứng nhau (vì nếu đối xứng thì coi như không có
quyền chọn). Tất cả những luật này không những hạn chế ưu thế của quân đen
mà còn đem đến cho quân trắng những cơ hội phải công. Ví dụ, quân trắng,
bằng những nước đi của mình có thể buộc quân đen tạo thành 1 hàng 6 quân
liên tiếp hay tạo thành bẫy 3×3. Có những ván đấu kết thúc ngay ở nước thứ 7
vì quân đen buộc phải đi 2 nước đối xứng.
Để xây dựng ứng dụng em đã sử dụng công nghệ Web Service và ngôn
ngữ lập trình php bằng mã nguồn mwor CodeIgniter để thực hiện.
2.1.2. Giới thiệu về Web Service
Web Services là một cách chuẩn để tích hợp các ứng dụng trên nền web
(Web-based applications). Các ứng dụng có thể sử dụng các thành phần khác
nhau để tạo thành một dịch vụ, ví dụ như máy chủ chạy một trang web thương
mại điện tử kết nối với cổng thanh toán điện tử qua một API – Application
Programming Interface (tạo tởi công nghệ .NET thì web services chính là nền
máy chủ (IIS – Internet Information Services), và các thành phần thanh toán, các
thành phần .NET được coi là component (các thành phầm bên ngoài). Các thành
phần này được gọi bởi phương thức SOAP (Khác phương thức POST, GET) nên
không bị gặp phải firewall khi truy xuất các thành phần bên ngoài máy chủ. Và
toàn bộ các thành phần đó gọi là một Web Services.
Các Web Services cho phép các tổ chức thực hiện truyền thông dữ liệu
mà không cần phải có kiến thức về hệ thống IT phía sau tường lửa. Một số Web
Services hiện nay có sẵn miễn phí và càng ngày càng hướng dần vào các doanh
nghiệp.

22



Một ví dụ về Web Service sẵn có là dịch vụ được cung cấp bởi PayPal
cho phép những người có tài khoản có thể thanh toán hoặc trả một phần hoặc
thực hiện các giao dịch tìm kiếm, và lấy lại các thông tin của từng giao dịch cụ
thể.
2.2. Phân tích và thiết kế hệ
2.2.1. Tác nhân và các user
Tác nhân là thực thể bên ngoài tương tác với hệ thống. Tác nhân có thể
là con người cũng có thể là thiết bị phần cứng hay hệ thống khác có trao đổi
thông tin với hệ thống. Đối với bài toán này ta xác định được các tác nhân và
các UC tương ứng.
Người chơi: Tác nhân này tham gia vào hệ thống chủ yếu là vào game,
chơi game và chat trực tuyến với bạn chơi cùng phòng, xem hỗ trợ game, tin
tức. Ngoài ra hệ thống còn cung cấp cho tác nhân những chức năng cần thiết
như đăng ký thành viên, đăng nhập hệ thống…
Quản trị hệ thống: là người dùng hệ thống có quyền cao nhất trên hệ thống.
Mối quan hệ giữa tác nhân và UC
Tác nhân

UC
Đăng ký thành viên
Đăng nhập hệ thống

Người chơi

Chọn phòng
Thi đấu
Đăng nhập vào hệ thống
Quản lý thành viên


Quản trị hệ thống

Quản lý phòng game

2.2.2. Biểu đồ Use Case (UC)
Biểu đồ UC mức tổng thể
Hệ thống gồm có các chức năng chính là đăng nhập hệ thống, load danh
sách phòng, chọn quân, thi đấu. Khi người chơi đăng nhập hệ thống thành công
sẽ đi đến chức năng load danh sách phòng game cho người chơi chọn phòng, sau
23


đó vào phòng game cho người chơi chọn quân vào thi đấu khi đã chọn đối thủ
hay bàn chơi.

Hình 2.1:Biểu đồ UC mức tổng thể
Biểu đồ UC mức chi tiết
Tác nhân quản trị hệ thống

Hình 2.2: Biểu đồ UC chi tiết tác nhân quản trị hệ thống

24


Tác nhân người chơi

Hình 2.3: Biểu đồ UC chi tiết tác nhân người chơi
2.2.3. Đặc tả một số UC chính
2.2.3.1.


UC đăng ký

Mục đích: Cho người dùng trở thành người chơi có quyền chơi game,
xem tin tức, chat.
Tác nhân: Người dùng.
Mô tả chung: Mô tả quá trình đăng ký trở thành người chơi có quyền vào
những mục được phân quyền trong hệ thống.
Các luồng sự kiện:
Hành động của tác nhân

Phản hồi của hệ thống

1. Người dùng truy cập vào trang 2. Hệ thống hiển thị Form nhập liệu để
web và chọn chức năng đăng ký
cho người dùng đăng ký thông tin.
thành viên.
3. Bạn đọc điền các thông tin vào 4. Hệ thống kiểm tra sự hợp lệ của
Form theo hướng dẫn.
trường thông tin. Nếu không hợp lệ
thì chuyển sang luồng rẽ nhánh 1.
Nếu nhập đúng quay trở lại màn hình
đăng nhập.

25


×