THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 145

Ch

ng 16: GridWorld, ph n

ươ

ầ 3

Tr v

ở ề M c l c

ụ ụ cu n sách

N u b n ch a làm bài t p trong các Ch

ng 5

ế

ư

ươ

và 10, b n hãy nên làm đi tr

c khi đ c ch

ng này. Xin

ướ

ươ

đ

c nh c l i, b n có th tìm tài li u v các l p GridWorld

ượ

ắ ạ

http://www.greenteapress.com/thinkapjava/javadoc/gridworld/.
Ph n 3 c a cu n H

ng d n sinh viên v GridWorld trình bày nh ng l p c u thành GridWorld và các

ướ

ớ ấ

m i t

ng tác gi a chúng. Đây là m t ví d v thi t k h

ng đ i t

ng và làm m t c h i đ ta bàn

ố ươ

ụ ề

ế ế ươ

ố ượ

ộ ơ ổ ể

lu n nh ng v n đ thi t k h

ng đ i t

ng.

ế ế ướ

ố ượ

Nh ng tr

c khi b n đ c cu n H

ng d n sinh viên, sau đây có thêm m t s đi u mà b n c n bi t.

ư

ướ

ướ

ộ ố ề

ạ ầ

ế

16.1 ArrayList

GridWorld s d ng

ử ụ java.util.ArrayList, m t đ i t ng g n gi ng v i m ng. Đó là m t

ộ ố ượ

t p h p

, t c là

đ i t

ng đ ch a nh ng đ i t

ng khác. Java cung c p nh ng t p h p khác v i nhi u tính năng khác

ố ượ

ể ứ

ố ượ

nhau, nh ng đ dùng GridWorld ta ch c n đ n các

ư

ỉ ầ

ế

ArrayList.

Đ th y m t ví d , hãy t i

ể ấ

v

http://thinkapjava.com/code/BlueBug.java http://thinkapjava.com/code/BlueBugRunner.java. B

lueBug là m t con b di chuy n ng u nhiên và đi tìm các t ng đá. N u nó th y m t t ng đá, con b s

ế

ộ ả

ọ ẽ

làm t ng đá hóa màu xanh.

Sau đây là cách ho t đ ng c a BlueBug. Khi

ạ ộ

act đ

c kích ho t,

ượ

ạ BlueBug l y v trí c a nó cùng m t tham

ấ ị

chi u đ n l

i:

ế

ế ướ

Location loc = getLocation();

Grid<Actor> grid = getGrid();

Ki u d li u n m trong c p ngo c góc (

ữ ệ

<>

) là m t

tham s ki u

ố ể đ quy đ nh n i dung c a

ủ grid. Nói

cách khác, grid không ch là m t

ộ Grid, mà nó là Grid có ch a nh ng

ữ Actor.

B

c ti p theo là thu l y nh ng v trí lân c n v i ch hi n t i.

ướ

ế

ỗ ệ ạ Grid cung c p m t ph ng th c ch đ

ươ

ỉ ể

làm vi c này:

ArrayList<Actor> neighbors = grid.getNeighbors(loc);

K t qu tr l i t

ế

ả ả ạ ừ getNeighbors là m t

ộ ArrayList g m các

Actor. Ph

ng th c

ươ

ứ size tr l i chi u dài

ả ạ

c a

ủ ArrayList, và get thì ch n l y m t ph n t . B i v y ta có th in ra nh ng v trí lân c n nh sau.

ọ ấ

ầ ử ở ậ

ư

for

(

int

i = 0; i < neighbors.size(); i++) {

Actor actor = neighbors.get(i);

System.out.println(actor);

}

Vi c duy t m t

ộ ArrayList là thao tác thông d ng đ n n i có m t cú pháp đ c bi t dành cho nó:

ế

vòng

l p for-each

. B i v y ta có th vi t:

ở ậ

ể ế

for

(Actor actor : neighbors) {

System.out.println(actor);

}