TÌM HIỂU JAVA APPLET và HIỆN THỰC WEBSITE CHƠI cờ CARO BẰNG JAVA APPLET

11 410 0
TÌM HIỂU JAVA APPLET và HIỆN THỰC WEBSITE CHƠI cờ CARO BẰNG JAVA APPLET

Đ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

Sở Giáo Dục Và Đào Tạo Trường Đại Học Mở TPHCM Khoa Công Nghệ Thông Tin -] ] - Đồ án môn học Giáo Viên Hướng Dẫn: TS Thầy Nguyễn Văn Hiệp Sinh Viên Thực Hiện: Nguyễn Minh Trí – MSSV: 10260082 Võ Văn Chiêu – MSSV: 10260006 Ngày 20-3-2008 Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet ĐỀ ÁN MÔN HỌC: Hiện thực Website chơi cờ caro Java Applet: • • • • Tìm hiểu quy trình xây dựng sử dụng Java Applet Tìm hiểu nguyên lý làm việc trò chơi caro, giải thuật chơi cờ caro Hiện thực Java Applet chơi cờ caro Hiện thực trang web sử dụng Java Applet chơi cờ caro Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet TRIỂN KHAI CHI TIẾT: – Tìm hiểu quy trình xây dựng sử dụng Applet Java Java Applet mẫu chương trình nhỏ, nhúng vào trang Web có khả lập trình Java Applet cố gắng thiết kế cho kích thước thật nhỏ gọn, tải chạy môi trường phân tán Internet Muốn viết Applet bạn phải theo khung Java qui định sẵn dĩ nhiên ngôn ngữ ta dùng để viết Applet có Java Để xây dựng sử dụng Java Applet ta thực số bước sau: • Bước 1: Tạo tập tin Java nguồn Tạo thư mục C:\MyApplet Ta tạo tập tin có tên “Helloworld.java” thư mục MyApplet vừa tạo với nội dung sau: import java.awt.Graphics; import java.applet.Applet; public class Helloworld extends Applet { public void paint(Graphics g) { g.drawString("Hello World!!", 50, 25 ); } } Lưu ý tên Lớp (class) phải trùng với tên file • Bước 2: Biên dịch tập tin nguồn Ta sử dụng số phần mềm hỗ trợ biên dịch java như: JCreator JBuilder…Ở minh họa trình biên dịch “javac” biên dịch từ dòng lệnh: Vào thư mục C:\MyApplet gõ: C:\MyApplet>javac Helloworld.java Khi biên dịch thành công, trình biên dịch tạo tập tin có tên “Helloworld.class” Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Đây file biên dịch từ file “Helloworld.java”, chứa đựng mã bytecode Để xem file Java Applet ta có cách: i - Sử dụng Appletviewer.exe có sẵn thư mục j2sdk1.4.0\bin Java ii – Ta nhúng tập tin class vào file html xem trình duyệt Web có hỗ trợ JavaApplet (vd: Trình duyệt Internet Explorer Microsoft,…) • Bước 3: Nhúng Applet vào trang Web HTML Để nhúng file class Java Applet vào tập tin html ta làm sau: Welcome to My Applet Lưu file lại với tên “MyApplet.html” • Bước 4: Chạy Applet Để chạy Java Applet ta mở file “MyApplet.html” trình duyệt web (xem hình minh họa) Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Xem Applet Viewer Xem I.E 7.0 Ghi chú: - Các Applet cài đặt nhiều phương thức khác phải có phương thức sau: init( ), start( ), paint( ) - Không ứng dụng Java, Applet không cần phải có phương thức main( ) – Tìm hiểu nguyên lý làm việc trò chơi caro Xét bàn cờ gồm n x n (với n >= 10) ô, nguyên tắc chơi sau: - Ta có người chơi, gọi người A người B, người thay phiên chơi, đến phiên người đánh đánh ký hiệu (O X …) vào ô bàn cờ, để dễ phân biệt ta chọn: o Người A: Chọn cờ màu trắng o Người B: Chọn cờ màu đen Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Người A người B tìm cách đánh để chiến thắng đối thủ theo nguyên tắc (nguyên tắc để chiến thắng phụ thuộc vào thỏa thuận người chơi), có nhiều nguyên tắc nêu nguyên tắc để chiến thắng bản: Nguyên tắc 1: (tương đối dễ) - Nếu cờ trắng (đen) đánh, có liên tiếp chiến thắng, đầu có bị chặn hay không - Ngược lại cờ trắng (đen) đánh mà liên tiếp nhau, trước đánh xem nước cờ đối thủ có liên tiếp không, có chặn lại, tiếp tục phát triển nước cờ => Ai giành liên tiếp trước thắng Nguyên tắc 2: (hơi khó) - Nếu cờ trắng (đen) có ô thẳng hàng (theo chiều: dọc, ngang, xiên), nằm liền kề đầu đường thẳng không bị cờ đen chặn cờ trắng (đen) thắng - Nếu cờ trắng (đen) có ô thẳng hàng (theo chiều: dọc, ngang, xiên), nằm kề đầu đường thẳng bị cờ đen chặn, cờ trắng (đen) đánh tiếp vào đầu lại => có trắng kề đầu bị chặn => cờ trắng (đen) thắng - Ngược lại, đến lượt người A (cờ trắng) người B (cờ đen) đánh, phải kiểm tra đường đối phương xem có ô liền không, có ta chặn lại, không ta tiếp tục phát triển nước cờ Ở trường hợp, người chịu thua người lại chiến thắng Và người đánh hết ô bàn cờ mà không phân định thắng thua xem hòa - Giải thuật chơi cờ caro Xét trò chơi hai người thay phiên nước Trò chơi có trạng thái bắt đầu nước biến đổi trạng thái hành thành trạng thái Trò chơi kết thúc theo quy định đó, theo chơi dẫn đến trạng thái phản ánh có người thắng trạng thái mà hai đấu thủ phát triển nước mình, ta gọi trạng thái hòa cờ Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Ta tìm cách phân tích xem từ trạng thái dẫn đến đấu thủ thắng với điều kiện hai đấu thủ có trình độ Một trò chơi biểu diễn cây, gọi trò chơi Mỗi nút biểu diễn cho trạng thái Nút gốc biểu diễn cho trạng thái bắt đầu chơi Mỗi nút biểu diễn cho trạng thái kết thúc trò chơi (trạng thái thắng thua hòa) Nếu trạng thái x biểu diễn nút n n biểu diễn cho tất trạng thái kết nước xuất phát từ trạng thái x Ví dụ: Xét trò chơi carô có ô Hai người thay phiên X O Người ô thẳng hàng (ngang, dọc, xiên) thắng Nếu hết ô mà chưa phân thắng bại hai đấu thủ hòa Một phần trò chơi biểu diễn sau: Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Trong trò chơi trên, nút tô viền khung đôi để dễ phân biệt với nút khác Ta gán cho nút giá trị để phản ánh trạng thái thắng thua hay hòa đấu thủ Chẳng hạn ta gán cho nút giá trị sau: · người X thắng · -1 người X thua · hai đấu thủ hòa Như từ trạng thái bất kỳ, đến lượt mình, người X chọn cho nước cho dẫn đến trạng thái có giá trị lớn (trong trường hợp 1) Ta nói X chọn nước MAX, nút mà từ X chọn nước gọi nút MAX Người O đến lượt chọn nước cho dẫn đến trạng thái có giá trị nhỏ (trong trường hợp -1, X thua O thắng) Ta nói O chọn nước MIN, nút mà từ O chọn nước gọi nút MIN Do hai đấu thủ luân phiên nước nên mức trò chơi luânphiên MAX MIN Cây trò chơi có tên MIN-MAX Ta đưa quy tắc định trị cho nút để phản ánh tình trạng thắng thua hay hòa khả thắng hai đấu thủ Nếu nút nút trị giá trị gán cho nút Ngược lại, nút nút MAX trị giá trị lớn tất trị của Nếu nút nút MIN trị giá trị nhỏ tất trị của Quy tắc định trị gần giống với quy tắc định trị cho biểu thức số học, điểm khác biệt toán tử hàm lấy max nút có nhiều Do ta dùng kỹ thuật quay lui để định trị cho nút trò chơi Để cài đặt ta có số giả thiết sau: · Ta có hàm Payoff nhận vào nút cho ta giá trị nút · Các ∞ -∞ tương ứng trị Payoff lớn nhỏ · Khai báo kiểu ModeType = (MIN, MAX) để xác định định trị cho nút MIN hay MAX · Một kiểu NodeType khai báo cách thích hợp để biểu diễn cho nút phản ánh trạng thái chơi Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet · Ta có hàm is_leaf để xác định xem nút có phải nút hay không? · Hàm max tương ứng lấy giá trị lớn giá trị nhỏ hai giá trị Giải thuật vét cạn định trị trò chơi Hàm Search nhận vào nút n kiểu mode nút (MIN hay MAX) trả giá trị nút Nếu nút n nút trả giá trị gán cho nút Ngược lại ta cho n giá trị tạm value -∞ ∞ tùy thuộc n nút MAX hay MIN xét n Sau n có giá trị V đặt lại value = max(value,V) n nút MAX value = min(value,V) n nút MIN Khi tất n xét giá trị tạm value n trở thành giá trị Kỹ thuật cắt tỉa Alpha-Beta (Alpha-Beta Pruning) Trong giải thuật vét cạn trên, ta thấy để định trị cho nút đó, ta phải định trị cho tất nút cháu nó, muốn định trị cho nút gốc ta phải định trị cho tất nút Số lượng nút trò chơi hữu hạn Chẳng hạn trò chơi ca rô nói trên, ta có bàn cờ bao gồm n ô có tới n! nút (trong trường hợp 9!) Đối với loại cờ khác cờ vua chẳng hạn, số lượng nút lớn nhiều Ta gọi bùng nổ tổ hợp nút Chúng ta cố gắng tìm cách cho định trị nút không thiết phải định trị cho tất nút cháu Trước hết ta có nhận xét sau: Nếu P nút MAX ta xét nút Q (dĩ nhiên Q nút MIN) Giả sử Vp giá trị tạm P, Vq giá trị tạm Q ta có Vp ≥ Vq ta không cần xét chưa xét Q Vì có xét giá trị Q nhỏ Vq không ảnh hưởng đến Vp Tương tự P nút MIN (tất nhiên Q nút MAX) Vp ≤ Vq ta không cần xét đến chưa xét Q Việc không xét tiếp chưa xét nút Q gọi việc cắt tỉa Alpha-Beta nút Q Trên sở nhận xét đó, ta nêu quy tắc định trị cho nút nút sau: Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet Khởi đầu nút MAX có giá trị tạm -∞ nút MIN có giá trị tạm ∞ Nếu tất nút nút xét bị cắt tỉa giá trị tạm nút trở thành giá trị Nếu nút MAX n có giá trị tạm V1 nút có giá trị V2 đặt giá trị tạm n max (V1,V2) Nếu n nút MIN đặt giá trị tạm n (V1,V2) Vận dụng quy tắc cắt tỉa Alpha-Beta nói để hạn chế số lượng nút phải xét Vận dụng quy tắc để định trị cho nút A trò chơi ví dụ A nút MAX, lúc đầu có giá trị tạm -∞, xét B A, B nút nên giá trị giá trị gán 1, giá trị tạm A max (-∞,1) = Xét C A, C nút MIN, giá trị tạm lúc đầu C ∞ Xét E C, E nút MAX, giá trị tạm E -∞ Xét I E, I nút nên giá trị Quay lui lại E, giá trị tạm E max (-∞,0) = Vì E có I xét nên giá trị tạm trở thành giá trị E Quay lui lại C, giá trị tạm C (∞,0) = A nút MAX có giá trị tạm 1, C A, có giá trị tạm 0, 1>0 nên ta không cần xét F C Nút C có hai E F, E xét, F bị cắt, giá trị tạm C trở thành giá trị Sau có giá trị C, ta phải đặt lại giá trị tạm A, giá trị tạm không thay đổi max (1,0) = Tiếp tục xét nút D, D nút MIN nên giá trị tạm ∞, xét nút G D, G nút MAX nên giá trị tạm -∞, xét nút J G Vì J nút nên có giá trị Quay lui lại G, giá trị tạm G max (-∞,0) = giá trị tạm trở thành giá trị G G có J xét Quay lui D, giá trị tạm D (∞,0) = Giá trị tạm D nhỏ giá trị tạm nút A MAX cha nên ta cắt tỉa H chưa xét D lúc D có giá trị Quay lui A, giá trị tạm không thay đổi, lúc A xét nên giá trị tạm trở thành giá trị A Kết minh họa hình sau: Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet - Hiện thực Applet java chơi cờ caro Có chương trình minh họa “Hiện thực trò chơi caro Java Applet” - Người chơi với Người - Người chơi với Máy - Hiện thực trang web sử dụng Applet Java chơi cờ caro 10 [...]...Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet 4 - Hiện thực 1 Applet java chơi cờ caro Có 2 chương trình minh họa Hiện thực trò chơi caro bằng Java Applet - Người chơi với Người - Người chơi với Máy 5 - Hiện thực trang web sử dụng Applet Java chơi cờ caro 10 ... làm việc trò chơi caro, giải thuật chơi cờ caro Hiện thực Java Applet chơi cờ caro Hiện thực trang web sử dụng Java Applet chơi cờ caro Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet TRIỂN... sau: Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet - Hiện thực Applet java chơi cờ caro Có chương trình minh họa Hiện thực trò chơi caro Java Applet - Người chơi với Người - Người chơi với...Đề: Hiện Thực Website Chơi Cờ Caro Bằng Java Applet ĐỀ ÁN MÔN HỌC: Hiện thực Website chơi cờ caro Java Applet: • • • • Tìm hiểu quy trình xây dựng sử dụng Java Applet Tìm hiểu nguyên

Ngày đăng: 18/12/2015, 14:07

Tài liệu cùng người dùng

Tài liệu liên quan