Tr v
ở ề M c l c
ụ ụ cu n sách
ố
13.1 Con đ
ng phía tr
c
ườ
ướ
ba ch
ng k ti p ta s phát tri n các ch
ng trình ch i bài tây và v i nh ng c bài. Tr
c khi đi vào
Ở
ươ
ế ế
ẽ
ể
ươ
ơ
ớ
ữ
ỗ
ướ
chi ti t, sau đây là khái quát nh ng b
c đi:
ế
ữ
ướ
1.
Trong ch
ng này ta s đ nh nghĩa m t l p
ươ
ẽ ị
ộ ớ Card r i vi t các ph ng th c đ ho t đ ng v i đ i
ồ
ế
ươ
ứ ể
ạ ộ
ớ ố
t
ng
ượ Card và m ng ch a
ả
ứ Card.
2.
Trong Ch
ng
ươ 14 ta s t o l p m t l p
ẽ ạ ậ
ộ ớ Deck r i vi t các ph ng th c ho t đ ng v i các đ i t ng
ồ
ế
ươ
ứ
ạ ộ
ớ
ố ượ Deck.
3.
Trong Ch
ng
ươ 15 tôi s trình bày v l p trình h ng đ i t ng (OOP) và ta s chuy n đ i các
ẽ
ề ậ
ướ
ố ượ
ẽ
ể
ổ
l p
ớ Card và Deck sang m t phong cách gi ng nh h ng đ i t ng h n.
ộ
ố
ư ướ
ố ượ
ơ
Tôi nghĩ r ng ti n b
c theo ki u này khi n cho con đ
ng đi d dàng h n; song nh
c đi m là ta s
ằ
ế
ướ
ể
ế
ườ
ễ
ơ
ượ
ể
ẽ
th y nhi u phiên b n c a cùng đo n mã l nh, vì v y có th gây nh m l n. N u đ
c, b n có th t i v
ấ
ề
ả ủ
ạ
ệ
ậ
ể
ầ
ẫ
ế
ượ
ạ
ể ả ề
mã l nh cho t ng ch
ng trong khi làm. Mã l nh trong ch
ng này
ệ
ừ
ươ
ệ
ươ
ở
đây: http://thinkapjava.com/code/Card1.java.
13.2 Các đ i t
ng
ố ượ Card
N u b n ch a quen v i bài tây, thì gi là lúc thích h p đ ki m m t b , k o nh ng gì trong ch
ng này
ế
ạ
ư
ớ
ờ
ợ
ể ể
ộ ộ ẻ
ữ
ươ
s không có nhi u ý nghĩa. Ho c b n hãy đ c l y
ẽ
ề
ặ ạ
ọ ấ http://en.wikipedia.org/wiki/Playing_card.
Có 52 lá bài trong m t b , m i lá bài thu c v m t trong b n ch t và m t trong 13 b c. Các ch t g m
ộ ộ
ỗ
ộ ề ộ
ố
ấ
ộ
ậ
ấ ồ
Pích, C , Rô, và Nhép (theo th t gi m d n trong trò
ơ
ứ ự ả
ầ
bridge). Các b c g m có A, 2, 3, 4, 5, 6, 7, 8, 9, 10,
ậ ồ
J, Q, và K. Tùy theo trò ch i mà b n quân A có th cao h n K ho c th p h n 2.
ơ
ạ
ể
ơ
ặ
ấ
ơ
N u b n mu n đ nh nghĩa m t đ i t
ng m i đ bi u di n cho lá bài, rõ ràng các thu c tính ph i
ế
ạ
ố
ị
ộ ố ượ
ớ ể ể
ễ
ộ
ả
là:
rank
(b c) và
ậ
suit
(ch t). Còn vi c ch n ki u d li u cho các thu c tính l i không hi n nhiên. M t
ấ
ệ
ọ
ể
ữ ệ
ộ
ạ
ể
ộ
kh năng là dùng các chu i g m nh ng t nh
ả
ỗ ồ
ữ
ừ
ư
"Spade"
(Pích) cho ch t và
ấ
"Queen"
cho b c. M t v n
ậ
ộ ấ
đ đ t ra v i cách làm này là s không d so sánh xem lá bài nào có b c ho c ch t cao h n.
ề ặ
ớ
ẽ
ễ
ậ
ặ
ấ
ơ
M t cách khác là dùng s nguyên đ
ộ
ố
ể đánh số cho các b c và ch t. đây, “đánh s ” không có nghĩa là ý
ậ
ấ Ở
ố
mã hóa ho c d ch thông đi p ra d ng m t mã nh nhi u ng
i th
ng nghĩ. Mà đ i v i nhà khoa h c
ặ ị
ệ
ạ
ậ
ư
ề
ườ
ườ
ố ớ
ọ
máy tính, “đánh s ”
ố nghĩa là “l p m t phép ánh x t con s đ n d li u c n bi u th .” Ch ng h n:
ậ
ộ
ạ ừ
ố ế
ữ ệ ầ
ể
ị
ẳ
ạ
Spades (Pích)
↦ 3
Hearts (Cơ)
↦ 2
Diamonds (Rô)
↦ 1
Clubs (Nhép)
↦ 0
Mã s này giúp so sánh các lá bài d h n; vì ch t cao h n đ
c ánh x đ n s l n h n, và ta có th so
ố
ễ ơ
ấ
ơ
ượ
ạ ế ố ớ
ơ
ể
sánh ch t b ng cách so các mã s c a chúng.
ấ ằ
ố ủ
Ánh x đ i v i b c thì khá d th y; m i b c s thì ánh x
ạ ố ớ ậ
ễ ấ
ỗ ậ ố
ạ
đ n chính s nguyên t
ng ng, còn v i các b c ch :
ế
ố
ươ
ứ
ớ
ậ
ữ
J
↦ 11
Q
↦ 12
K
↦ 13
đây tôi dùng kí hi u toán h c đ bi u di n ánh x là do ánh x không ph i là m t ph n c a ch
ng
Ở
ệ
ọ ể ể
ễ
ạ
ạ
ả
ộ
ầ ủ
ươ
trình. Đó là m t ph n c a khâu thi t k ch
ng trình, nh ng không xu t hi n m t cách c th trên mã
ộ
ầ ủ
ế ế ươ
ư
ấ
ệ
ộ
ụ ể
l nh.
ệ
L i đ nh nghĩa l p cho ki u
ờ ị
ớ
ể
Card
s nh sau:
ẽ
ư