115292788 lap trinh game co caro bang java

7
Đề tài: Lp trình game cCaro trên Java 1 MỤC LỤC MC LC..................................................................................................................1 CHƢƠNG 1 NGÔN NGỮ LP TRÌNH JAVA....................................................2 1. Lch sphát trin ...........................................................................................2 2. Kiến trúc ........................................................................................................2 3. Đặc điểm (nêu nhng nét ni bt của java theo hƣớng đối tƣợng, ti sao li chn ngôn nglà java) ...........................................................................................2 CHƢƠNG 2 TRÍ TUỆ NHÂN TO .......................................................................3 1. Tìm hiểu sơ lƣợng vtrí tunhân to ...........................................................3 2. Mt sthut toán dùng trong lp trình game ................................................3 2.1. Thut toán minimax ................................................................................3 2.2. Thut toán alpha-beta ..............................................................................3 CHƢƠNG 3 NG DNG GAME CARO ..............................................................5 1. Xác định yêu cu bài toán .............................................................................5 2. Thiết kế gii thut ..........................................................................................5 3. Demo ng dng game caro (chp li màn hình game) ...............................5 KT LUN ................................................................................................................5 TÀI LIU THAM KHO .........................................................................................6

Upload: bui-ngoc-cong

Post on 13-Dec-2014

422 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

1

MỤC LỤC

MỤC LỤC .................................................................................................................. 1

CHƢƠNG 1 NGÔN NGỮ LẬP TRÌNH JAVA .................................................... 2

1. Lịch sử phát triển ........................................................................................... 2

2. Kiến trúc ........................................................................................................ 2

3. Đặc điểm (nêu những nét nổi bật của java theo hƣớng đối tƣợng, tại sao lại

chọn ngôn ngữ là java) ........................................................................................... 2

CHƢƠNG 2 TRÍ TUỆ NHÂN TẠO ....................................................................... 3

1. Tìm hiểu sơ lƣợng về trí tuệ nhân tạo ........................................................... 3

2. Một số thuật toán dùng trong lập trình game ................................................ 3

2.1. Thuật toán minimax ................................................................................ 3

2.2. Thuật toán alpha-beta .............................................................................. 3

CHƢƠNG 3 ỨNG DỤNG GAME CARO .............................................................. 5

1. Xác định yêu cầu bài toán ............................................................................. 5

2. Thiết kế giải thuật .......................................................................................... 5

3. Demo ứng dụng game caro (chụp lại màn hình game) ............................... 5

KẾT LUẬN ................................................................................................................ 5

TÀI LIỆU THAM KHẢO ......................................................................................... 6

Page 2: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

2

CHƯƠNG 1 NGÔN NGỮ LẬP TRÌNH JAVA

1. Lịch sử phát triển

2. Kiến trúc

3. Đặc điểm

Máy ảo java (JVM- Java Virtual Machine).Java là ngôn ngữ lập trình vừa biên dịch

vừ thông dịch .Chƣơng trình viết bằng ngôn ngữ java đầu tiên có đuôi là *.java sẽ

đƣợc biên dịch thành tập tin có đuôi *.class và sau đó thông quá JVM để đƣợc biên

dịch thành mã máy tƣơng ứng

Độc lập với nền tảng hệ điều hành .Một chƣơng trình viết bằng ngôn ngữ java có

thể chạy trên bất cứ hệ điều hành nào miễn sao nó đƣợc cài đặt máy ảo java (JVM)

Hƣớng đối tƣợng tất cả mọi thứ đƣợc đề cập đến trong java đều liên quan tới các

đối tƣợng đƣợc định nghĩa trƣớc, thậm chí hàm chính của một chƣơng trình java

cũng phải đặt trong một một lớp

Đa nhiệm – đa luồng (MultiTasking – Multitheading) java hỗ trợ lập trình đa

nhiệm, đa luồng cho phép nhiều tiến trình có thể chạy song song cùng một thời

điểm và tƣơng tác với nhau

Hỗ trỡ mạnh cho việc phát triển ứng dụng vì đƣợc cung cấp nhiều công cụ, thƣ

viện lập trình phong phú tạo điều kiện cho việc phát triển các loại hình hứng dụng

khác nhau từ đơn giản tới phức tạp nhƣ client – server, J2ME, J4ME…

Page 3: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

3

CHƯƠNG 2 TRÍ TUỆ NHÂN TẠO

1. Tìm hiểu sơ lượng về trí tuệ nhân tạo

Trí tuệ nhân tạo (artificial intelligence hay machine intelligence, thƣờng đƣợc viết

tắt là AI) là trí tuệ đƣợc biểu diễn bởi bất cứ hệ thống nhân tạo nào .Trí tuệ nhân

tạo đƣợc chia thành 2 trƣờng phái là trí tuệ nhân tạo truyền thống và trí tuệ nhân

tạo toán

2. Một số thuật toán dùng trong lập trình game (

2.1. Thuật toán minimax

Minimax hay còn gọi là minmax là một phƣơng pháp trong lý thuyết quyết định có mục

tiêu là tối thiểu hóa tổn thất vốn đƣợc dự tính là tối đa (có thể hiểu ngƣợc lại là tối ta hóa

lợi ích vốn dự định là tối thiểu).Nó bắt nguồn từ trò chơi có tổng bằng không theo đó

đƣợc mở rộng cho nhiều trò chơi phức tạp khác và giúp đƣa ra các quyết định chung khi

có sự hiện diện của sự không chắc chắn.

Một giải thuật minimax là một thuật toán đệ quy cho việc lựa chon bƣớc kế tiếp trong

một trò chơi có hai ngƣời .Một giá trị đƣợc gán cho mỗi vị trí hay trạng thái của trò chơi

.Giá trị này đƣợc tính bằng một hàm và sẽ cho biết độ tốt nếu nhƣ ngƣời chơi đạt đƣợc

đến đó .Ngƣời chơi sau đó đi một nƣớc làm tối đa giá trị tối thiểu của vị trí là kết quả từ

tập các nƣớc đi trƣớc của đối thủ .Nếu đến phiên A sẽ đi, A sẽ cho một giá trị cho mỗi

nƣớc đi hợp lệ của anh ta.

Một cách khác là sử dụng một quy định rằng nếu kết quả của bƣớc đi là chiến thắng cho

A thì nó đƣợc gán giá trị dƣơng vô hạn, ngƣợc lại với B là âm vô hạn, khi đó giá trị cho

A của bất kì nƣớc đi nào khác là giá trị minimum của các giá trị kết quả từ mỗi bƣớc trả

lời có thể của B. Tuy nhiên vì khả năng chiến thắng thƣờng chỉ xuất hiện ở cuối mỗi ván

chơi do đó thuật toán thƣờng xét tới một mức độ nƣớc đi nào đó nhất định tiếp theo.

2.2. Thuật toán alpha-beta

Xét một trò chơi mà có hai ngƣời thay phiên nhau đi nƣớc của mình, nhƣ vậy sẽ có bƣớc

khởi đầu – biến đổi trạng thái qua từng nƣớc đi – kết quả nhận đƣợc theo một quy định

trƣớc là một ngƣời thắng, thua hoặc hòa .Một trò chơi nhƣ vậy có thể đƣợc biểu diễn bởi

một cây trò chơi .Mỗi nút của cây là một trạng thái (nút gốc là trạng thái bắt đầu, các nút

lá là trạng thái kết thúc). Nếu nút x là biểu diễn cho nƣớc đi n thì các nút con của x biểu

diễn các nƣớc đi có thể xuất phát từ nƣớc n.

Page 4: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

4

Ví dụ ta gán cho các nút lá giá trị là a nếu ngƣời chơi 1 thắng, -a nếu ngƣời chơi 1 thua, 0

nếu cờ hòa .Nhƣ vậy từ một trạng thái bất kỳ, đến lƣợt mình ngƣời chơi sẽ chọn nƣớc đi

sao cho trạng thái có giá trị lớn nhất .Và tất nhiên ngƣời đối diện sẽ chọn nƣớc đi có trạng

thái nhỏ nhất khi tới lƣợt mình .Ta có thể định ra quy tắc nhƣ sau: một nút lá đƣợc gắn

giá trị tƣơng ứng .Một nút là nút max thì giá trị của nó bằng giá trị lớn nhất của tất cả các

nút con .Do đó nếu muốn định trị cho một nút bất kỳ ta cần định trị tất cả các nút con của

nó bằng việc sử dụng giải thuật quay lui và đệ quy .Song số nút của một cây trò chơi là

vô cùng lớn tùy vào quy mô nƣớc đi nên ta khó có thể xét hết các giá trị của nút con cần

xét .Lúc này ta cần một phƣơng pháp để không phải xét tất cả các nút con của nút cần xét

. Đầu tiên ta có nhận xét nếu P là nút max, Q là con của P tức là Q là nút min và giá trị

tạm thời của Q nhỏ hơn P thì ta không cần xét các nút con của Q. Việc này gọi là việc cắt

tỉa alpha-beta

Page 5: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

5

CHƯƠNG 3 ỨNG DỤNG GAME CARO

1. Xác định yêu cầu bài toán

2. Thiết kế giải thuật

3. Demo ứng dụng game caro (chụp lại màn hình game)

KẾT LUẬN

Page 6: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

6

TÀI LIỆU THAM KHẢO

Page 7: 115292788 Lap Trinh Game Co Caro Bang Java

Đề tài: Lập trình game cờ Caro trên Java

7