Nghiên cứu các kỹ thuật thiết kế trò chơi và ứng dụng thiết kế trò chơi breakout

69 478 1
Nghiên cứu các kỹ thuật thiết kế trò chơi và ứng dụng thiết kế trò chơi breakout

Đ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

MỤC LỤC MỤC LỤC .1 LỜI NÓI ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# 1.1 Sự đời ngôn ngữ lập trình C# 1.2 Những đặc điểm ngôn ngữ C# 1.3 So sánh ngôn ngữ C# ngôn ngữ khác .7 1.4 Cấu trúc chương trình .8 1.5 Câu lệnh rẽ nhánh có điều kiện .9 1.6 Các lệnh lặp 10 1.6.1 Vòng lặp for 10 1.6.2 Vòng lặp While 11 1.6.3 Vòng lặp do…while 11 1.6.4 Vòng lặp foreach 11 1.6.5 Câu lệnh goto 11 1.6.6 Câu lệnh break, continue return 12 1.7 Lớp cấu trúc 12 1.7.1 Lớp .12 1.7.2 Định nghĩa cấu trúc 13 1.8 Phương thức thuộc tính 13 1.8.1 Phương thức 13 1.8.2 Thuộc tính 14 1.9 Đón bắt lỗi với try catch 14 1.10 Cách sử dụng DirectX C# 15 CHƯƠNG 2: KỸ THUẬT THIẾT KẾ TRÒ CHƠI 18 2.1 Lý thuyết trò chơi 18 2.1.1 Giới thiệu lý thuyết trò chơi .18 2.1.2 Biểu diễn trò chơi 18 2.2 Các loại trò chơi 19 2.2.1 Trò chơi đối xứng bất đối xứng 19 2.2.2 Trò chơi tổng không trò chơi tổng khác không 19 2.2.3 Trò chơi đồng thời trò chơi 20 2.2.4 Trò chơi thông tin hoàn hảo trò chơi thông tin không hoàn hảo 21 2.2.5 Các trò chơi dài vô tận 21 2.3 Các kỹ thuật thiết kế trò chơi .21 2.3.1 Tổng quan thiết kế trò chơi 21 2.3.2 Quy trình thiết kế game .22 2.3.3 Một số thuật toán thường áp dụng thiết kế trò chơi 25 2.3.3.1 Các thuật toán tìm đường ngắn .25 2.3.3.2 Các thuật toán trí tuệ nhân tạo .32 2.3.4 Một số bước thiết kế trò chơi 32 2.3.4.1 Thiết kế tổng quan 32 2.3.4.2 Thiết kế giao diện cho trò chơi 33 2.3.4.3 Thiết kế chức trò chơi 33 2.3.4.4 Đóng gói bảo mật 33 2.3.5 Một số kỹ thuật thiết kế đồ họa .34 2.3.5.1 OpenGL 34 2.3.5.2 GDI 35 2.3.5.3 DirectX 35 CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH ỨNG DỤNG 58 3.1 Cách chơi game Breakout 58 3.2 Luật chơi trò chơi 58 3.3 Cách xây dựng trò chơi 58 3.4 Cài đặt hệ thống 65 3.4.1 Cấu hình hệ thống 65 3.4.2 Lựa chọn công nghệ .66 3.5 Giao diện chương trình 67 KẾT LUẬN 68 TÀI LIỆU THAM KHẢO 69 LỜI NÓI ĐẦU Mặc dù đời năm 50 kỷ XX thực phát triển mạnh mẽ năm gần Nhưng tin học đóng góp vai trò thiếu sống người Công nghệ thông tin ngày nay, có phát triển vượt bậc nhiều loại hình dịch vụ: hệ viễn thông đại, máy tính cá nhân, mạng máy tính quốc gia, Internet, thương mại điện tử đáp ứng hầu hết nhu cầu người, hầu hết lĩnh vực thông tin, kinh tế, đời sống, văn hóa – xã hội lĩnh vực giải trí Trong lĩnh vực này, việc giải trí Game máy tính ngày phát triển nhanh lan rộng lôi mạnh mẽ Hầu sử dụng máy tính giải trí số game mày tính Có thể nói Game thể loại phong phú tất chương trính máy tính lập trình game lĩnh vực thú vị có sức hấp dẫn với lập trình viên Tất muốn tạo chương trình game cho riêng nhiên viết game công việc dễ dàng, với niềm đam mê game em muốn tiếp cần công nghệ Mong muốn sử dụng vốn kiến thức tích lũy học tập khoa Công Nghệ Thông Tin - Đại học Thái Nguyên, đồng ý thầy giáo Trần Hải Thanh em chọn đề tài: “Nghiên cứu kỹ thuật thiết kế trò chơi ứng dụng thiết kế trò chơi Breakout” - làm đồ án tốt nghiệp Nội dung đồ án trình bày chương Chương 1: Nêu vấn đề tổng quan ngôn ngữ lập trình C# (sự đời, đặc điểm , so sánh ngôn ngữ C# với ngôn ngữ lập trình khác…) Chương 2: Giới thiệu kỹ thuật thiết kế trò chơi bao gồm phần lý thuyết trò chơi, loại trò chơi, kỹ thuật thiết kế trò chơi… Chương 3: Cài đặt chương trình ứng dụng Em xin chân thành cảm ơn ! CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# 1.1 Sự đời ngôn ngữ lập trình C# Với mục tiêu đem lại cho dân lập trình ngôn ngữ lập trình đơn giản, an toàn, tiên tiến, mang tính hướng đối tượng cao, đặt trọng tâm vào internet, có khả thực thi cao cho môi trường NET Microsoft nghiên cứu xây dựng ngôn ngữ lập trình Và đến tháng 7/2000 C#(C Sharp) đời C# ngôn ngữ lập trình mới, đơn giản, sáng xây dựng, đúc kết từ học kinh nghiệm suốt thập kỷ phát triển ngôn ngữ lập trình Có thể dễ dàng nhận thấy C# có đặc trưng quen thuộc Java, C++, Visual Basic,… 1.2 Những đặc điểm ngôn ngữ C# Ngôn ngữ C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngôn ngữ lập trình đại Và ngôn ngữ C# hội đủ điều kiện vậy, xây dựng tảng hai ngôn ngữ mạnh C++ Java Ngôn ngữ C# phát triển đội ngũ kỹ sư Microsoft, người dẫn đầu Anders Hejlsberg Scott Wiltamuth Cả hai người người tiếng, Anders Hejlsberg biết đến tác giả Turbo Pascal, ngôn ngữ lập trình PC phổ biến Và ông đứng đầu nhóm thiết kế Borland Delphi, thành công việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server Phần cốt lõi hay gọi trái tim ngôn ngữ lập trình hướng đối tượng hỗ trợ cho việc định nghĩa làm việc với lớp Những lớp định nghĩa kiểu liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mô hình tốt để giải vấn đề Ngôn ngữ C# chứa từ khóa cho việc khai báo kiểu lớp đối tượng phương thức hay thuộc tính lớp, cho việc thực thi đóng gói, kế thừa, đa hình, ba thuộc tính ngôn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# thứ liên quan đến khai báo lớp điều tìm thấy phần khai báo Định nghĩa lớp ngôn ngữ C# không đòi hỏi phải chia tập tin header tập tin nguồn giống ngôn ngữ C++ Hơn nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn tag XML để phát sinh tự động document cho lớp C# hỗ trợ giao diện interface, xem cam kết với lớp cho dịch vụ mà giao diện quy định Trong ngôn ngữ C#, lớp kế thừa từ lớp cha, tức không cho đa kế thừa ngôn ngữ C++, nhiên lớp thực thi nhiều giao diện Khi lớp thực thi giao diện hứa cung cấp chức thực thi giao diện Trong ngôn ngữ C#, cấu trúc hỗ trợ, khái niệm ngữ nghĩa thay đổi khác với C++ Trong C#, cấu trúc giới hạn, kiểu liệu nhỏ gọn, tạo thể yêu cầu hệ điều hành nhớ so với lớp Một cấu trúc kế thừa từ lớp hay kế thừa cấu trúc thực thi giao diện Ngôn ngữ C# cung cấp đặc tính hướng thành phần (componentoriented) thuộc tính, kiện Lập trình hướng thành phần hỗ trợ CLR cho phép lưu trữ metadata với mã nguồn cho lớp Metadata mô tả cho lớp, bao gồm phương thức thuộc tính nó, bảo mật cần thiết thuộc tính khác Mã nguồn chứa đựng logic cần thiết để thực chức Do vậy, lớp biên dịch khối self-contained, nên môi trường hosting biết cách đọc metadata lớp mã nguồn cần thiết mà không cần thông tin khác để sử dụng Ngôn ngữ C# ngôn ngữ hỗ trợ việc truy cập nhớ trực tiếp sử dụng kiểu trỏ C++ từ khóa cho dấu ngoặc [] toán tử Các mã nguồn không an toàn Và giải phóng nhớ tự động CLR không thực việc giải phóng đối tượng tham chiếu sử dụng trỏ chúng giải phóng 1.3 So sánh ngôn ngữ C# ngôn ngữ khác Chúng ta nghe đến ngôn ngữ khác Visual Basic, C++ Java Có lẽ tự hỏi khác ngôn ngữ C# ngôn ngữ Và tự hỏi lại chọn ngôn ngữ để lập sử dụng mà không chọn ngôn ngữ Có nhiều lý xem số so sánh ngôn ngữ C# với ngôn ngữ khác giúp phần trả lời thắc mắc Microsoft nói C# mang đến sức mạnh ngôn ngữ C++ với dễ dàng ngôn ngữ Visual Basic Có thể không dễ Visual Basic, với phiên Visual Basic.NET (Version 7) ngang Bởi chúng viết lại từ tảng Chúng ta viết nhiều chương trình với mã nguồn dùng C# Mặc dù C# loại bỏ vài đặc tính C++, bù lại tránh lỗi mà thường gặp ngôn ngữ C++ Điều tiết kiệm hàng hay chí hàng ngày việc hoàn tất chương trình Một điều quan trọng khác với C++ mã nguồn C# không đòi hỏi phải có tập tin header Tất mã nguồn viết khai báo lớp Chúng ta biết NET runtime C# thực việc thu gom nhớ tự động Do điều nên việc sử dụng trỏ C# quan trọng C++ Những trỏ sử dụng C#, đoạn mã nguồn đánh dấu không an toàn (unsafe code) C# từ bỏ ý tưởng đa kế thừa C++ Và khác khác C# đưa thêm thuộc tính vào lớp giống Visual Basic Và thành viên lớp gọi toán tử “.” khác với C++ có nhiều cách gọi tình khác Một ngôn ngữ khác mạnh phổ biến Java, giống C++ C# phát triển dựa C Nếu định học Java sau này, tìm nhiều mà học từ C# áp dụng Điểm giống C# Java hai biên dịch mã trung gian: C# biên dịch MSIL Java biên dịch bytecode Sau chúng thực cách thông dịch biên dịch just-in-time máy ảo tương ứng Tuy nhiên, ngôn ngữ C# nhiều hỗ trợ đưa để biên dịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu liệu Java cho phép nhiều mở rộng với kiểu liệu giá trị Ví dụ, ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu giới hạn đến tập định nghĩa trước, kiểu liệu cấu trúc kiểu liệu giá trị người dùng định nghĩa Tương tự Java, C# từ bỏ tính đa kế thừa lớp, nhiên mô hình kế thừa đơn mở rộng tính đa kế thừa nhiều giao diện 1.4 Cấu trúc chương trình Cấu trúc chương trình thể qua ví dụ sau: viết chương trình hiển thị dòng chữ hình “Hello World” ngôn ngữ C# Ví dụ: Chương trình Hello World using system; namespace HuyenAnh { class HelloWorld { static void Main() { // Sử dụng đối tượng console hệ thống System.Console.WriteLine (“ Hello World “); System.Console.readline(); } } } 1.5 Câu lệnh rẽ nhánh có điều kiện 1.5.1 Câu lệnh if-else Cú pháp sau: if ( Biểu thức logic ) Khối lệnh; Hoặc if ( Biểu thức logic) Khối lệnh ; else Khối lệnh ; Khối lệnh tập câu lệnh cặp dấu ngoặc “{…}” Bất kỳ nơi đâu có câu lệnh viết khối lệnh Biểu thức logic biểu thức cho giá trị sai (true false) Nếu “biểu thức logic” cho giá trị khối lệnh hay khối lệnh thực thi, ngược lại khối lệnh thực thi Trong C# biểu thức câu lệnh if phải biểu thức logic, biểu thức số 1.5.2 Câu lệnh switch Cú pháp sau: switch (biểu thức lựa chon) { casce biểu thức hằng: câu lệnh ; câu lệnh nhảy ; [default: câu lệnh mặc định] } Biểu thức lựa chọn biểu thức sinh trị nguyên hay chuỗi Switch so sánh “biểu thức lựa chọn” với “biểu thức hằng” để biết phải thực với khối lệnh Lệnh nhảy Break, goto… để thoát khỏi câu Switch bắt buộc phải có Thí dụ sau: Thí dụ kiểm tra integerA thoả trường hợp 1, 2, không không thực thi trường hợp default switch (integerA) { case 1: Console.WrireLine(“integerA = 1”) ; break; case 2: Console.WrireLine(“integerA = 2”) ; break; case 3: Console.WrireLine(“integerA = 3”) ; break; defaul: Console.WrireLine(“integerA is not 1, or 3”) ; break; } 1.6 Các lệnh lặp C# cung cấp cho vòng lặp khác (for, while, do… while lệnh lặp foreach) cho phép thực đoạn mã lặp điều kiện lặp Nó hỗ trợ lệnh nhảy như: goto, breack, continue return 1.6.1 Vòng lặp for Cú pháp: 10 Để sử dụng trò chơi, sprites phải lưu trữ thêm vài thông tin khác nhiên thông số thực cần thiết cho sprites Cấu trúc đối tượng sprite có dạng sau: struct { RECT sourceRect; // Vùng lưu giữ vị trí sprit (trong offscreen surface) int X; // toạ độ X sprite hình int Y; // toạ độ Y sprite hình } spriteStruct ; Trong cấu trúc spriteStruct trên, liệu ảnh sprite xác định thông biến có kiểu cấu trúc RECT Biến sourceRect nắm giữ vị trí sprite ảnh gốc Giá trị toạ độ X Y sử dụng giá trị kiểu nguyên Bởi ví dụ hỗ trợ độ phân giải 640x480, nên giá trị kiểu nguyên đủ để lưu trữ toạ độ sprite Để tạo sprite, sử dụng vài hàm mà đề cập trước o D3DXLoadSurfaceFromFile o CreateOffscreenPlainSurface o StretchRect Mỗi hàm liệt kê có chức riêng trợ giúp trình tạo sử dụng sprites Hàm D3DLoadSurfaceFromFile thực trình đọc liệu ảnh sprites từ tệp tin, hàm CreateOffscreenPlainSurface tạo vùng nhớ để lưu trữ hình ảnh bạn cần sử dụng, hàm StretchRect trợ giúp thị hình ảnh lên hình ứng dụng Sử dụng hàm D3DXLoadSurfaceFromFile để đọc liệu ảnh cho đối tượng IDirect3DSurface9 tạo trước hàm CreateOffscreenPlainSurface 55 Định thời gian Windows Chúng ta sử dụng hai hàm Windows hỗ trợ để xác định quản lý xác thời gian ứng dụng: GetTickCount hàm QueryPerformanceCounter Hàm GetTickCount, sử dụng định hệ thống nên có giới hạn khả ứng dụng ứng dụng game Hàm trả số milli giây (milliseconds) qua kể từ thời điểm hệ thống bắt đầu khởi động Giới hạn hàm cập nhật sau 10 milli giây Hàm QueryPerformanceCounter sử dụng trực tiếp đếm thời gian phần cứng thay cho giải pháp phần mềm hệ thống hàm GetTickCount, cho phép bạn định giời gian theo microseconds (micro giây - 10-6 giây) Nó hữu dụng ứng dụng game – cần hàm quản lý thời gian thật xác để hiển thị hoạt cảnh cách xác d DirectDraw DirectDraw tạo nên từ thành phần sau đây: IDirectDraw7: Cung cấp truy cập tới DirectDraw cho phép tạo nhiều đối tượng DirectDraw khác IDirectDrawClipper: Quản lý danh sách cắt hình chữ nhật để điều khiển ứng dụng DirectDraw IDirectDrawSurface7: Đối tượng đại diện cho nhóm video hệ thống nhớ vào mà hình ảnh đưa IDirectDrawPalette : Đối tượng sử dụng để lưu trữ mảng lập mục màu sắc thiết lập bảng màu sử dụng cho dịch thuật thực 8-bit đồ họa IDirectDrawVideoPort: Cung cấp điều khiển điều hợp video Giao diện IDirectDraw7: Tất truy cập vào DirectDraw thực thông qua giao diện IDirectDraw7 56 Để thao tác hình ảnh DirectDraw, tạo đối tượng gọi surfaces Một surface cung cấp vùng hình chữ nhật nhớ, sử dụng để lưu trữ hình ảnh CreateSurface () có cấu trúc sau: HRESULT CreateSurface( LPDDSURFACEDESC2 lpDDSurfaceDesc2, LPDIRECTDRAWSURFACE7 FAR *lplpDDSurf IUnknown FAR *pUnkOuter ); Hàm có chức tạo DirectDraw surface lpDDSurfaceDesc2: Con trỏ đến cấu trúc DDSURFACEDESC2 có mô tả bề mặt tạo *lplpDDSurf: Địa biến mà nhận trỏ đến giao diện IDirectDrawSurface7 *pUnkOuter: thường mặc định NULL DirectDraw surfaces có nhiều vai trò lớn như: o Offscreen surfaces sử dụng để lưu trữ hình ảnh sau sử dụng o The primary surface đại diện cho đệm khung hình video Hình ảnh surfaces xuất hình o Back buffers bề mặt nhớ video mà trao đổi với bề mặt Các bề mặt sử dụng để tạo hình ảnh, hình ảnh không hiển thị hoàn thành, cung cấp hình ảnh động mượt mà o Z-buffers sử dụng Direct3D để xác định tầm nhìn đối tượng 57 CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH ỨNG DỤNG 3.1 Cách chơi game Breakout Breakout trò chơi đơn giản, ban đầu phát triển công ty Atari Ine thành lập năm 1976 Trong trò chơi người chơi di chuyển paddle hình phím sang trái sang phải chọn điểm rơi để tung bóng lên không cách sử dụng phím space với mục đích phá hết khối cửa sổ Khi khối phá hết người chơi qua level chuyển sang level 3.2 Luật chơi trò chơi Để hoàn thành nhiều cấp trò chơi này, người chơi phải đập tan khối cửa sổ bóng Trò chơi bắt đầu với hàng khối, ứng với hàng có màu sắc khác Chúng ta sử dụng bóng để đánh trả khối Trò chơi bắt đầu với level 1, người chơi bắt đầu số điểm ban đầu không người chơi tặng lives để trì chơi Số điểm người chơi tăng lên dựa theo số lượng tính chất khối mà người chơi phá nó, ứng với khối người chơi tặng số điểm định Trong trình chơi, người chơi phải di chuyển cho không để bóng rơi xuống phía hình, ứng với lần làm rơi bóng người chơi bị lives Khi qua level người chơi tặng thêm lives Quá trình chơi tiếp diễn lives trò chơi kết thúc 3.3 Cách xây dựng trò chơi Trò chơi gồm có lớp: BitmapObject, Ball, Background, Paddle, Block, GameDirectDraw, frmSpaceBreakout, BlockGroup Xây dựng lớp Ball - Định nghĩa khởi dựng Ball + Thiết lập vị trí bóng + Chiều rộng chiều cao bóng 58 public Ball(int intSpriteWidth, int intSpriteHeight, int intStartXPosition, int intStartYPosition) { //store the initial x y positions XPosition = intStartXPosition; YPosition = intStartYPosition; //initialise surface description with values from constructor InitialiseSurfaceDescription(intSpriteWidth, intSpriteHeight); } - Xây dựng phương thức Move xác định di chuyển bóng public void Move(int intPaddleX, int intPaddleY, ref int intLives) { If (bóng không chuyển động) then Bóng đặt paddle Else { 2.1 If Bóng đập vào thành bên trái cửa sổ then Bóng di chuyển phản xạ ngược lại 2.2 If Bóng đập vào thành bên phải cửa sổ then Bóng di chuyển phản xạ ngược lại 2.3 If Bóng đập vào thành phía bên cửa sổ then Bóng di chuyển phản xạ ngược lại 2.4 If Bóng xuống phía cửa sổ then { 2.4.1 Bóng không di chuyển 2.4.2 Người chơi mạng 59 } 2.5 Lưu lại tọa độ bóng dựa di chuyển bóng } } - Xây dựng phương thức có tên BallPaddleCollision để kiểm tra va chạm bóng paddle - Xây dựng phương thức có tên BallBlockCollision để kiểm tra va chạm bóng khối public void BallBlockCollision( BlocksGroup objBlocksGroup, DirectDrawSurface7 objBackBuffer, DirectDrawSurface7 objBackground, ref int intCurrentScore) { for(int j =0; j < objBlocksGroup.Rows; j++) { for(int i =0; i < objBlocksGroup.Columns; i++) { Thiết lập giá trị khối vị trí bắt đầu, chiều dài, chiều cao khối If (khối hoạt động có va chạm với) then { Sửa đổi lại trạng thái hoạt động khối Tăng điểm dựa vào hàng mà khối xảy va chạm Cập nhật lại tổng số viên gạch lại level Hiển thị âm bóng tung lên } } } } 60 - Xây dựng phương thức InitialiseSound để khởi tạo âm + Xác định định dạng loại âm chứa đệm thứ cấp, định dạng đệm DirectSound miêu tả cấu trúc WAVEFORMATEX + Tạo đệm thứ cấp với lời gọi DirectSoundCreate + Thiết lập mức độ hợp tác DirectSound cho phép truy cập tới thiết bị phần cứng - Xây dựng phương thức PlaySound để play âm đệm, phương thức cung cấp đối tượng DirectSoundBuffer Xây dựng lớp Paddle Sử dụng khai báo biến để xét xem paddle có di chuyển không, di chuyển sang trái hay sang phải - Định nghĩa phương thức khởi dựng public Paddle(int intSpriteWidth, int intSpriteHeight, int intStartXPosition, int intStartYPosition) { this.XPosition = intStartXPosition; this.YPosition = intStartYPosition; InitialiseSurfaceDescription(intSpriteWidth, intSpriteHeight); } - Xây dựng phương thức Move để xác định di chuyển Paddle public void Move() { if(m_intPaddleMovement == RIGHT_MOVEMENT) { if(XPosition < 550) { XPosition += 10; 61 if (XPosition > 550) XPosition = 550; } else { m_intPaddleMovement = -1; } } else if(m_intPaddleMovement == LEFT_MOVEMENT) { if(XPosition > 0) { XPosition -= 10; if (XPosition < 0) XPosition = 0; } else { m_intPaddleMovement = -1; } } } Xây dựng lớp Block Khai báo biến để lưu trữ trạng thái khối đó, xem khối hoạt động không hoạt động - Xây dựng phương thức khởi dựng Block + Thiết lập trạng thái hoạt động Block + Thiết lập tọa độ theo trục ox, oy khối + Khởi tạo giá trị bề mặt mô tả 62 public Block(int intSpriteWidth, int intSpriteHeight, int intStartXPosition, int intStartYPosition) { //set the block to active this.ViewState = VIEW_STATE_ACTIVE; //set x and y position of block this.XPosition = intStartXPosition; this.YPosition = intStartYPosition; //initialise surface description with values from constructor InitialiseSurfaceDescription(intSpriteWidth, intSpriteHeight); } Xây dựng lớp BlockGroup - Định nghĩa khởi dựng BlockGroup - Xây dựng phương thức để khởi tạo khối - Xây dựng phương thức để reset lại trạng thái hoạt động khối - Khởi tạo khối bề mặt cách xây dựng phương thức InitialiseSurface - Xây dựng phương thức BltFast nhằm chuyển đổi khối tới bề mặt đệm Xây dựng lớp BitmapOjbect Trước sử dụng ứng dụng DirectDraw để hiển thị lên hình, phải tạo bề mặt chính, cung cấp truy cập vào hình Để thực điều này, bạn tạo mô tả bề mặt cách sử dụng phương thức InitialiseSurfaceDescription() với tham số truyền vào chiều rộng chiều cao điểm ảnh Tiếp theo xây dựng phương thức BltFast(), phương thức sử dụng để vẽ điểm ảnh lên bề mặt đệm nền, cung cấp DirectDrawSurface7() Sau ta thiết lập giá trị cho spite surface cách sử dụng phương thức InitialiseSurface () 63 Xây dựng lớp GameDirectDraw - Chúng ta xây dựng phương thức DrawLevel, DrawLives, DrawScore để thiết lập vị trí giá trị cho Level, Lives, Score đó: Level: cấp trò chơi Lives: số mạng để trì trò chơi Score: lưu số điểm mà người chơi đạt public void DrawLevel(string strText) { //create rect for text background RECT objBlackBackRECT = new RECT(); objBlackBackRECT.Left = 230; objBlackBackRECT.Top = 460; objBlackBackRECT.Bottom = 479; objBlackBackRECT.Right = 350; //draw text DrawText(200, "Level: " + strText, 230, 463); } public void DrawLives(string strText) { //create rect for text background RECT objBlackBackRECT = new RECT(); objBlackBackRECT.Left = 140; objBlackBackRECT.Top = 460; objBlackBackRECT.Bottom = 479; objBlackBackRECT.Right = 260; //draw text DrawText(200, "Lives: " + strText, 140, 463); } public void DrawScore(string strText) { //create rect for text background RECT objBlackBackRECT = new RECT(); objBlackBackRECT.Left = 50; objBlackBackRECT.Top = 460; objBlackBackRECT.Bottom = 479; objBlackBackRECT.Right = 150; //draw text 64 DrawText(200, "Score: " + strText, 50, 463); } public void DrawText(int intColor, string strText, int intX, int intY) { //set text colour this.BackBufferSurface.SetForeColor(intColor); //draw text this.BackBufferSurface.DrawText(intX, intY, strText, false); } - Xây dựng phương thức InitialiseDirectXFullScreen khởi tạo chế độ toàn hình Để xây dựng phương thức + Tạo đối tượng DirectDraw + Thiết lập mức độ hợp tác cho chế độ toàn hình + Thiết lập chế độ hiển thị 640 x 480 bít với DirectDraw để xử lý tần số làm tươi + Định nghĩa thông số hợp lệ cho bề mặt số lượng vùng đệm buffer tạo + Khởi tạo số lượng vùng đệm buffer tạo + Và cuối tạo đệm cách sử dụng bề mặt - Xây dựng phương thức FlipBackBufferAndPrimary(), phương thức làm cho bề mặt trao đổi với bề mặt đệm phụ 3.4 Cài đặt hệ thống 3.4.1 Cấu hình hệ thống  Yêu cầu hệ thống: - Hệ điều hành Window XP Service Pack trở lên - NetFrameWork 3.5  Các tools cần thiết cho thiết kế: - DirectX - Microsoft Visual Studio 2008 65 3.4.2 Lựa chọn công nghệ Sử dụng DirectX cho phát triển game DirectX phổ biến dùng phạm vi lớn ứng dụng DirectX tồn kiểm nghiệm qua nhiều năm, phát triển nhiều tính qua phiên Và lý không kể đến DirectX có tốc độ xử lý hàm lập trình nhanh Sử dụng ngôn ngữ C# để viết code cho chương trình ứng dụng C# biết ngôn ngữ tương lai, kết hợp ngôn ngữ Visual Basic, C++, Java Có thể không dễ Visual Basic, với phiên Visual Basic.NET (Version 7) ngang Bởi chúng viết lại từ tảng Chúng ta viết nhiều chương trình với mã nguồn dùng C# C# tránh lỗi mà thường gặp ngôn ngữ C++ Điều tiết kiệm hàng hay chí hàng ngày việc hoàn tất chương trình Một điều quan trọng khác với C++ mã nguồn C# không đòi hỏi phải có tập tin header; thêm vào cộng đồng sử dụng C# ngày tăng, việc trao đổi, chia sẻ kinh nghiệm trở lên thuận lợi Với đặc điểm, tính công cụ nêu trên, em thấy phù hợp để thực đề tài 66 3.5 Giao diện chương trình 67 KẾT LUẬN * Kết đạt được: Nắm bắt khái niệm lý thuyết trò chơi Hiểu biết kỹ thuật thiết kế trò chơi Biết cách sử dụng môi trường phát triển Micrsoft Visual Studio 2008, ngôn ngữ C# để lập trình Nắm bắt kỹ thuật thiết kế đồ họa Biết cách xây dựng chương trình game * Hướng phát triển: Đề tài số vấn đề em chưa giải trò chơi chưa chạy môi trường mạng, chưa chơi trực tuyến … Em cố gắng phát triển đề tài để chương trình em phong phú, lôi hấp dẫn Em cố gắng song lĩnh vực nghiên cứu tương đối rộng, mẻ, thời gian hạn hẹp khả hạn chế, chương trình chưa đạt kết mong đợi, chương trình hẳn thiếu sót, mong thầy cô giáo bảo để chương trình hoàn thiện 68 TÀI LIỆU THAM KHẢO [1] Đinh Mạnh Tường – Trí tuệ nhân tạo - Nhà xuất khoa học kỹ thuật, 2002 [2] Phan Hoàng – Giáo trình tự học lập trình C# - Nhà xuất văn hóa thông tin, 2007 [3] Ron PenTon - Beginning C# Game Programming - Thomson Course Technology PTR, 2005 [4] Sams Publishing – DirectX7 in 24 hours [5] Wendy Jones – Beginning DirectX [6] Premier Press – Microsoft C# Programming for the Absolute Beginne – Premier Development, 2002 [7] Nguồn tài liệu Internet: http://vi.wikipedia.org http://www.directx.com http://www.codeproject.com http://www.gamedev.com.vn 69

Ngày đăng: 11/08/2016, 16:44

Từ khóa liên quan

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

Tài liệu liên quan