Game vừa là mộtcách gúp chúng ta giải trí,giúp chúng ta có khả năng tư duy, đầu óc nhạy bén.Ngoài ra, game còn giúp con người có thể tập trung cao độ hơn, rèn luyện tính quyết tâm,kiên t
Trang 1MỤC LỤC
MỤC LỤC 2
LỜI CẢM ƠN 5
LỜI MỞ ĐẦU 6
CHƯƠNG 1 GIỚI THIỆU CĂN BẢN VỀ LẬP TRÌNH GAME VÀ CỜ VUA7 1.1 Những khái niệm căn bản 7
1.1.1 Khái niệm object (đối tượng) 7
1.1.2 Khái niệm về event ('sự kiện') 7
1.1.3 Action 7
1.1.4 Sound 8
1.1.5.Backgrounds 8
1.2 Giới thiệu về một số thể loại game căn bản 8
1.2.1.Game đối xứng và không đối xứng 8
1.2.2.Game có tổng bằng 0 , và có tổng khác 0 8
1.2.3.Game có thông tin hoàn hảo và không hoàn hảo 9
1.2.4.Game có kết cục và không kết cục 9
1.2.5 Game đồng thời và tuần tự 10
1.3.Phương pháp căn bản thiết kế môt số thể loại game 10
1.3.1.Thiết kế 2D 10
1.3.2.Thiết kế 2.5D 10
1.3.3.Thiết kế 3D 11
1.3.4 Thiết kế 4D 13
1.4.Thiết kế trò chơi 13
Quy trình thiết kế trò chơi gồm 5 bước cơ bản: 13
1.4.1.Xây dựng phát triển ý tưởng 14
1.4.2.Viết nội dung kịch bản cho trò chơi 14
1.4.3.Phân tích thiết kế trò chơi 14
1.4.4.Lập trình cho game 15
1.4.5 Kiểm thử,bảo trì và phát triển 15
1.5.Phương pháp căn bản thiết kế game online 16
1.5.1 Thiết lập kết nối đến một máy tính khác 17
1.5.2 Thiết lập phòng game 17
1.5.3.Thiết lập cách thức chia sẻ dữ liệu 17
1.5.4 Truyền tin nhắn 18
Trang 21.6.Giới thiệu cờ vua 18
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 28
2.1.Biến và Hằng 29
2.1.1 Biến 29
2.1.2.Hằng 30
2.2.Kiểu giá trị được định nghĩa trước (Predefined Value Types) 30
2.2.1.Các kiểu Integer: 31
2.2.2.Kiểu dữ liệu số dấu chấm di động (Floating Point Types) 31
2.2.3.Kiểu Boolean : 31
2.2.4.Kiểu Character Type: 31
2.2.5.Các kiểu chuỗi : 32
2.3.Câu lệnh điều kiện 32
2.3.1.Câu lệnh điều kiện if : 32
2.3.2.Câu lệnh switch 34
2.4.Vòng lặp (Loops): 35
2.4.1.Vòng lặp for 35
2.4.2 Vòng lặp while (The while Loop) 36
2.4.3.Vòng lặp do while (The do…while Loop) 37
2.4.4 Vòng lặp foreach (The foreach Loop) 37
2.5.Một số câu lệnh khác 37
2.5.1.Câu lệnh goto 37
2.5.2.Câu lệnh break 38
2.5.3 Câu lệnh continue 38
2.5.4.Câu lệnh return 38
2.6.Cấu trúc chương trình 38
2.6.1.Lớp 38
2.6.2.Hàm thành phần (Function Members): 40
2.6.3.Cấu trúc (Structs ) 40
2.6.4.Phương thức 40
2.7.Mảng (Arrays) 44
2.8 Toán tử 48
2.8.1 Toán tử toán học 48
Trang 32.8.2.Toán tử quan hệ 49
2.8.3.Toán tử logic 50
2.8.4 Độ ưu tiên toán tử 51
2.8.5 Operator Shortcuts 51
2.9.An toàn kiểu (Type Safety) 53
2.10 Sử dụng các ghi chú 54
2.11.Từ định danh và từ khoá 55
CHƯƠNG 3 THIẾT KẾ GAME VÀ CỜ VUA 56
3.1.giới thiệu chức năng chính của game 56
3.2.cấu trúc xây dựng game: 56
3.3.Cấu trúc game được chia làm 4 phần chính: 57
3.3.1 Nhóm class giao diện tương tác 57
3.3.2.Nhóm class lưu trữ dữ liệu 57
3.3.3.Nhóm class quân cờ: 58
3.3.4.Quản lý chung: 59
3.4.Sơ đồ luồng dữ liệu và một số biểu đồ 61
a.Vào nước đi 61
3.4.2 Xin đi lại 69
3.4.3 Xin hòa 70
3.4.4 Xin thua 71
3.4.5 Chơi lại 72
3.4.6 Biểu đồ usecase 73
3.4.7.Biểu đồ trình tự 74
3.5 Một số hình ảnh trong game 76
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80
Trang 4LỜI MỞ ĐẦU
Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin(CNTT) từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự, trở thànhsản phẩm hàng hoá trong xã hội tạo ra một sự thay đổi to lớn trong lực lượng sảnxuất, cơ sở hạ tầng, cấu trúc kinh tế, tính chất lao động và cả cách thức quản lýtrong các lĩnh vực của xã hội
Trong những năm gần đây, nền CNTT nước ta cũng đã có phát triển trên mọilĩnh vực trong cuộc sống cũng như trong lĩnh vực quản lý xã hội khác Một trongnhững lĩnh vực được nhiều người quan tâm là lĩnh vực giải trí Game vừa là mộtcách gúp chúng ta giải trí,giúp chúng ta có khả năng tư duy, đầu óc nhạy bén.Ngoài
ra, game còn giúp con người có thể tập trung cao độ hơn, rèn luyện tính quyết tâm,kiên trì, tích lũy kinh nghiệm xử lí vấn đề…một trong những game phổ biến đượcyêu thích hiện nay là game cờ vua
Chính vì những lí do đó em chọn Thiết kế trò chơi cờ vua ứng dụng trênInternet làm đồ án tốt nghiệp
Nội dung của đồ án bao gồm:
- Chương I: Giới thiệu căn bản về lập trình game và cờ vua
- Chương II: Cơ sở lý thuyết
- Chương III: Thiết kế game cờ vua
Do kiến thức và kinh nghiệm của bản thân còn hạn chế nên đồ án khôngtránh khỏi những thiếu xót Rất mong được sự đóng góp của quý thầy cô trong bộmôn khoa học máy tính, các quý thầy cô trong bộ trường Đại Học Công NghệThông Tin và truyền thông
Cuối cùng, em xin chân thành cảm ơn thầy Trần Hải Thanh cùng toàn toànthể giảng viên trong Đại Học Công Nghệ Và Truyền Thông đã giúp đỡ em trongquá trình thực hiện đồ án này
Trang 5CHƯƠNG 1 GIỚI THIỆU CĂN BẢN VỀ LẬP TRÌNH GAME VÀ CỜ VUA
1.1 Những khái niệm căn bản
1.1.1 Khái niệm object (đối tượng)
Nguồn quan trọng nhất của chương trình chính là các object Đây chính lànhững thực thể làm nên một trò chơi Thường thì chúng được thể hiện bằng hìnhảnh để bạn nhìn thấy; chúng có những "hành vi" vì phải "phản ứng" lại một số "sựkiện" Tất cả những gì bạn nhìn thấy trong game chính là các object (tất nhiên trừbackground) Nói một cách chính xác hơn, background là khoảng cách giữa cácobject Các nhân vật, những con quái vật, gờ tường, vũ khí là các object Có một
số object bạn không nhìn thấy nhưng nó có chức năng điều khiển trong quá trìnhchờ
Bất cứ khi nào có một điều gì đó xảy ra trong game, các instance của object
có "sự kiện" (loại thông điệp cho biết có sự kiện xảy ra) Sau đó, những instancenày có thể "phản ứng" với những thông điệp này bằng cách thực hiện một số hànhđộng nào đó Đối với mỗi object, bạn phải chỉ ra nó phải "phản ứng" với sự kiệnnào và phải thực hiện hành động nào Điều này nghe có vẻ phức tạp nhưng thực rarất dễ dàng Trước hết, đối với hầu hết các sự kiện thì object không phải làm gì cả,còn những sự kiện yêu cầu phải có hành động gì đó
Trang 61.1.4 Sound
Hầu hết các game đều có những hiệu ứng âm thanh và nhạc nền
1.1.5.Backgrounds.
Đây là những phông nền làm nơi diễn ra trò chơi
1.2 Giới thiệu về một số thể loại game căn bản
1.2.1.Game đối xứng và không đối xứng
Một trò chơi đối xứng là một trò chơi mà phần lợi cho việc chơi một chiếnthuật nào đó chỉ phụ thuộc vào các chiến thuật được sử dụng, chứ không phụ thuộcvào người nào đang chơi Nếu như tính danh của những người chơi có thể thay đổi
mà không làm thay đổi phần lợi đối với chiến thuật chơi, thì một trò chơi là đốixứng Nhiều trò chơi 2×2 thường được nghiên cứu là đối xứng Những biểu diễnchuẩn của trò chơi con gà, song đề tù nhân, đi săn nai là những trò chơi đối xứng
Đa số những trò chơi bất đối xứng được nghiên cứu là những trò chơi mà các tậphợp chiến thuật khác nhau được sử dụng bởi hai người chơi Chẳng hạn, trò chơi tốihậu thư và tương tự như vậy trò nhà độc tài có chiến thuật khác nhau cho mỗi ngườichơi Tuy vậy, có thể xảy ra trường hợp một trò chơi có những chiến thuật giốngnhau cho cả hai người chơi, nhưng vẫn bất đối xứng Chẳng hạn, trò chơi đượcminh họa bên phải là bất đối xứng mặc dù cho có cùng tập các chiến thuật cho cả 2người chơi
1.2.2.Game có tổng bằng 0 , và có tổng khác 0
Trong trò chơi tổng bằng không, với mọi tổ hợp của các chiến lược chơi,tổng điểm của tất cả các người chơi trong ván chơi luôn bằng 0 Nói một cáchkhông chính thức, đấu thủ này hưởng lợi trên thiệt hại của các đấu thủ khác Một ví
dụ là trò Poker, trong đó người này thắng số điểm bằng đúng số điểm mà người kiathua Các loại cờ cổ điển như cờ vây, cờ vua và cờ tướng cũng là các trò chơi tổngbằng không Nhiều trò chơi mà các nhà lý thuyết trò chơi nghiên cứu, trong đó cósong đề tù nhân nổi tiếng, là các trò chơi tổng khác không, do có một số kết cục cótổng kết quả lớn hơn hoặc nhỏ hơn không Nói một cách không chính thức, trong
Trang 7các trò chơi tổng khác không, một thu hoạch của đấu thủ này không nhất thiết tươngứng với một thiệt hại của một đấu thủ khác Có thể biến đổi một trò chơi bất lỳthành một trò chơi tổng bằng không bằng cách bổ sung một đấu thủ "bù nhìn" saocho các thiệt hại của đấu thủ này bù lại tổng thu hoạch của các đấu thủ khác.
1.2.3.Game có thông tin hoàn hảo và không hoàn hảo
Các trò chơi thông tin hoàn hảo (games of perfect information) lập thành một
tập con quan trọng của các trò chơi tuần tự Một trò chơi được gọi là có thông tinhoàn hảo nếu mọi đấu thủ biết tất cả các nước đi mà tất cả các đấu thủ khác đã thựchiện Do vậy chỉ có các trò chơi tuần tự mới có thể là các trò chơi thông tin hoànhảo Hầu hết các trò chơi được nghiên cứu trong lý thuyết trò chơi là các trò chơithông tin không hoàn hảo, tuy một số trò chơi hay như cờ vây, cờ vua lại là trò chơithông tin hoàn hảo
Tính chất thông tin hoàn hảo thường bị nhầm lẫn với khái niệm thông tin đầy
đủ Tính chất thông tin đầy đủ đòi hỏi rằng mỗi người chơi biết về các chiến lược vàthành quả thu được của các người chơi khác, nhưng không nhất thiết biết về cáchành động của họ
1.2.4.Game có kết cục và không kết cục
Bởi các lý do hiển nhiên, các trò chơi được nghiên cứu bởi các kinh tế gia vànhững người chơi trong thế giới thực nhìn chung là kết thúc trò chơi trong hữu hạncác bước đi Các nhà toán học lý thuyết không bị cản trở bởi điều đó, và lý thuyếtgia về tập hợp đặc biệt nghiên cứu về các trò chơi kết thúc sau vô hạn các bước đi,
bới người thắng (hay là phần lợi) là không biết được cho đến sau khi các bước đi đó
đã hoàn thành
Sự chú ý thường không phải là quá nhiều về cách nào tốt nhất để chơi tròchơi, mà đơn giản là chỉ phụ thuộc vào người chơi hay người kia có hay không mộtchiến thuật chiến thắng (Có thể chứng minh rằng, sử dụng tiên đề chọn lựa,là cónhững trò chơi với - ngay cả là đầy đủ thông tin hoàn toàn, và chỉ có kết quả là
"thắng" hay "thua" - và không người chơi nào có chiến thuật để chiến thắng.) Sự tồn
tại của những chiến thuật như vậy, cho những trò chơi được thiết kế một cách thôngminh, có những kết quả quan trọng trong lý thuyết miêu tả tập hợp
1.2.5 Game đồng thời và tuần tự
Trang 8Game đồng thời là game mà tất cả người chơi đưa ra chiến lược một cáchđồng
Ví dụ: như trò chơi oản tù tì
1.3.Phương pháp căn bản thiết kế môt số thể loại game
1.3.1.Thiết kế 2D
Định nghĩa :Game 2D được xây dựng trên hệ thống đồ hoạ máy tính 2 chiều(2 Dimensional), cũng như hệ toạ độ 2 chiều của trục toạ độ, nó phản ánh mộtphong cách đồ hoạ phẳng Đồ hoạ 2 chiều không có sự tham gia hoặc có nhưng rất
ít của các hiệu ứng 3 chiều đặc trưng như hiệu ứng chiếu sáng, phản chiếu, độ bóng.Đặc trưng: Đặc trưng dễ nhận dạng nhất của game 2D là không thể xoay góc quayđược, tất nhiên yếu tố này không thể giúp ta khẳng định chắc chắn là game 2D, cónhững game 3D vẫn hạn chế không cho xoay màn hình Đặc trưng kế tiếp là không
có ấn tượng 3 chiều rõ rệt, game sẽ cuộn bản đồ theo 2 chiều là chiều thẳng và chiềungang khác với 3D không dùng hình thức cuộn bản đồ mà dựa vào không gian khốicủa bản đồ
Đặc trưng tiếp theo là mọi thứ đều hoàn toàn bằng 2D từ hậu cảnh, vật thểđến tiền cảnh tạo nên một cái hình giống như phim hoạt hình cắt giấy
Các game 2D thường là các game platform cổ điển của hệ máy NES hoặc SNESmột số game hiện đại cũng theo phong cách 2D
1.3.2.Thiết kế 2.5D
Nếu 2D và 3D dễ định nghĩa và xác định thì 2.5D là một khái niệm trừu tượng Theo định nghĩa thì 2.5D là những game sử dụng một phần hệ thống đồ hoạ 2D và phần còn lại của 3D hay một game 2D dùng các hiệu ứng đồ hoạ 3D để mô phỏng tính chất của 3D (giả 3D).Nếu nhìn kỹ bạn sẽ thấy mặt đường và đống đổ nát và đống đổ nát là hình hậu
Các game dùng một phần 2D một phần 3D là các game dùng hậu cảnh 2D vàđặt lên đó những vật thể hình khối 3D hoặc ngược lại Các game 2.5D kiểu này có thể kể ra như Resident Evil các phiên bản 1 – 2 – 3 hay Võ Lâm Truyền Kỳ 2.Các
Trang 9hiệu ứng gây cảm giác 3D nhưng thực ra cảnh này cấu tạo hoàn toàn bằng 2D.Các game thuần 2D giả 3D thường là những game dùng các hiệu ứng đổ bóng, phản chiếu và dùng các chi tiết 2D mô phỏng một cảnh vật 3D bằng cách mô tả chiều sâucủa cảnh vật thông qua các hiệu ứng phối màu Các game 2.5D kiểu này có thể kể
ra như Feeding Frenzy, Red Alert 2 hay StarCraft
Game 2.5D do tính chất là trung gian giữa 2 loại game 2D và 3D nên đôi khirất khó phân biệt nó với 2 loại game kia một cách chính xác Cách chuẩn nhất đểphân biệt 3 loại game trên là dựa vào sự khác biệt trên mặt hiển thị vật thể của nó.2D biểu thị hình phẳng, 2.5D biểu thị một hình 2D phối màu khéo léo để mô tả mộthình ảnh 3D giả hoặc dùng pha trộn các thành phần 2D và 3D trong cùng game, 3D
là hình khối thực được xây dựng trên nguyên tắc khối đa giác trong không gian
1.3.3.Thiết kế 3D
Định nghĩa : Game 3D được xây dựng trên hệ thống đồ hoạ máy tính 3 chiềuhiện đại (3 Dimentional), hệ thống đồ hoạ này khai thác 3 chiều không gian là chiềungang – dọc – sâu tạo nên một thế giới hình khối khác hẳn thế giới hình phẳng của2D Đồ hoạ 3D khai thác tối đa các hiệu ứng 3 chiều như đổ bóng, chiều ánh sáng,
Ví du :Các game 3D có thể kể ra như Far Cry, Con Đường Tơ Lụa,Command and Conquer: Generals, …
Đối tượng 3 chiều (three-dimension hay 3-Dimentions hoặc 3D) sử dụng tất
cả 3 chiều (dài, cao và sâu) hoặc các trục tương ứng trong không gian X, Y và Z Các ứng dụng 3D thực thi theo một chuẩn dựa trên các trục gọi là hệ tọa độ Đề-Các
Trang 10trong không gian, khái niệm được đề cập tới đầu tiên vào những năm giữa thế kỷ
17 Hệ trục tọa độ này gồm có các trục X, Y và Z tương ứng với các chiều của không gian, tuân theo quy ước:
di chuyển nó theo hướng trái hoặc phải Cũng có thể di chuyển đối tượng trên trục
Y bằng cách kéo nó lên hoặc xuống Nếu di chuyển đối tượng của mình trên mộttrục Z, thì đối tượng sẽ xuất hiện ở gần hơn hoặc xa hơn từ tầm nhìn của tôi đối vớiđối tượng trong viewport.Điều tuyệt vời ở đây là trong đồ họa máy tính, Chỉ việctạo ra các dữ liệu 3D bằng cách sử dụng các công cụ 2D Màn hình máy tính là mộtđối tượng hiển thị 2D và chuột của cũng chỉ có thể di chuyển trên một mặt phẳng2D, nó có thể phản hồi các tương tác dựa trên các chuyển động theo hướng trái-
Trang 11phải, trước-sau, nhưng không thể phản hồi được theo hướng trên hoặc dưới bàn đặtchuột Xa hơn nữa, những gì xuất ra từ máy tính cũng sẽ luôn là 2D!
1.3.4 Thiết kế 4D
Xét nôm na ra là hậu duệ tương lai và 4D là công nghệ cuả tương lai 4D được định nghĩa theo 2 nghĩa: Ngôn ngữ lập trình 4D và 4D cinema 4D cinema đã
có ở VN thì phả nhưng chưa nhiều, ở Thailand và Đài Loan gần mình thì có
rồi.Véctơ-4 là một véctơ trên một không gian 4 chiều thực đặc biệt, gọi là không gian Minkowski Chúng xuất hiện lần đầu trong lý thuyết tương đối hẹp, như là sự
mở rộng của các véctơ của không gian 3 chiều thông thường, với các thành phần được biến đổi như không gian ba chiều và thời gian thông qua biến đổi Lorentz Tậphợp các véctơ - 4 cùng với biến đổi Lorentz tạo nên nhóm Lorentz
Nói nôm na thì hệ không gian 4 chiều là hệ 3 chiều gắn thêm 1 trục thời gian,từ nó xuất hiện lý thuyết "đi ngược thời gian" của nhà khoa học Eisntein
1.4.Thiết kế trò chơi
Quy trình thiết kế trò chơi gồm 5 bước cơ bản:
Xây dựng và phát triển ý tưởng là bước đầu tiên ddeerr sinh ra một gamemới hoặc phát triển một game đã có
Viết nội dung kịch bản cho trò chơi là bước phát triểnr và cụ thể hóa củabước một
Phân tích và thiết kế trò chơi là bước đưa bước 2 vào hiện thực
Lập trình ,mã hóa trò chơi
Kiểm thử phát triển,bảo trì cho trò chơi
1.4.1.Xây dựng phát triển ý tưởng
Việc xây dựng phát triển trò chơi nếu là xây dựng mới thì phải đưa ra được ýtưởng xây dựng trò chơi,thông thường sẽ được xuất phát từ những sự vật hiệntượng,những câu chuyện,nhưng nhân vật mang nét đặc trưng nổi bật nào đó
Trang 12Nếu là phát triển trò chơi dựa trên trò chơi đã có sẵn thì phải đưa ra được ý tưởngmới mẻ dựa trên cấu trúc sẵn có của trò chơi để dưa ra trò chơi có trình tiết hoặc kĩthuật xử lí khác với trò chơi được xây dựng nhưng cấu trúc trò chơi không đượcnằm ngoài cấu trúc đã có.
1.4.2.Viết nội dung kịch bản cho trò chơi
Phụ thuộc hoàn toàn vào bước một là sự biểu diễn một các khái quát và thực
tế của bước một.Thông thường nếu ý tưởng bắt đầu từ sự vật,hiện tượng hoặc nhânvật có sẵn,việc viết kịch bản sẽ là việ cấu trúc hóa các sự vật,hiện tượng mà trong ýtưởng xây dựng đặt mục tiêu đến
Thông thường thì kịch bản của trò chơi sẽ được bắt đầu từ cốt truyện để xâydựng nên trò chơi đó.Từ đó sẽ phát triển lên thành các quy tắc,các hoạt động của tròchơi được xây dựng
Trong bước naỳ người ta bắt đầu xây dựng nên quy tắc hoạt động của tròchơi,mô tả sơ lược cấu trúc thực tế của trò chơi từ lúc bắt đầucho tới khi kết thúc
1.4.3.Phân tích thiết kế trò chơi
-Thiết kế tổng quan:
Dựa vào kịch bản của trò chơi đã được xây dựng,ở bước này người ta pháchọa ra cấu trúc của trò chơi bao gồm các nhân vật,các đối tượng,các hoàn cảnh cótrong trò chơi đó
Xây dựng các sự kiện,hiện tượng dựa trên kịch bản trò chơi
Xây dựng mối quan hệ giữa các nhân vật,hiện tượng,các hoạt cảnh dựa trênkịch bản
Trong phần thiết kế tổng quan thông thường người ta phác họa hay phác thảo
sơ lược các điều kiện cần và đủ đẻ tạo nên trò chơi.Thông thường việc phác họa hay
ưu tiên vào đồ họa,âm thanh,hoạt động của trò chơi
-Thiết kế đồ họa:
Trong phần thiết kế tổng quan trò chơi dần được hình thành.Ở bước này tabắt đầu thiết kế giao diện cho trò chơi,cho các nhân vật có trong trò chơi,cho cáckhung cảnh…
Trang 13Trong bước này bắt đầu đi tìm một số phần mêm bắt đầu cho thiết kế đồ họa
và một số kĩ thuật đồ họa có thể dùng trong thiết kế trò chơ
1.4.4.Lập trình cho game
Ở trong bước này bắt đầu thiết kế các sự kiện và hoàn chỉnh phương pháp vàquy tắc của trò chơi
1.4.5 Kiểm thử,bảo trì và phát triển
Bắt đầu dưa trò chơi hoạt động và kiểm soát các lỗi không mong muốn phátsinh trong trò chơi,các khuynh hướng phát triển trò chơi cho phù hợp với thị trườnghiện tại
1.5.Phương pháp căn bản thiết kế game online
Đấu game với máy tính đã thú vị, thi thố giữa người với người trong môitrường game còn thú vị hơn Tất nhiên là bạn có thể ngồi với một người nữa trêncùng một máy tính và mỗi người dùng một cụm phím khác nhau để điều khiển.Nhưng sẽ thú vị hơn khi dù xa đến nửa vòng trái đất, bạn vẫn có thể “đối đầu” trựctiếp với nhau Việc tạo ra một trò chơi online hiệu quả không phải dễ dàng Nó đòihỏi bạn phải am hiểu về game và lập trình tôt Một game online cần thiết kế 1 severquản lí mạng chung Server này chấp nhận tất cả các yêu cầu hợp lệ đến từ mọi nơitrên mạng Server cung cấp và điều khiển các tiến trình truy cập vào tài nguyên của
hệ thống Các game thủ chạy game trên chế độ client (máy khách) Việc xây dựngClient phải tuân theo giao thức mà server đưa ra
Trong phần này, chúng ta sẽ bàn về các khía cạnh cơ bản để thiết kế đượcmột game online giành cho nhiều người chơi.Về căn bản để thiết kế một gameonline ta có bốn bước chính
Thiết lập kết nối đến một máy tính khác
Thiết lập phòng gam
Thiết lập cách thức chia sẻ dữ liệ:
Truyền tin nhắn
Trang 141.5.1 Thiết lập kết nối đến một máy tính khác
Mỗi người chạy một bản copy của trò chơi, mặc dù chúng có thể chạy trênnhiều chế độ (mode) khác nhau Một người sẽ kích hoạt trò chơi của mình trên chế
độ server (dùng máy chủ) Những người khác chạy game trên chế độ client (máykhách) Máy chủ sẽ khởi động trò chơi trước rồi tạo ra một “phòng” (session) đểnhững người người này vào “phòng” và tham gia trò chơi Người chơi phải quyếtđịnh cơ chế dùng để liên hệ giữa các máy tính Trên một mạng nội bộ, cách dễ nhất
là dùng kết nối IPX
Nếu tất cả đều có kết nối với Internet thì cơ chế thường dùng là TCP/IP Tronggiao thức này, các máy khách phải biết được địa chỉ IP của máy chủ Do đó, ngườichơi chạy game trên chế độ máy chủ phải đưa địa chỉ IP cho những người dùng máykhách
dễ dàng bị “lệch pha” và từ đó sẽ tạo ra nhiều rắc rối Chúng ta phải hạn chế lượng liên lạc càng nhiều càng tốt Rất có thể dữ liệu còn dễ bị truyền chậm ở phía đầu kết nối kia, thậm chí bị mất và không đến được Chúng ta phải xử lý các vấn đề này dựa trên kiểu game, ví dụ như game chiến thuật theo lượt sẽ dùng đến cơ chế khác so với các trò chơi hành động nhanh Có hai cơ chế để liên lạc là chia sẻ dữ liệu và truyền message
1.5.3.Thiết lập cách thức chia sẻ dữ liệu
Để dùng cơ chế này, bạn phải xác định giá trị nào dùng cho thức thể nào và
ai được phép thay đổi nó với cách thức liên lạc như trên, hai phần chơi có thể hơi
“lệch pha” do vậy cần xử lí đảm bảo cho hai bên đều sẵn sàng trước khi bất kỳ thứ
gì được vẽ ra trên màn hình.Mặt khác khi một người tham gia vào trò chơi sau khicác giá trị chia sẻ này thay đổi thì chúng sẽ không được gửi tới người mới Do vậy,chỉ những thay đổi mới sau thời điểm đó mới được gửi đến người mới tham gia
Trang 151.5.4 Truyền tin nhắn
Người chơi có thể gửi các tin nhắn này đến một hoặc tất cả những ngườicũng tham gia khác Các bên có thể nhìn thấy message đến và thực hiện các hoạtđộng liên quan liền sau đó Những dữ liệu này được gửi theo chế độ đảm bảo, theo
đó chắc chắn là chúng tới được nhưng với tốc độ chậm hoặc theo chế độ không đảmbảo nhưng có tốc độ nhanh hơn
Trò chơi online này có một vấn đề nghiêm trọng như sau: Khi có sự ngắtquãng trong liên lạc rắc rối này nảy sinh nhất là khi khoảng cách giữa các máy tínhquá xa nhau và đường truyền chậm Khi trò chơi trở nên phức tạp hơn, bạn sẽ cầnthêm nhiều giá trị để mô tả tình trạng của nó Nếu bạn thay đổi nhiều giá trị trongmỗi step thì sẽ có nhiều thông tin hơn cần được truyền đi Việc này sẽ khiến bạnmất thời gian, làm chậm trò chơi hoặc có thể làm cho mọi hoạt động bị “lệch pha”
để xử lý tình trạng này là xác định điểm “chết” Tại đây, chúng ta gửi thông tin từthời điểm này đến thời điểm khác Vào khoảng thời gian giữa, bản thân trò chơiphải “đoán” điều gì đang diễn ra tùy vào thông tin mà nó có
1.6.Giới thiệu cờ vua
Cờ vua là một trò chơi trên bàn và là một môn thể thao trí tuệ cho 2 ngườichơi Ngày nay, cờ vua là một trong những trò chơi phổ biến nhất thế giới với hàngtriệu người tại nhà riêng, trong câu lạc bộ, trực tuyến, từ xa và trong các giải đấu.Trò chơi này diễn ra trên một bảng hình vuông, gọi là bàn cờ, gồm 8 hàng (đánh số
từ 1 đến 8) và 8 cột (đánh số từ a đến h), tạo ra 64 ô hình vuông với các màu đậm vànhạt xen kẽ nhau, với mỗi người chơi sẽ có ô màu nhạt ở hàng cuối cùng bên tayphải của mình khi ngồi vào bàn chơi cờ Mỗi người sẽ bắt đầu ván cờ với 16 quân
cờ và sẽ lần lượt đi các quân của mình sau khi đối phương đã đi xong một nước(hoàn thành nước đi) Các quân cờ của mỗi bên bao gồm 8 Tốt , 2 Mã 2Tượng , 2 Xe , 1 Hậu và 1 Vua Người cầm quân trắngluôn là người đi đầu tiên; người kia cầm quân đen Các quân Hậu và Xe được gọi làquân nặng, còn Tượng và Mã được gọi là quân nhẹ
Trang 16Cờ vua không phải là một trò chơi may rủi; nó dựa thuần túy vào chiến thuật
và chiến lược Tuy thế, trò chơi này rất phức tạp đến mức thậm chí cả những ngườichơi hay nhất cũng không thể tính hết tất cả mọi phương án: mặc dù chỉ có 64 ô và
32 quân cờ trên bàn cờ nhưng số lượng nước đi có thể được thì còn vượt cả sốlượng các nguyên tử có trong vũ trụ Cờ vua là một trong những trò chơi trí tuệ phổbiến nhất thế giới; nó được nói đến không chỉ như là một trò chơi mà còn là nghệthuật, khoa học và thể thao Cờ vua đôi khi được nhìn nhận như là trò chơi chiếntranh trừu tượng; cũng như là "các cuộc đấu trí tuệ", và việc chơi cờ vua được coinhư là một cách để rèn luyện tư duy và bản lĩnh Cờ vua được chơi để tiêu khiểncũng như để thi đấu trong các câu lạc bộ cờ vua, các giải đấu, chơi trực tuyến vàchơi theo cách gửi thư Rất nhiều biến thể và các trò chơi tương tự như cờ vua đượcchơi trên toàn thế giới Trong số đó phổ biến nhất theo trật tự giảm dần về số ngườichơi là cờ tướng (ở Trung Quốc, Việt Nam v.v), Shogi (ở Nhật Bản) và Janggi (ởTriều Tiên)
Lịch sử
Nhiều quốc gia cho rằng họ là nơi phát minh ra cờ vua trong dạng phôi thainào đó Phổ biến nhất thì người ta tin rằng cờ vua có nguồn gốc từ Ấn Độ, tại đó nó
được gọi là chaturanga và có lẽ ra đời vào khoảng thế kỷ 6.
Một thuyết khác cho rằng cờ vua sinh ra từ trò chơi tương tự của cờ Trung Quốc,hoặc ít nhất là từ tổ tiên của cờ tướng, là môn đã tồn tại ở Trung Quốc kể từ thế kỷ 2TCN Joseph Needham và David Li là hai trong số nhiều học giả theo thuyết này
Cờ vua sau đó được phổ biến về phía tây tới châu Âu và về phía đông tới Nhật Bản,sinh ra các biến thể trên đường đi của nó Từ Ấn Độ nó đã tới Ba Tư, ở đây cácthuật ngữ của nó được phiên âm sang tiếng Ba Tư và tên gọi của nó đổi thành
Nguyên lý chơi
Trang 17Các quy tắc khi chơi cờ vua
Khi một ván cờ vua bắt đầu, một người chơi sẽ cầm quân đen và người chơicòn lại cầm quân trắng Việc chọn lựa ai sẽ cầm quân đen hay trắng phụ thuộc vàothể thức chơi là giải trí hay thi đấu trong hệ thống có tổ chức Nó có thể là do haingười thỏa thuận (giải trí) hoặc do quyết định của trọng tài trong giải đấu [1] Bêncầm quân trắng luôn luôn được đi trước và do đó có một ưu thế nhỏ so với bên cầmquân đen Các quân cờ cần phải xếp trên bàn cờ tiêu chuẩn với ô nằm ở hàng cuốicùng bên tay phải người chơi bao giờ cũng có màu nhạt.Các quân cờ có nước đi khácnhau
Xe (ký hiệu quốc tế R) :
Di chuyển theo các đường thẳng dọc theo cột hay hàng tới ô còn trống mà không có quân nào cản trên đường đi hay tới ô bị quân đối phương chiếm giữ (ăn quân) nhưng không thể vượt qua quân đang đứng ở ô đó Ngoại lệ duy nhất là trường hợp nhập thành Khi đó nó có thể nhảy qua quân Vua của mình để đứng cạnh nó Chỉ có Xe mới có nước đi như thế
Tượng (ký hiệu quốc tế B) :
Di chuyển theo đường chéo tới ô có cùng màu với nguyên lý tương tự như
Xe tới ô còn trống hay ô bị quân đối phương chiếm giữ (ăn quân)
Trang 18 Hậu (ký hiệu quốc tế Q) :
Có nước đi là tổ hợp đơn giản của chuyển động của Xe và Tượng Trong một
nước đi nó có thể di chuyển theo đường chéo hoặc đường thẳng dọc theo cột hay
hàng, với nguyên lý đi và ăn quân giống như Tượng và Xe
Mã (ký hiệu quốc tế N):
Trang 19Có thể di chuyển tới ô còn trống hay ô bị quân đối phương chiếm giữ (ăn quân) theo dạng hình chữ L Quân Mã không bị cản như trong cờ tướng.
Tốt (không cần ký hiệu):
Có thể di chuyển thẳng về phía trước chỉ một ô một lần tới ô còn trống (đi mà
không ăn quân), nhưng khi di chuyển quân để ăn quân đối phương thì đi chéo Ví
dụ, Tốt trắng tại ô c4 có quyền ăn quân đối phương tại b5 hoặc d5 nếu một trong hai
ô này có quân đối phương chiếm hoặc di chuyển xuống ô c5 nếu ô này còn trống, trừ hai trường hợp sau:
Nó có thể di chuyển 1 hoặc 2 ô nếu nó đi từ vị trí xuất phát ban đầu tới ô chưa bị chiếm giữ, nhưng không thể nhảy qua một quân khác để tới ô đó Ví dụ Tốt trắng tại g2 có thể đi tới g3 hoặc g4 nếu đây là nước đi đầu tiên của nó và các ô này chưa bị chiếm giữ, nhưng nó không thể đi tới g4 nếu ô g3 đã có một quân nào đó chiếm giữ
Trong trường hợp khi một quân Tốt nào đó của bên trắng đạt tới hàng 5 (ví
dụ tới ô e5) và quân Tốt thuộc một trong hai cột của bên đen nằm ngay bên cạnh cột
mà Tốt trắng này đang chiếm giữ (trong trường hợp đã cho là cột d và cột f) đi từ vị trí xuất phát đầu tiên (d7 hay f7) nhảy liền 2 ô tới ô d5/f5 thì Tốt trắng tại vị trí e5
ngay tại nước đi sau đó có quyền ăn Tốt đen tại ô d5/f5 và di chuyển tiếp tới ô
d6/f6 Quyền này sẽ tự động mất, nếu tại nước đi ngay sau đó quân trắng di chuyển quân khác Tương tự như vậy cho Tốt đen khi nó đã chiếm giữ hàng 4 Đây là
trường hợp mà trong cờ vua người ta gọi là bắt tốt qua đường (en passant).
Trang 20Tốt còn một đặc điểm nữa là khi nó di chuyển đến hàng cuối cùng thì người chơi
có quyền phong cấp cho nó thành bất kỳ quân nặng hay nhẹ nào (Hậu, Xe, Tượng, Mã)
Trang 21 Vua (ký hiệu quốc tế là K):
Là quân quan trọng nhất, nếu mất Vua thì người chơi thua cuộc Mỗi lần đi
nó có thể ăn quân hoặc di chuyển sang các ô bao quanh ô mà nó hiện tại đang chiếmgiữ, nhưng không thể tới ô mà quân của mình đang chiếm giữ hay các ô bị quân đối phương kiểm soát Ngoại lệ duy nhất là trường hợp nhập thành Khi đó nó có thể di chuyển qua hai ô đồng thời với việc di chuyển quân Xe của mình để quân Xe đó đứng bên cạnh nó về phía cột trung tâm Ký hiệu của nhập thành là 0-0 (nhập thành gần) và 0-0-0 (nhập thành xa)
Trang 22Nhập thành
Khi ăn quân đối phương, quân tấn công sẽ di chuyển tới ô đó và thay thế cho
quân đối phương tại vị trí này, bắt tốt qua đường (en passant) là ngoại lệ duy nhất.
Quân bị ăn được loại ra khỏi bàn cờ Vua không thể không bảo vệ khỏi nước chiếu,
do đó khi bị chiếu thì người chơi phải thực hiện các biện pháp nhằm cứu Vua (dichuyển Vua khỏi vị trí bị chiếu, ăn quân đang chiếu hay dùng quân khác của mìnhcản đường chiếu nếu có thể) Nếu không thể có nước đi để cứu Vua thì người chơi
bị chiếu bí và thua cuộc
Các ván cờ không phải bao giờ cũng kết thúc bằng chiếu bí Có thể một bên xinthua, có thể thua do hết giờ hoặc phạm luật chơi Có thể xảy ra các ván cờ hòa Một ván cờvua là hòa khi: do thỏa thuận của hai bên do không bên nào dám mạo hiểm hay khi không
đủ lực lượng để chiếu hết, rơi vào trạng thái hết nước đi (stalemate), cả hai bên lặp lại
nước đi ba lần hay luật 50 nước đi (perpetual check).Chiến lược và chiến thuật Khaicuộc là một loạt các nước đi lúc bắt đầu chơi, thông thường là được ghi nhớ sẵn,điều này giúp cho người chơi xây dựng các thế đứng và phát triển quân để chuẩn bịcho giai đoạn trung cuộc Các thế khai cuộc thông thường được xây dựng trênnguyên tắc chiếm giữ phần trung tâm bàn cờ (gồm 4 ô trung tâm e4, e5, d4 và d5),phát triển quân, bảo vệ vua và tạo ra một cấu trúc tốt đủ mạnh Quan điểm của cờvua hiện đại cho rằng việc kiểm soát trung tâm không chỉ là bằng các Tốt mà cònnhờ sức mạnh của các quân khác Một cách rất quan trọng để bảo vệ Vua và triển
Trang 23khai nhanh quân Xe là nhập thành nhằm đưa Vua vào vị trí khó bị tấn công, tuy
nhiên không phải trong bất kỳ ván cờ nào cũng cần nhập thành
Trong quá trình tàn cuộc các Tốt và Vua trở nên tương đối mạnh hơn do khi
đó lực lượng quân nặng và nhẹ của cả hai bên đều suy giảm rõ rệt Cả hai bên khi
đó đều có xu hướng di chuyển Tốt thật nhanh nhằm phong cấp cho nó Nếu mộtngười chơi có ưu thế rõ rệt về lực lượng thì việc chiếu bí chỉ là vấn đề thời gian vàván cờ sẽ kết thúc nhanh chóng, nhưng nếu ván cờ là tương đối cân bằng về lựclượng thì việc nắm chiến thuật cờ tàn là rất quan trọng Trong các giải cờ tính giờthì việc kiểm soát nhịp độ (thời gian cho mỗi nước đi) là cực kỳ quan trọng khi còn
ít quân trên bàn cờ Trong nhiều trường hợp, người chơi có ưu thế về lực lượngnhưng lại thua cờ do hết thời gian Ngoài ra khi lực lượng không đủ để chiếu bí và
cả hai đã thực hiện đủ số nước đi quy định theo thời gian mà không có sự di chuyểnquân Tốt thì ván cờ dẫn đến hòa Ví dụ người chơi còn 1 Vua và 2 Mã thì trongphần lớn các trường hợp không thể chiếu bí đối phương chỉ còn 1 Vua (có một thếngoại lệ)
Các biến thể của hình thức chơi
Bên cạnh thể thức chuẩn của cờ vua còn phổ biến nhiều thể thức khác trongcác cuộc chơi cờ
Cờ nhanh là một thể thức của cờ vua trong đó thời gian chơi bị giới hạn chomỗi người chơi trong một khoảng ngắn Nói chung mỗi bên chỉ có từ 3 đến 15 phút(5 phút là phổ biến nhất) cho toàn bộ các nước đi Thể thức nhanh hơn là cờ chớp.Thời gian ở đây ít hơn 3 phút Cờ nhanh đòi hỏi người chơi phải suy nghĩ nhanh nếukhông họ có thể thua vì hết giờ Khi chơi cờ nhanh các máy tính có ưu thế hơn sovới người
Các biến thể của hình thức chơi
Bên cạnh thể thức chuẩn của cờ vua còn phổ biến nhiều thể thức khác trongcác cuộc chơi cờ
Cờ nhanh là một thể thức của cờ vua trong đó thời gian chơi bị giới hạn chomỗi người chơi trong một khoảng ngắn Nói chung mỗi bên chỉ có từ 3 đến 15 phút(5 phút là phổ biến nhất) cho toàn bộ các nước đi Thể thức nhanh hơn là cờ chớp.Thời gian ở đây ít hơn 3 phút Cờ nhanh đòi hỏi người chơi phải suy nghĩ nhanh nếu
Trang 24không họ có thể thua vì hết giờ Khi chơi cờ nhanh các máy tính có ưu thế hơn sovới người.
Cờ vua hiện đại
Ban đầu các quân cờ của người châu Âu có nhiều giới hạn về nước đi Tượngchỉ có thể đi bằng cách nhảy chính xác qua 2 ô theo đường chéo, Hậu chỉ có thể dichuyển theo đường chéo là một ô, Tốt không thể di chuyển 2 ô trong nước đi đầutiên của nó và không có nhập thành Cuối thế kỷ 15, các quy tắc hiện đại đối với cácnước đi cơ bản đã được chấp nhận từ Ý: quân Tốt có khả năng đi hai ô nếu đang ở
vị trí xuất phát (nhảy) và khả năng bắt quân theo kiểu "bắt tốt qua đường" (en
passant), Tượng có được nước đi như ngày nay và Hậu đã trở thành quân mạnh
nhất; do đó cờ vua hiện đại được nói đến như là "cờ của quân Hậu", "cờ Hậu điên".Trò chơi này kể từ đó đã gần giống như cờ ngày nay Các quy tắc hiện nay đã đượchoàn thiện xong vào đầu thế kỷ 19, ngoại trừ các điều kiện chính xác là một cờ hòa
CHƯƠNG 2
Trang 25CƠ SỞ LÝ THUYẾT
C# là một ngôn ngữ hướng đối tượng rất mạnh, và công việc của người lậptrình là kế thừa để tạo và khai thác các đối tượng Do vậy để nắm vững và phát triểntốt người lập trình cần phải đi từ những bước đi dầu tiên tức là đi vào tìm hiểunhững phần cơ bản và cốt lõi nhất của ngôn ngữ.Trong chương này chúng ta sẽ đivào tìm hiểu những kiến thức căn bản của c#
Những chủ nội dung chính của chương :
Khai báo biến
Khởi tạo và phạm vi hoạt động của biến
C#'s predefined data types
Cơ bản trình biên dịch dòng lệnh trong C#
Sử dụng chú thích trong C# và Visual Studio NET
Các định danh và từ khoá trong C#
Chương trình đầu tiên !
Chương trình viết bằng C# rồi cho biên dịch và chạy thử nghiệm.Bạn có thểbiên dịch chương trình này bằng cách vào chương trình soạn thảo văn bản đơn giản,
Trang 26Notepad chẳng hạn, rồi cho cất trữ dưới dạng tập tin với tên mở rộng là cs (tắt chữ
C sharp), rồi cho chạy trình biên dịch C# command_line (scs.exe) ví dụ tập tinFirst.cs :
2.1.Biến và Hằng
2.1.1 Biến
Một biến dùng để lưu trữ giá trị mang một kiểu dữ liệu nào đó
Cú pháp C# sau đây để khai báo một biến :
[ modifier ] datatype identifer ;
Với modifier là một trong những từ khoá : public, private, protected, còndatatype là kiểu dữ liệu (int , long , float ) và identifier là tên biến
Thí dụ dưới đây một biến mang tên i kiểu số nguyên int và có thể được truycập bởi bất cứ hàm nào
Thí dụ :
public int i ;
Ta có thể gán cho biến một giá trị bằng toán tử "="
Trang 27bool y = true ; // khai báo trên đúng
int x = 10 , bool = true // khai báo trên có lỗi
2.1.2.Hằng
Một hằng (constant) là một biến nhưng trị không thể thay đổi được suốt thời gianthi hành chương trình Đôi lúc ta cũng cần có những giá trị bao giờ cũng bất biến
Thí dụ
Const int a=100;// giá trị này không bị thay đổi
Trong định nghĩa lớp mà ta sẽ xem sau, người ta thường định nghĩa những mụctin (field) được gọi là read-only variable, nghĩa là những biến chỉ được đọc mà thôi
Hằng bao giờ cũng static, tuy nhiên ta không thể đưa từ khoá static vào khikhai báo hằng
Có ba thuận lợi khi sử dụng hằng trong chương trình của bạn :
Hằng làm cho chương trình đọc dễ dàng hơn, bằng cách thay thế những con
số vô cảm bởi những tên mang đầy ý nghĩa hơn
Hằng làm cho dễ sữa chương trình hơn
Trang 28 Hằng làm cho việc tránh lỗi dễ dàng hơn, nếu bạn gán một trị khác cho mộthằng đâu đó trong chương trình sau khi bạn đã gán giá trị cho hằng, thì trình biêndịch sẽ thông báo sai lầm.
2.2.Kiểu giá trị được định nghĩa trước (Predefined Value Types)
Kiểu dữ liệu bẩm sinh (The built-in value types) trình bày ban đầu như integer và floating-point numbers, character, và Boolean types
Trang 302.3.Câu lệnh điều kiện
2.3.1.Câu lệnh điều kiện if :
Trang 31Đoạn code trên kiểm tra isZero có bằng 0 hay không.
Trong ví dụ dưới đây chúng ta dùng câu điều kiện íf else để kiểm tranhiều điều kiện
Trang 32Thí dụ sau: Thí dụ sẽ kiểm tra integerA thoả đúng trong các trường hợp 1, 2,
3 không nếu không đúng sẽ thực thi trường hợp default
Trang 35// Vòng lặp này sẽ thực hiện ít nhất một lần thậm chí nếu câu điều kiện sai MustBeCalledAtLeastOnce();
condition = CheckCondition();
} while (condition);
2.4.4 Vòng lặp foreach (The foreach Loop)
Cho phép bạn rảo qua tất cả các phần tử bản dãy hoặc các tập hợp khác, vàtuần tự xem xét từng phần tử một
Console.WriteLine("This won't be executed");Label1:
Console.WriteLine("Continuing execution from here")
2.5.2.Câu lệnh break
Ta dùng câu lệnh break khi muốn ngưng ngang xương việc thi hành và thoátkhỏi vòng lặp
2.5.3 Câu lệnh continue
Trang 36Câu lệnh continue được dùng trong vòng lặp khi bạn muốn khởi động lại mộtvòng lặp nhưng lại không muốn thi hành phần lệnh còn lại trong vòng lặp, ở mộtđiểm nào đó trong thân vòng lặp.
2.5.4.Câu lệnh return
Câu lệnh return dùng thoát khỏi một hàm hành sự của một lớp, trả quyềnđiều khiển về phía triệu gọi hàm (caller) Nếu hàm có một kiểu dữ liệu trả về thìreturn phải trả về một kiểu dữ liệu này; bằng không thì câu lệnh được dùng không
có biểu thức
2.6.Cấu trúc chương trình
Trước đây chúng ta đã được giới thiệu vài các phần của main 'buildingblocks' tạo bởi ngôn ngữ C# bao gồm khai báo biến, các kiểu dữ liệu và các câulệnh của chương trình chúng ta cũng đã thấy đoạn mã ngắn về phương thức hàmmain() Cái chúng ta chưa thấy là làm thế nào để đặt tất cả chúng vào một khungcủa một chương trình hoàn chỉnh Để trả lời chúng ta làm việc với các class
2.6.1.Lớp
Như bạn đã biết , các class tạo nên một chương trình lớn trong C# , để biết
thêm chúng ta sẽ được trình bày ở chương 3 toàn bộ về lập trình hướng đối tượngtrong C# Tuy nhiên nó thực sự có khả năng viết một chương trình mà không sửdụng đến lớp, ở đây chúng ta chỉ cần một ít về lớp Chúng ta sẽ được trang bị cúpháp cơ bản để gọi một lớp
Lớp là một khuôn mẫu thiết yếu mà chúng ta cần tạo ra đối tượng Mỗi đốitượng chứa dữ liệu và các phương thức chế tác truy cập dữ liệu Lớp định nghĩa cái
mà dữ liệu và hàm của mỗi đối tượng riêng biệt (được gọi là thể hiện) của lớp có thểchứa Ví dụ chúng ta có một lớp miêu tả một khách hàng nó được định nghĩa cáctrường như CustomerID, FirstName, LastName, và Address, cái mà chúng ta giữthông tin cụ thể khách hàng Nó cũng có thể được miêu tả bởi các hành động trongcác trường dữ liệu
Các lớp thành viên
Dữ liệu và các hàm không có lớp đượp biết như là lớp thành viên
Thành phần dữ liệu:Thành phần dữ liệu (Data members) là những thành phần chứa
dữ liệu cho lớp – trường (fields), Hằng số (constants), và sự kiện (events)
Trang 37Fields: Là các biến kết hợp với lớp ví dụ, chúng ta định nghĩa một lớp
PhoneCustomer với trường CustomerID, FirstName and LastName như sau:
class PhoneCustomer
{
public int CustomerID;
public string FirstName;
public string LastName;
Các hằng số có thể kết hợp với lớp như là biến chúng ta khai báo một hằng
số sử dụng từ khoá const nếu nó khai báo public thì có thể truy cập ở ngoài lớp class PhoneCustomer
{
public const int DayOfSendingBill = 1;
public int CustomerID;
public string FirstName;
public string LastName;
}
2.6.2.Hàm thành phần (Function Members):
Bao gồm các thuộc tính và các phương thức Chúng ta sử dụng các từ khoásau để bổ nghĩa cho một phương thức :
Trang 382.6.3.Cấu trúc (Structs )
Chúng ta sẽ đề cập ngắn gọn là, ngoài các lớp nó cũng có thể để khai báocho cấu trúc, cú pháp giống như cơ bản bạn biết ngoại trừ chúng ta dùng từ khoástruct thay cho class
Ví dụ chúng ta khai báo một cấu trúc PhoneCustomer được viết như sau:
struct PhoneCustomer
{
public const int DayOfSendingBill = 1;
public int CustomerID;
public string FirstName;
public string LastName;
}
2.6.4.Phương thức
Trong phần này chúng ta sẽ được học làm thế nào để định nghĩa các phươngthức trong C#
Khai báo phương thức (Declaring Methods):Cú pháp khai báo trong C# gần như
giống với cách khai báo trong C++ và Java Chỉ khác là mỗi phương thức được khaibáo tách biệt public hoặc private Không thể dùng public để nhóm các phương thứcđịnh nghĩa Ngoài ra tất cả các phương thức C# được định nghĩa trong lớp địnhnghĩa
Trang 39Trong C#, các phuơng thức kèm theo các từ khoá dùng bỗ nghĩa cho phươngthức., kiểu giá trị trả về, các tham số nhập vào và phần thân nằm trong dấu ngoặckép:
[modifiers] return_type MethodName([parameters])
Gọi Phương thức (Invoking Methods)
Ví dụ dưới đây sẽ thực hiện việc gọi phương thức MathTest, đồng thờihướng dẫn cú pháp để gọi phương thức Phương thức MathTest sẽ được hàm Main()gọi khi nó cần