Tải bản đầy đủ (.doc) (14 trang)

Cài đặt trò chơi ca rô 9 ô pot

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 (197.19 KB, 14 trang )

Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN VÀ GIÁO VIÊN CHẤM










































Niên luận 1:NL03_2009 1
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
Nhóm chúng em xin chân thành cảm ơn quý Thầy (Cô) trường Đại học Trà Vinh
nói chung và quý Thầy (Cô) Bộ môn Công nghệ Thông tin nói riêng đã tạo điều kiện và
trang bị cho chúng em những kiến thức cơ bản để thực hiện niên luận này.
Đặc biệt chúng em xin cảm ơn Thầy Ngô Thanh Huy -giáo viên trường Đại học
Trà Vinh, Bộ môn Công nghệ Thông tin đã tận tình hướng dẫn chúng em trong suốt
thời gian thực hiện niên luận,và trong thời gian đó giúp cho chúng em có thêm nhiều
kiến thức bổ ích cũng như ứng dụng của máy tính vào đời sống thiết thực.
Mặc dù bài niên luận đã hoàn tất nhưng không tránh được những sai xót.
Chúng em kính mong nhận được sự cảm thông cùng những lời góp ý quý báu từ quý
Thầy (Cô) cùng các bạn để bài niên luận của chúng em được hoàn chỉnh, chính xác và
tối ưu hơn. Qua đó, chúng em có thể tích lũy những kinh nghiệm cho những bài niên
luận tiếp sau.
Cuối lời chúc quý Thầy (Cô) được nhiều sức khỏe và có nhiều thành công mới
trong hiện tại cũng như tương lai.
Niên luận 1:NL03_2009 2
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ

MỤC LỤC
Phần 1: Giới thiệu đề tài 4
1.1 Giới thiệu tổng quan 4
1.2 Giới hạn chương trình 4
1.3 Mục tiêu cần đạt 5
1.4 Hướng giải quyết 5
Phần 2: Cơ sở lý thuyết 6
2.1 Các định nghĩa 6
2.2 Thuật toán 8
Phần 3: Phân tích- Hiện thực 8
3.1 Công cụ lập trình 8
3.2 Giới thiệu chương trình 9
3.2.1 Giao diện chương trình 9
3.2.2 Các modules chương trình con 10
3.3 Thiết kế giải thuật: 11
3.4 Hàm Main 12
3.4.1 Chương trình 12
3.4.2 Lưu đồ 12
Phần 4: Kết luận- Đánh giá 13
4.1 Kết quả đạt được 13
4.2 Ưu điểm 13
4.3 Hạn chế
Niên luận 1:NL03_2009 3
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
CÀI ĐẶT TRÒ CHƠI CARO 9 Ô
Phần 1: GIỚI THIỆU ĐỀ TÀI
1.1 Giới thiệu tổng quan:
Carô 9 ô là 1 trò chơi đối kháng thông minh giữa hai người, người chơi thay
phiên nhau đi những nước đi (bằng dấu X , O hoặc các quân cờ đen, trắng) tại các ô
trống. Bên nào đi được ba quân cờ liên tiếp thẳng hàng (ngang, dọc, xiên) thì thắng

cuộc. Có khi ván cờ không phân thắng bại khi không còn ô trống mà hai bên không đủ
ba quân cờ liên tiếp, lúc đó hai đấu thủ hòa nhau. Chương trình trò chơi của chúng em
là chương trình trò chơi caro với 3 x 3 ô giữa người với người.
Bàn cờ gồm có 9 ô, trong đó có 3 dòng, 3 cột được tạo nên từ các ký tự đặc biệt
trong đồ họa graphics. Để in ra được đúng vị trí mình muốn thì phải xác định được tọa
độ x, y trong hàm line (hàm vẽ đường thẳng).
Để chơi được trò chơi này thì người chơi sử dụng bằng bốn phím mũi tên để duy
chuyển qua lại giữa các ô trong bàn cờ và sử dụng phím backpace để đánh quân cờ vào
vị trí mà mình đã chọn.
1.2Giới hạn chương trình:
Chương trình được thiết kế giới hạn trên bàn cờ 3x3 ô, giao diện Dos đơn
giản dễ sử dụng, không có sử dụng đồ họa.
X
O

Niên luận 1:NL03_2009 4
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
1.3Mục tiêu cần đạt:
 Phải xác định được trạng thái thắng thua hoặc trạng thái hòa cờ giữa hai
đấu thủ sau mỗi bàn chơi theo quy định của caro 9 ô.
 Phải tìm cách phân tích xem từ một trạng thái nào đó sẽ dẫn đến đấu thủ
nào sẽ thắng với điều kiện cả hai đấu thủ đều có trình độ ngang nhau.
 Phải tìm đủ đáp án của bài toán, thời gian thực thi chương trình nhanh và
chính xác cao.
 Giao diện thân thiện, dễ sử dụng và thể hiện được các qui luật của trò
chơi
 Thể hiện được các trạng thái thắng, thua, hòa tương ứng trong từng ván
cờ
1.4 Hướng giải quyết:
 Hiển thị được bàn cờ 3x3 ô ra màn hình sau mỗi nước đi.

 Khi bàn cờ kết thúc phải xuất ra thông báo về kết quả của cuộc
chơi để xác định ai là người chiến thắng.
 Nắm vững cơ sở lý thuyết về cấu trúc dữ liệu, kỹ thuật thiết kế
giải thuật, thiết kế giao diện để thực hiện các vấn đề trên.
 Chọn cấu trúc dữ kiệu thích hợp để lưu trạng thái của một bàn cờ (
chẳng hạn như dung mảng hai chiều, danh sách liên kết ).
 Dùng ngôn ngữ C để xây dựng các hàm, thư viện đồ họa để vẽ
bàn cờ và các thuật toán cần thiết.
 Dùng mảng để lưu và kiểm tra các nước đi của hai người chơi để
biết ai thắng ai thua và có khả năng xảy ra hòa khi hai người chơi đều xuất
sắc.
Niên luận 1:NL03_2009 5
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
 Sử dụng câu lệnh if và ifelse để người chơi sử dụng bốn phím mũi
tên để duy chuyển con trỏ và phím backspace để đi O hay X trên bàn cờ.
Phần 2: CƠ SỞ LÝ THUYẾT
2.1 Các định nghĩa
 Bàn cờ là một bảng vuông 3x3, nên ta dùng một mảng hai chiều với
kích thước 3x3 để tổ chức bàn cờ.
 Các ô nằm theo chiều ngang là các dòng, các ô nằm theo chiều dọc gọi
là các cột.
 Giải thuật vét cạn Min- Max.
 Nút Max là nút mà người đi O chọn cho mình nước đi sao cho trạng
thái có giá trị là 1.
 Nút Min là nút mà người đi chọn cho minh nước đi sao cho trạng thái
có giá trị là 2.
 Bàn cờ có n ô thì có thể có tới n! nút trên cây ta gọi là sự bùng nổ tổ
hợp các nút.
Hình ảnh minh họa cho nút Max và nút Min trong cây trò chơi.
Niên luận 1:NL03_2009 6

Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
 “Vét cạn” là kỉ thuật phải đi tới tất cả các điểm dừng rồi mới quay lui.
 Giải thuật cắt tỉa Alpha- Beta:
Nếu A là một nút Max và ta đang xét một nút con B của nó (dĩ nhiên
B là nút Min). Giả sử V
a
là một giá trị tạm của A, V
b
một giá trị tạm của B và nếu ta
có V
a
≥ V
b
thì ta không cần xét các con chưa xét của B nữa. Vì nếu có xét thì giá trị
của B cũng sẽ nhỏ hơn hoặc bằng V
b
và do đó không ảnh hưởng gì đến V
a
. Tương tự
nếu A là nút Min (tất nhiên B là nút Max) và V
a
≤ V
b
thì ta cũng không cần xét đến các
con chưa xét của B nữa. Việc không xét tiếp các con chưa được xét của nút B gọi là
việc cắt tỉa Alpha-Beta các con của nút B.
Niên luận 1:NL03_2009 7
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
 “Cắt tỉa alpha-beta” là kỉ thuật không nhất thiết phải đi tới tất cả các điểm
dừng mà chỉ cần đi đến một số điểm nào đó và dựa vào một số suy luận nào đó để có

thể quay lui sớm.
2.2 Thuật toán:
Quay lui là một quá trình phân tich đi xuống và quay lui trở lại theo con
đường đã đi qua. Tại mỗi bước có thể chúng ta chưa giải quyết được vấn đề vì thế phải
phân tích cho tới các điểm dừng.
Tại đó chúng ta quay ngược trở lại theo con đường cũ để giải quyết vấn
đề tồn động.
Phần 3: PHÂN TÍCH- HIỆN THỰC
3.1 Công cụ lập trình
Niên luận 1:NL03_2009 8
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
Ngôn ngữ lập trình C, với các phần mềm :
Visual C++
Borland C++ 3.1
Turbo C++ 3.0
Nhóm chúng em đã chọn Turbo C++ 3.0 để viết chương trình này.
3.2 Giới thiệu chương trình
3.2.1 Giao diện chương trình
Chương trình có giao diện Dos đơn giản, thân thiện, dễ dùng.
Có những phím tắt giúp cho quá trình sử dụng được thuận tiện với các phím tắt:
• Bấm ESC để thoát chương trình.
• Bấm phím bất kì để bắt đầu trò chơi.
Niên luận 1:NL03_2009 9
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
Trạng thái bàn cờ đang trong trạng thái chờ đợi , và lượt đi là của quân O.
Quân O mặt định ban đầu là ở chính giữa bàn cờ. Muốn duy chyển quân O sang ô khác
ta sử dụng bằng bốn phím mũi tên.
Khi ta đặt quân O vào trong ô vuông thì bước đi kế tiếp là thuộc về quân X, khi
đó bảng chỉ dẫn sẽ thể hiện là “ lượt đi: X ”.
Khi đó ta sử dụng bốn phím mũi tên để đặt quân X vào vị trí mà ta muốn đặt.

Cứ tiếp tục như vậy cho đến khi hai bên tìm ra con đường chiến thắng bằng cách
đi đủ ba quân cờ mà không bị đối phương chặn một trong hai đầu.
Ở hình dưới thì quân cờ O đã chiến thắng vì đã đủ ba quân cờ.
3.2.2 Các modules chương trình con
• Các kí hiệu được định nghĩa trong chương trình:
- Trang_thai= -1: bàn cờ trống (chưa gì hết).
- Trang_thai= 0: cờ hòa.
Niên luận 1:NL03_2009 10
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
- Trang_thai= 1: cờ O thắng.
- Trang_thai= 2: cờ X thắng.
- Row_size: có giá trị là 40.
- Table_size: có giá trị là 3.
• Các hàm được định nghĩa trong chương trình:
Void paint:
Void vi_tri_moi:
Void danh_dau:
Void kiem_tra:
Void init:
3.3 Thiết kế giải thuật:
Niên luận 1:NL03_2009 11
Bắt đầu
Giới thiệu
chương trình
Màn hình
chào mừng
Xác định
trạng thái
Vẽ bàn cờ Vẽ bảng
thông tin

Hòa X thắng O thắng 0 1 2 Vẽ con trỏVẽ con cờ
Thoát ESC
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
3.4 Hàm main:
3.4.1 Chương trình:
Chương trình khởi tạo giá trị cho bàn cờ với kích thước là 3x3 ô.
Tại mỗi ô trên bàn cờ xác định giá trị mới và xử lý bằng cách di chuyển 4
phím mũi tên: lên, xuống, trái, phải.
Tiếp đến, nó sẽ gọi hàm đánh dấu đề tiến hành đặt quân cờ X (O) vào vị
trí mới mà người chơi chọn.
Sau khi đã đánh dấu lên bàn cờ nó sẽ gọi tiếp hàm kiểm tra để tìm ra kết
quả trạng thái của bàn cờ (thắng, thua, hòa). Ngược lại, nếu chưa tìm được kết
quả thì nó quay lui tiếp tục gọi hàm đánh dấu.
Hàm main kết thúc khi hàm kiểm tra tìm được kết quả và xuất ra trạng
thái của bàn cờ. Dừng chương trình.
3.4.2 Lưu đồ:
Niên luận 1:NL03_2009 12
END
Tạo bàn cờ
Gọi hàm đánh dấu
BEGIN
Gọi hàm vị trí mới
Gọi hàm kiểm tra
Xuất Kết Quả
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
Phần 4: KẾT LUẬN- ĐÁNH GIÁ
4.1 Kết quả đạt được
Khi làm xong niên luận này nhóm chúng em đã đạt được các kết quả như sau:
- Tạo được bàn cờ xuất hiện trên màn hình “ Dos”.
- Quân cờ đầu tiên dành cho người đánh quân O.

- Kiểm tra để xác định người chiến thắng.
Về cơ bản thì nhóm chúng em đã hoàn thành được các yêu cầu của đề tài đặt ra.
Nắm được cấu trúc dữ liệu ( trên cơ sở sử dụng mảng). Biết cách cài đặt, các thao tác
trên Turbo C.
4.2 Ưu điểm:
 Không giới hạn về thời gian.
 Giao diện đơn giản, dễ sử dụng.
 Có thể nâng cấp, phát triển lên thành một chương trình chơi cờ có quy mô
lớn
 Có phạm vi ứng dụng rộng.
 Giải thuật tương đối dễ hiểu.
4.3 Hạn chế
 Chưa áp dụng được giải thuật Alpha-Beta vào trong code.
 Giao diện chưa đẹp.
 Chưa tạo được menu chọn cách chơi
 Chưa cho phép người chơi chọn lượt đi trước hay sau.
4.4 Hướng phát triển
 Khắc phục các hạn chế trên.
Niên luận 1:NL03_2009 13
Trường Đại học Trà Vinh Khoa Kỹ thuật Công nghệ
 Nâng cấp chương trình lên mức tối ưu.
 Ghép thêm đồ họa để giao diện chương trình sinh động hơn.
TÀI LIỆU THAM KHẢO
[1] Phạm Văn Ất. Kỹ thuật lập trình C. Nhà xuất bản Đại học Quốc gia TPHCM
[2] Cấu trúc Dữ liệu và giải thuật của Đỗ Xuân Lôi- NXB Khoa học Kỹ Thuật 2001
[3] Nhập môn cấu trúc Dữ liệu và thuật toán của Dương Anh Đức-Trần Hạnh Nhi,
ĐHQG TPHCM 2003
[4] Link: http: // www.dec.ctu.edu.vn/cit/gtrinh/gthuat
Niên luận 1:NL03_2009 14

×