Lập trình game bằng ngôn ngữ c++

34 3.6K 10
Lập trình game bằng ngôn ngữ c++

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ Mục lụC Trang Lời mở đầu 3 Chơng I : Giới thiệu ngôn ngữ C++ 5 1. Khái niệm lập trình hớng đối tợng 5 2. Các tính chất cơ bản của lập trình hớng đối tợng .6 2.1. Tính trừu tợng (abstraction) 7 2.2. Tính đóng gói (encapsulation) và che dấu thông tin (information hiding) .7 2.3. Tính đa hình (polymorphism) 7 2.4. Tính kế thừa (inheritance) .8 3. Các khái niệm liên quan đến các ngôn ngữ lập trình OOP hiện đại 8 3.1. Lớp (class) .8 3.2. Lớp con (subclass) 9 3.3. Lớp trừu tợng hay lớp cơ sở trừu tợng (abstract class) 9 3.4. Phơng thức (method) .9 3.5. Thuộc tính (attribute) 10 3.6. Thực thể (instance) 10 3.7. Công cộng (public) .11 3.8. Riêng t (private) 11 3.9. Bảo tồn (protected) 11 3.10. Đa kế thừa (muliple inheritance) 11 4. Sự cần thiết của C++ .12 Chơng II: Lý thuyết Game 14 1 Mở đầu 14 2. Một số khái niệm cơ bản .14 3. Nguyên lý MinMax .18 Nguyễn Thị Minh GVHD: T.S Phan Lê Na 1 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ 4. Nguyên lý Minimax 20 Chơng III: Chơng trình Game bắn bóng .24 I. Bài toán, ý tởng thuật toán và giao diện của chơng trình Game bắn bóng 24 1. Bài toán 24 2. ý tởng thuật toán .24 3. Các giao diện của chơng trình bắn bóng .26 3.1. Màn hình menu chính .26 3.2. Màn hình chế độ chơi Normal 27 3.3. Màn hình Chế độ chơi Hard 28 3.4. Màn hình Chế độ chơi Hardest .29 3.5. Màn hình ghi tên ngời chơi .30 3.6. Màn hình kết thúc trò chơi 31 Kết luận .32 Tài liệu tham khảo .33 Nguyễn Thị Minh GVHD: T.S Phan Lê Na 2 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ lời nói đầu Ngày nay việc áp dụng các công nghệ khoa học kỹ thuật vào lĩnh vực đời sống của con ngời ngày càng tăng và không ngừng can thiệp vào hầu hết các công việc trong đời sống. CNTT là một trong những ngành khoa học đó. Đi đôi với sự phát triển của công nghệ chế tạo các thiết bị máy tính thì việc các sản phẩm phần mềm ứng dụng ra đời có tính chất quyết định đối với việc áp dụng ngành khoa học này. Trên thế giới cũng nh ở Việt Nam, CNTT đã trở thành một ngành công nghiệp mũi nhọn, nó là một ngành khoa học kỹ thuật không thể thiếu trong việc áp dụng vào các hoạt động xã hội nh : Quản lý, kinh tế, thông tin .ở nớc ta hiện nay, việc áp dụng vi tính hoá trong việc quản lý tại các cơ quan, xí nghiệp đang rất phổ biến và trở nên cấp thiết. Nói đến công nghệ thông tin chúng ta không thể không nhắc đến các ngôn ngữ lập trình, các ngôn ngữ lập trình đóng vai trò hết sức quan trọng trong lĩnh vực công nghệ thông tin. Công nghệ thông tin phát triển dẫn đến sự ra đời của nhiều ngôn ngữ lập trình mới thân thiện hơn với ngời sử dụng nh: Visual Basic, Java, C# . Đời sống của con ngời ngày càng đợc nâng cao do đó nhu cầu về vui chơi giải trí ngày càng lớn. Các trò chơi đợc thiết kế bằng máy tính đã ra đời và trên đà phát triển nhằm đáp ứng một phần nhu cầu về giải trí của con ngời. Chính vì vậy tôi đã nghiên cứu ngôn ngữ lập trìnhngôn ngữ C++ và chọn đề tài Lập trình Game bằng ngôn ngữ C++ làm đồ án tốt nghiệp đại học. Mục tiêu của chơng trình là xây dựng trò chơi đơn giản nhằm giúp ngời chơi th giãn sau những giờ học và làm việc căng thẳng. Đồ án Lập trình Game bằng ngôn ngữ C++ ngoài phần mở đầu và kết luận gồm 3 chơng: Chơng I: Giới thiệu ngôn ngữ C++ Chơng II: Giới thiệu lý thuyết Game Nguyễn Thị Minh GVHD: T.S Phan Lê Na 3 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ Chơng III: Chơng trình Game bắn bóng. Vì vốn kiến thức về phân tích và thiết kế trò chơi nói chung cũng nh trò chơi bắn bóng nói riêng còn nhiều hạn chế, kỹ thuật xây dựng giao diện chơng trình còn rất có hạn. Do đó qua báo cáo này tôi rất mong nhận đợc ý kiến đóng góp từ phía thầy cô giáo và các bạn để tôi có thể xây dựng và hoàn thiện hơn hệ thống trò chơi này. Mặc dù đã cố gắng hết sức nhng do lần đầu tiên đi theo lĩnh vực viết trò chơi, tài liệu lý thuyết game lại không có nhiều, do những lý do khách quan và khả năng hạn chế của bản thân nên chơng trình chắc chắn không thể tránh khỏi những thiếu sót. Và một lần nữa tôi xin chân thành cảm ơn cô giáo, Tiến sỹ Phan Lê Na đã tận tình giúp đỡ tôi hoàn thành đồ án này. Tôi cũng xin chân thành cảm ơn thầy cô giáo trong khoa CNTT cùng các bạn trong lớp 45K đã đóng góp nhiều ý kiến bổ ích để tôi hoàn thành đồ án tốt hơn. Vinh , ngày 15 tháng 4 năm 2009 Sinh viên thực hiện: Nguyễn Thị Minh Nguyễn Thị Minh GVHD: T.S Phan Lê Na 4 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ Chơng I Giới thiệu ngôn ngữ C++ Ngôn ngữ C++ đợc phát triển từ ngôn ngữ C. Có thể coi C++ là một cải tiến của C. Nó mang đầy đủ các đặc tính của C. Một chơng trình viết bằng C có thể biên dịch đợc bằng trình biên dịch của C++. ở những phiên bản đầu tiên, thực chất mã nguồn C++ đầu tiên đợc dịch sang mã nguồn C, rồi từ mã nguồn C tiếp tục đợc biên dịch tiếp. C++ngôn ngữ lập trình hớng đối tợng, do vậy nó có đầy đủ các tính chất của một ngôn ngữ lập trình hớng đối tợng: tính kế thừa, tính đóng kín, tính đa dạng. Nhng C++ không phải là ngôn ngữ hớng đối tợng hoàn toàn mà là ngôn ngữ "đa hớng". Vì C++ hỗ trợ cả lập trình hớng hành động và lập trình hớng đối tợng. C++ kết hợp những ý tởng hay nhất của lập trình có cấu trúc với việc phân chia một bài toán thành các nhóm nhỏ có quan hệ với nhau, mỗi nhóm con đó là một đối tợng chứa các lệnh và dữ liệu riêng của nó. C++ đa vào các khái niệm hàm ảo, quá tải hàm, quá tải toán tử cho phép tạo ra các kiểu dữ liệu trừu tợng, hỗ trợ thừa kế bội. Mục tiêu của C++ là tiếp cận những ý tởng của phơng pháp luận hớng đối tợng và trừu tợng dữ liệu. Các đặc tính của C++ cho phép ngời lập trình xây dựng những th viện phần mềm có chất lợng cao phục vụ những đề án lớn. C++ngôn ngữ thích hợp cho việc xây dựng những chơng trình lớn nh các hệ soạn thảo, chơng trình dịch, các hệ quản trị cơ sở dữ liệu, các hệ truyền thông, . 1. Khái niệm lập trình hớng đối tợng Lập trình hớng đối tợng (gọi tắt là OOP, từ chữ Anh ngữ object-oriented prgramming), hay còn gọi là lập trình định hớng đối tợng, là kỹ thuật lập trình hỗ trợ công nghệ đối tợng. OOP đợc xem là giúp tăng năng suất, đơn giản hoá độ phức tạp khi bảo trì cũng nh mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tợng phần mềm ở bậc cao hơn. Ngoài ra, nhiều Nguyễn Thị Minh GVHD: T.S Phan Lê Na 5 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ ngời còn cho rằng OOP dễ tiếp thu hơn cho những ngời mới học về lập trình hơn là các phơng pháp trớc đó. Một cách giản lợc, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã cho ngời lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tơng tác với các chơng trình đó giống nh là tơng tác với các đối tợng vật lý. Những đối tợng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng đợc nhìn nhận nh là một đơn vị duy nhất. Mỗi đối tợng có một tên riêng biệt và tất cả các tham chiếu đến đối tợng đó đợc tiến hành qua tên của nó. Nh vậy, mỗi đối tợng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó) và gửi ra hay trả lời đến các đối tợng khác hay đến môi trờng. 2. Các tính chất cơ bản của lập trình hớng đối tợng Đối tợng (object): Các dữ liệu và chỉ thị đợc kết hợp vào một đơn vị đầy đủ tạo nên một đối tợng. Đơn vị này tơng đơng với một chơng trình con. Các đối tợng sẽ đợc chia thành hai bộ phận chính: phần các phơng thức (method) và phần các thuộc tính (property). Trong thực tế, các phơng thức của đối tợng là các hàm và các thuộc tính của nó là các biến, các tham số hay hằng nội tại của một đối tợng (hay nói cách khác tập hợp các dữ liệu nội tại tạo thành thuộc tính của đối tợng). Các phơng thức là phơng tiện để sử dụng một đối tợng trong khi các thuộc tính sẽ mô tả đối tợng có những tính chất gì. Các phơng thức và các thuộc tính thờng gắn chặt với thực tế các đặc tính và sử dụng của một đối tợng. Trong thực tế, các đối tợng thờng đợc trừu tợng hoá qua việc định nghĩa của các lớp (class). Tập hợp các giá trị hiện có của các thuộc tính tạo nên trạng thái của một đối tợng. Mỗi phơng thức hay mỗi dữ liệu nội tại cùng với các tính chất đợc định nghĩa (bởi ngời lập trình) đợc xem là một đặc tính riêng của đối tợng. Nếu không có gì nhầm lẫn thì tập hợp các đặc tính này gọi chung là đặc tính của đối tợng. Lập trình hớng đối tợng là một phơng pháp lập trình có các tính chất sau: Nguyễn Thị Minh GVHD: T.S Phan Lê Na 6 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ 2.1. Tính trừu tợng (abstraction) Đây là khả năng của chơng trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết. Mỗi đối tợng phục vụ nh là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tợng khác mà không cần cho biết làm cách nào đối t- ợng tiến hành đợc các thao tác. Tính chất này thờng đợc gọi là sự trừu tợng của dữ liệu. Tính trừu tợng còn thể hiện qua việc một đối tợng ban đầu có thể có một số đặc điểm chung cho nhiều đối tợng khác nh là sự mở rộng của nó nhng bản thân đối tợng ban đầu này có thể không có các biện pháp thi hành. Tính trừu t- ợng này thờng đợc xác định trong khái niệm gọi là lớp trừu tợng hay lớp cơ sở trừu tợng. 2.2. Tính đóng gói (encapsulation) và che dấu thông tin (information hiding) Tính chất này không cho phép ngời sử dụng các đối tợng thay đổi trạng thái nội tại của một đối tợng. Chỉ có các phơng thức nội tại của đối tợng cho phép thay đổi trạng thái của nó. Việc cho phép môi trờng bên ngoài tác động lên các dữ liệu nội tại của một đối tợng theo cách nào là hoàn toàn tuỳ thuộc vào ngời viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối tợng. 2.3. Tính đa hình (polymorphism) Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh nh việc gọi các hàm bên trong của một đối tợng. Các phơng thức dùng trả lời cho một thông điệp sẽ tuỳ theo đối tợng mà thông điệp đó đợc gửi tới sẽ có phản ứng khác nhau. Ngời lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phơng thức) cho một loạt các đối tợng gần nhau nhng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của Nguyễn Thị Minh GVHD: T.S Phan Lê Na 7 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ mỗi đối tợng sẽ tự động xảy ra tơng ứng theo đặc tính của từng đói tợng mà không bị nhầm lẫn. Ví dụ: Khi định nghĩa hai đối tợng "hinh_vuong" và "hinh_tron" thì có một ph- ơng thức chung là "chu_vi". Khi gọi phơng thức này thì nếu đối tợng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tợng là "hinh_tron". 2.4. Tính kế thừa (inheritance) Đặc tính này cho phép mọt đối tợng có thể có sẵn các đặc tính mà đối t- ợng khác đã có thông qua kế thừa. Điều này cho phép các đối tợng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hớng đối tợng nào cũng có tính chất này. 3. Các khái niệm liên quan đến các ngôn ngữ lập trình OOP hiện đại 3.1. Lớp (class) Một lớp đợc hiểu là một kiểu dữ liệu bao gồm các thuộc tính và các ph- ơng thức đợc định nghĩa từ trớc. Đây là sự trừu tợng hoá của đối tợng. Một đối tợng sẽ đợc xác lập khi nó đợc thực thể hoá từ một lớp. Khác với kiểu dữ liệu thông thờng, một lớp là một đơn vị (trừu tợng) bao gồm sự kết hợp giữa các ph- ơng thức và các thuộc tính. Để có một đối tợng (mà có thể đợc xem nh là một biến) hoạt động đợc thì việc thực thể hoá sẽ có thể bao gồm việc cài đặt các giá trị ban đầu của các thuộc tính cũng nh việc đăng ký bộ nhớ, mà công việc này thờng đợc giao cho các phơng thức gọi là "máy kết cấu" (constructor) hay hàm dựng. Ngợc lại khi một đối tợng thuộc về một lớp không còn sử dụng nữa thì cũng có thể có một phơng thức để xử lý gọi là "máy huỷ diệt" (destructor) hay hàm huỷ. Nh vậy, để có đợc các đối tợng thì ngời lập trình OOP cần phải thiết kế lớp của các đối tợng đó bằng cách xây dựng các thuộc tính và các phơng thức có các đặc tính riêng. Mỗi phơng thức hay một thuộc tính đầy đủ của một lớp còn đợc gọi Nguyễn Thị Minh GVHD: T.S Phan Lê Na 8 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ tên là một thành viên (member) của lớp đó. 3.2. Lớp con (subclass) Lớp con là một lớp thông thờng nhng có thêm tính chất kế thừa một phần hay toàn bộ các đặc tính của một lớp khác. Lớp mà chia sẻ sự kế thừa gọi là lớp phụ mẫu (parent class). 3.3. Lớp trừu tợng hay lớp cơ sở trừu tợng (abstract class) Lớp trừu tợng là một lớp mà nó không thể thực thể hoá thành một đối t- ợng thực dụng đợc. Lớp này đợc thiết kế nhằm tạo ra một lớp có các đặc tính tổng quát nhng bản thân lớp đó cha có ý nghĩa (hay không đủ ý nghĩa) để có thể tiến hành viết mã cho việc thực thể hoá. 3.4. Phơng thức (method) Là hàm nội tại của một lớp (hay một đối tợng). Tuỳ theo đặc tính mà ngời lập trình gán cho, một phơng pháp có thể chỉ đợc gọi bên trong các hàm khác của lớp đó, có thể cho phép các câu lệnh bên ngoài lớp gọi tới nó, hay chỉ cho phép các lớp có quan hệ đặc biệt nh là quan hệ lớp con, và quan hệ bạn bè (friend) đợc phép gọi tới nó. Mỗi phơng pháp đều có thể có kiểu trả về, chúng có thể trả các kiểu dữ liệu cổ điển hay trả về một kiểu là một lớp đã đợc định nghĩa từ trớc. Một tên gọi khác của phơng pháp của một lớp là hàm thành viên. Ngoài ra còn định nghĩa thêm vài loại phơng pháp đặc biệt: - Hàm dựng (constructor) là hàm đợc dùng để cài đặt các gía trị ban đầu cho các biến nội tại và đôi khi còn dùng để khai báo về việc sử dụng bộ nhớ. - Hàm huỷ (destructor) là hàm dùng vào việc làm sạch bộ nhớ và huỷ bỏ tên của một đối tợng sau khi đã dùng xong, trong đó có thể bao gồm cả việc xoá các con trỏ nội tại và trả về các phần bộ nhớ mà đối tợng đã dùng. Trong một số trờng hợp thì hàm huỷ hay hàm dựng có thể đợc tự động hoá bởi ngôn ngữ OOP nh là trờng hợp của Visual C++, C#. Nguyễn Thị Minh GVHD: T.S Phan Lê Na 9 Đồ án tốt nghiệp Lập trình Game bằng ngôn ngữ C++ - Tiện ích (utility) là các hàm chỉ hoạt động bên trong của một lớp mà không cho phép môi trờng bên ngoài gọi tới. Các hàm này có thể là những tính toán trung gian nội bộ của một đối tợng mà xét thấy không cần thiết phải cho thế giới bên ngoài của đối tợng biết là gì. 3.5. Thuộc tính (attribute) Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham số nội tại của lớp đó. ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽ có thể bị thay đổi trong suốt quá trình hoạt động của một đối tợng. Các thuộc tính có thể đợc xác định kiểu và kiểu của chúng có thể là các kiểu dữ liệu cổ điển hay đó là một lớp đã định nghĩa từ trớc. Khi một lớp đã đợc thực thể hoá thành đối tợng cụ thể thì tập hợp các giá trị của các biến nội tại làm thành trạng thái của đối tợng. Tuỳ theo ngời viết mã, biến nội tại có thể chỉ đợc dùng bên trong các phơng pháp của chính lớp đó, có thể cho phép các câu lệnh bên ngoài lớp, hay chỉ cho phép các lớp có quan hệ đặc biệt nh là quan hệ lớp con, (và quan hệ bạn bè (friend) trong C++) đợc dùng tới nó (hay thay đổi giá trị của nó). Mỗi thuộc tính của một lớp còn đợc gọi là thành viên dữ liệu của lớp đó. 3.6. Thực thể (instance) Thực thể hoá (instantiate) là quá trình khai báo để có một tên (có thể đợc xem nh là một biến) trở thành một đối tợng từ một lớp nào đó. Một lớp sau khi đợc tiến hành thực thể hoá để có một đối tợng cụ thể gọi là một thực thể. Ngợc lại một thực thể là một đối tợng riêng lẽ của một lớp đã đ- ợc định trớc. Nh các biến thông thờng, hai thực thể của cùng một lớp có thể có trạng thái nội tại khác nhau (xác định bởi các giá trị hiện có của các biến nội tại) và do đó hoàn toàn độc lập nhau nếu không có yêu cầu gì đặc biệt từ ngời lập trình. 3.7. Công cộng (public) Nguyễn Thị Minh GVHD: T.S Phan Lê Na 10

Ngày đăng: 19/12/2013, 15:01

Hình ảnh liên quan

3.3. Màn hình Chế độ chơi Hard - Lập trình game bằng ngôn ngữ c++

3.3..

Màn hình Chế độ chơi Hard Xem tại trang 27 của tài liệu.
3.4. Màn hình chế độ chơi Hardest - Lập trình game bằng ngôn ngữ c++

3.4..

Màn hình chế độ chơi Hardest Xem tại trang 28 của tài liệu.
3.5. Màn hình ghi tên cho ngời chơi - Lập trình game bằng ngôn ngữ c++

3.5..

Màn hình ghi tên cho ngời chơi Xem tại trang 29 của tài liệu.
3.6. Màn hình Kết thúc trò chơi - Lập trình game bằng ngôn ngữ c++

3.6..

Màn hình Kết thúc trò chơi Xem tại trang 30 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan