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

Ch

ng 13: M ng ch a các đ i

ươ

ố t ng

ượ

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:

ư

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.