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

ki m tra tr ng thái c a các viên lân c n tr

c khi nh ng viên lân c n này thay đ i tr ng thái. N u

ướ

ổ ạ

ế

không, đ ng thái c a h th ng s còn ph thu c vào th t c a phép c p nh t n a.

ệ ố

ứ ự ủ

ậ ữ

Đ th c hi n c p nh t đ ng th i, tôi g i ý r ng b n nên vi t m t ph

ng th c

ể ự

ệ ậ

ậ ồ

ế

ươ

ứ act g m có hai khâu.

khâu th nh t, t t c viên đá ph i đ m s lân c n v i nó r i ghi l i k t qu . Và khâu th hai, t t c

ấ ấ ả

ả ế

ạ ế

ấ ả

viên đá c p nh t tr ng thái c a chúng.

Ph

ng th c

ươ

ứ act tôi đã vi t trông nh sau:

ế

ư

/**

* Kiểm tra xem ta đang ở khâu nào và gọi phương thức tương ứng.

* Chuyển đến khâu tiếp theo. */

public void

act() {

if

(phase == 1) {

numNeighbors = countLiveNeighbors();

phase = 2;

}

else

{

updateStatus();

phase = 1;

}

}

phase và numNeighbors là các bi n th c th . Và sau đây là nh ng nguyên m u

ế

cho countLiveNeighbors và updateStatus:

/**

* Đếm số viên đá lân cận còn sống. */

public int

countLiveNeighbors()

/**

* Cập nhật trạng thái viên đá (sống hoặc chết) dựa trên

* số các viên lân cận với nó. */

public void

updateStatus()

Hãy b t đ u v i m t phiên b n đ n gi n c a

ắ ầ

ơ

ả ủ updateStatus ch đ chuy n viên đá s ng thành ch t và

ỉ ể

ế

ng

c l i. Bây gi hãy ch y ch

ng trình r i kh ng đ nh r ng viên đá đã đ i màu. C hai b

c trong

ượ ạ

ươ

ướ

World (môi tr

ng) thì t

ng ng v i m t b

c th i gian trong trò ch i Life.

ườ

ươ

ộ ướ

ơ

Bây gi hãy đi n n i dung vào ph n thân c a các ph

ng

ươ

th c

ứ countLiveNeighbors và updateStatus theo lu t ch i và xem h th ng có đ ng thái gi ng nh ta d

ơ

ệ ố

ư

li u hay không.

16.8 Đi u ki n đ u

Đ thay đ i đi u ki n đ u, b n có th dùng các menu b t c a GridWorld đ đ t tr ng thái c a các viên

ậ ủ

ể ặ

đá b ng cách kích ho t

ạ setAlive. Ho c b n cũng có th vi t các ph ng th c đ t đ ng hóa quy trình.

ặ ạ

ể ế

ươ

ứ ể ự ộ

Trong LifeRunner, hãy b sung m t ph

ng th c có tên

ươ

makeRow đ t o nên c u hình ban đ u

ể ạ

v i

ớ n viên đá s ng li n nhau cùng m t hàng gi a l i ô. Đi u gì s x y ra v i các giá tr khác nhau

ở ữ ướ

ẽ ả