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
ố
ề
ộ
ở ữ ướ
ề
ẽ ả
ớ
ị