1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.

51 5 0

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Game 2D “Không Chiến” Chạy Trên Windows Bằng Ngôn Ngữ C++ Và Thư Viện Đồ Họa SDL
Tác giả Nguyễn Tấn Châu
Người hướng dẫn Th.S Trần Uyên Trang
Trường học Đại học Đà Nẵng
Chuyên ngành Khoa Tin Học
Thể loại luận văn tốt nghiệp
Năm xuất bản 2012
Thành phố Đà Nẵng
Định dạng
Số trang 51
Dung lượng 2,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đối tượng nghiên cứu Ngôn ngữ lập trình hướng đối tượng C++ và thư viện đồ họa SDL để xây dựng được game 2D hoàn chỉnh với đầy đủ các thành phần.. Các tính chất cơ bản của lập trình hướ

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM

KHOA TIN HỌC



Đề tài:

XÂY DỰNG GAME 2D “KHÔNG CHIẾN” CHẠY TRÊN WINDOWS

BẰNG NGÔN NGỮ C++ VÀ THƯ VIỆN ĐỒ HỌA SDL

Đà Nẵng, tháng 05/2012

Trang 2

Sư Phạm Đà Nẵng, các thầy cô trong khoa Tin học cũng như toàn thể các thầy cô trong trường Đại học Sư Phạm Đà Nẵng đã truyền dạy những kiến thức quý báu cho tôi trong suốt những năm học vừa qua tại trường

Tôi xin chân thành cảm ơn cô Trần Uyên Trang đã tận tình hướng dẫn và hỗ trợ tôi rất nhiều trong quá trình thực hiện luận văn tốt nghiệp

Tôi xin cảm ơn công ty TNHH Tin học và Thương mại AsNet đã tạo điều kiện cho tôi có được môi trường tốt với cơ sở vật chất máy móc đầy đủ để có thể học hỏi được rất nhiều những kinh nghiệm làm việc quý báu từ thực tế

Tôi xin chân thành cảm ơn anh Ngô Phú Cường đã theo sát và giúp đỡ tôi rất nhiều trong quá trình thực hiện luận văn tốt nghiệp này

Một lần nữa, tôi xin chân thành cảm ơn!

Trang 3

1 Những nội dung trong luận văn tốt nghiệp này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của Th.S Trần Uyên Trang, anh Ngô Phú Cường

2 Mọi tài liệu tham khảo dùng trong luận văn tốt nghiệp này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm

Sinh viên thực hiện

Nguyễn Tấn Châu

Trang 4

LỜI CAM ĐOAN

MỤC LỤC

DANH MỤC HÌNH ẢNH

CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1

1 Lý do chọn đề tài 1

2 Mục đích nghiên cứu 1

3 Đối tượng và phạm vi nghiên cứu 2

3.1 Đối tượng nghiên cứu 2

3.2 Phạm vi nghiên cứu 2

4 Phương pháp nghiên cứu 2

5 Ý nghĩa khoa học và thực tiễn của đề tài 2

CHƯƠNG II: CƠ SỞ LÝ THUYẾT 4

1 TÌM HIỂU NGÔN NGỮ C++ 4

1.1 Khái niệm lập trình hướng đối tượng 4

1.2 Các tính chất cơ bản của lập trình hướng đối tượng 4

2 GIỚI THIỆU THƯ VIỆN ĐỒ HỌA SDL 6

2.1 SDL Video 7

2.2 SDL Audio 8

3 CƠ SỞ LÝ THUYẾT GAME 9

3.1 Các khái niệm và kỹ thuật đồ họa 9

3.2 Đường cong Bézier 18

CHƯƠNG III: XÂY DỰNG GAME KHÔNG CHIẾN 22

Trang 5

2.1 Các công việc cụ thể 23

2.2 Nội dung trò chơi 23

2.3 Các đối tƣợng trong game 24

2.4 Độ khó 25

2.5 Màn chơi 25

2.6 Góc nhìn 25

2.7 Điểm 25

2.8 Bản đồ 26

2.9 Xử lý 26

2.10 Hệ thống phát hiện và xử lý va chạm 26

2.11 Xử lý âm thanh 27

2.12 Xây dựng hệ thống hạt mô tả hiệu ứng 27

3 Giới thiệu các đối tƣợng trong game 27

3.1 Lớp cha 27

3.2 Các lớp con 28

3.3 Các lớp khác 30

4 Kết quả xây dựng game 34

KẾT LUẬN 39

1 Kết quả đạt đƣợc 39

1.1 Về kiến thức lý thuyết 39

1.2 Về kinh nghiệm thực tiễn 39

2 Hạn chế 40

Trang 7

II.1 Sprite Sheet 9

II.5 Sơ đồ thuật toán cuộn Background theo chiều dọc từ trên

Trang 8

III.18 Sơ đồ các lớp của toàn chương trình 33

III.26 Màn hình hiển thị các cài đặt trong game 37 III.27 Màn hình hiển thị các trợ giúp cho người chơi 38

Trang 9

CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI

1 Lý do chọn đề tài

Trong cuộc sống hiện nay, ngoài nhu cầu cơ bản của con người như ăn, ở, đi lại thì nhu cầu giải trí cũng là một nhu cầu mà không thể thiếu của mỗi con người Giải trí giúp con người bớt căng thẳng, mệt mỏi sau những giờ làm việc hoặc sau những giờ hoạt động, làm cho người trở nên vui vẻ, giúp thư giãn đầu óc Nói đến các phương pháp giải trí thì không thể không nhắc đến game Hiện nay trên thế giới

có rất nhiều hãng sản xuất game cũng như rất nhiều game đã được ra đời, và xu hướng phát triển game sẽ còn được phát triển mạnh mẽ hơn nữa Trong đó game trên PC được phát triển mạnh vì đa số mọi người có máy tính nhiều hơn là các thiết

bị chơi game chuyên dụng khác như Xbox, PlayStation… Game 2D là dòng game

đã xuất hiện từ lâu, và đến nay vẫn được phát triển rất nhiều

Có rất nhiều ngôn ngữ để phát triển game như Java, C++… Nhưng trong đó C++ là một ngôn ngữ rất mạnh để làm game Game viết bằng C++ có thể chạy ở trên nhiều hệ điều hành khác nhau như Windows, Mac OS, Ubuntu… hoặc trên các

hệ điều hành của di động như Android, iOS… Nhắc đến ngôn ngữ lập trình thì cũng không thể không nhắc đến thư viện đồ họa để phát triển game Các thư viện đồ họa

hỗ trợ việc viết game như OpenGL, SDL… Trong đó SDL là một thư viện đồ họa

hỗ trợ rất tốt cho game, dễ sử dụng

Tôi muốn tìm hiểu những kiến thức cũng như kinh nghiệm trong việc lập trình game 2D, những kiến thức trong việc tối ưu thuật toán, mã nguồn trong quá trình làm đề tài để theo đuổi việc phát triển game trong tương lai Đó là lý do tôi thực hiện đề tài này

2 Mục đích nghiên cứu

Tìm hiểu, học hỏi để nắm rõ được quá trình phát triển game 2D từ khâu thiết

kế cho đến khi hoàn thành sản phẩm

Trang 10

Phát triển một game đơn giản là game 2D bắn máy bay sử dụng ngôn ngữ lập trình C++ và thư viện đồ họa SDL

3 Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

Ngôn ngữ lập trình hướng đối tượng C++ và thư viện đồ họa SDL để xây dựng được game 2D hoàn chỉnh với đầy đủ các thành phần

3.2 Phạm vi nghiên cứu

Phát triển game chạy trên PC, mà cụ thể là các máy PC chạy hệ điều hành Windows

4 Phương pháp nghiên cứu

Đọc tài liệu về C++, qua đó nắm rõ hơn về C++ để có thể áp dụng để phát triển game

Tìm hiểu, đọc tài liệu về thư viện đồ họa SDL

Học hỏi quy trình phát triển game

Nghiên cứu thêm các tài liệu có liên quan để giúp hoàn thành việc lập trình game

5 Ý nghĩa khoa học và thực tiễn của đề tài

Việc xây dựng và phát triển game để giúp người dùng có thể giải trí, thư giãn sau những giờ làm việc mệt mỏi, giúp các em nhỏ có được niềm vui trong cuộc sống

Đồng thời việc thực hiện đề tài này cũng giúp bản thân học hỏi, đúc kết thêm nhiều kinh nghiệm trong việc phát triển game

Đề tài này có ý nghĩa rất lớn trong việc thể hiện được những kiến thức quý báu đã được học từ các quý thầy cô của trường Đại học Sư phạm - Đại học Đà Nẵng Và đặc biệt là sự theo dõi và quan tâm trực tiếp của cô Trần Uyên Trang

Trang 11

trong suốt thời gian thực tập Và nhờ sự hỗ trợ tận tình từ phía công ty TNHH Tin học & Thương mại AsNet trong suốt quá trình thực tập tại công ty

Trang 12

CHƯƠNG II: CƠ SỞ LÝ THUYẾT

1.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- programming), 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 hóa độ 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 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 đó [7]

1.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 và vì thế 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 (attribute) 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 hóa 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

Trang 13

không có gì lầ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 chính sau:

1.2.1 Tính trừu tƣợng

Đâ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ó nhưng 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

1.2.2 Tính đóng gói

C++ xây dựng tính đóng bằng cách cho phép mọi thành viên của một lớp có thể được khai báo bằng các từ khoá public, private, hay protected Một thành viên private chỉ có thể được truy cập từ các phương pháp (hàm nội tại) là thành viên của chính lớp đó hay được truy cập từ các hàm và các lớp được đặc biệt cho phép sử dụng bằng cách dùng từ khóa friend Một thành viên protected của một lớp sẽ có thể truy cập được từ các thành viên (nào đó) của các lớp có tính kế thừa của nó hay cũng có thể truy cập được từ các thành viện của chính lớp đó và của mọi thành viên friend

Nguyên lý của OOP là mọi và chỉ có các hàm là có thể truy cập được đến các giá trị nội tại của cùng lớp thì nên có tính đóng C++ có hỗ trợ đặc tính này (qua các

Trang 14

hàm thành viên và các hàm bạn), nhưng C++ lại không là yêu cầu bắt buộc: người lập trình có thể khai báo các phần hay tất cả các giá trị nội tại là công cộng (public),

và cũng cho phép làm cho toàn bộ lớp trở thành công cộng Lí do là vì C++ hỗ trợ không chỉ lập trình hướng đối tượng mà còn hỗ trợ các mẫu hình yếu hơn như là lập trình mô-đun

Một thói quen tốt cần có trong thực hành là khai báo mọi dữ liệu đều là riêng

tư (private), hay ít nhất ở dạng bảo tồn, và sau đó, tạo ra một giao diện nhỏ (thông qua các phương pháp) cho người dùng của lớp này dấu đi các chi tiết thiết lập bên trong [7]

1.2.3 Tính đa hình

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ẽ tùy 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 nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của 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

1.2.4 Tính kế thừa

Đặ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

SDL là từ viết tắt của Simple DirectMedia Layer, là một thư viện lập trình cung cấp các hàm giao tiếp với các phần cứng đồ họa, âm thanh hay thiết bị vào và

ra Thư viện này giúp các lập trình viên viết các chương trình giải trí hay các ứng

Trang 15

dụng đa phương tiện (multimedia) trên nhiều hệ điều hành khác nhau như: GNU/Linux, Windows, Mac OS, Classic, BeOS và một vài hệ điều hành không chính thức khác Qua thư viện này, lập trình viên có thể điều khiển phần hiển thị, sự kiện, âm thanh, ổ đĩa CD-ROM, thread và đồng hồ đo giờ

SDL là thư viện đa phương tiện, đa nền (cross-platform), được thiết kế để cung cấp sự truy cập ở mức thấp đến âm thanh, hình ảnh, bàn phím, chuột, cần điều khiển game (joystick), phần cứng 3D (3D hardware) thông qua OpenGL và 2D video framebuffer

SDL là một gói bao bọc (wrapper) xung quanh các chức năng xác định của

hệ điều hành Mục đích chính của SDL là lập thành một giao diện lập trình cốt lõi

đa hệ điều hành phổ biến cho việc truy cập chức năng đa phương tiện

Thư viện SDL được viết bằng ngôn ngữ C chuẩn, nhưng hỗ trợ tốt với C++

và nhiều ngôn ngữ lập trình khác

Do cách thiết kế của SDL, hầu hết mã nguồn của thư viện được tách thành nhiều phần cho từng hệ điều hành Khi SDL được biên dịch cho một hệ điều hành, các phần thích hợp được chọn cho hệ điều hành đó

SDL cho phép sử dụng miễn phí cho việc viết game và các chương trình nhưng bạn phải liên kết với thư viện liên kết động của chúng

Trang 16

trúc rõ ràng, được xây dựng cho những công việc cụ thể, và được tổ chức một cách hợp lý 7 thành phần đó là:

Cả 7 thành phần này đều được bọc trong thư viện SDL_image Thư viện này

hỗ trợ các định dạng hình ảnh sau: BMP, PPM, PCX, GIF, JPEG, PNG, TGA, và TIFF

2.2 SDL Audio

Âm thanh là một phần tích hợp trong bất kỳ game nào Âm thanh thường được mở trong suốt thời gian chạy của game Âm thanh hiệu ứng cùng với nhạc nền góp phần làm game hấp dẫn hơn Chính vì vậy âm thanh hiệu ứng và nhạc nền là phần không thể thiếu trong game Tôi xin giới thiệu về thư viện lập trình SDL_mixer, một thư viện hỗ trợ rất tốt cho việc tương tác với các file âm thanh

SDL_mixer là một thư viện mở rộng của SDL, cung cấp khả năng chơi nhiều file âm thanh và file nhạc một cách đồng thời Thư viện này hỗ trợ nhiều định dạng audio khác nhau và cung cấp sự tương tác dễ dàng trong việc tải chúng

Trang 17

3 CƠ SỞ LÝ THUYẾT GAME

3.1 Các khái niệm và kỹ thuật đồ họa

3.1.1 Các khái niệm

a Sprite sheet

Sprite sheet là một hình ảnh toàn vẹn của một đối tượng Mỗi đối tượng động

có một tập các sprite riêng tương ứng với từng dạng chuyển động, mỗi sprite là một hình ảnh mô tả một trạng thái trong dạng chuyển động đó

Việc thay đổi liên tiếp các sprite này với một khoảng thời gian chờ hợp lý giữa các sprite sẽ tạo ra các hình ảnh chuyển động với cảm giác thật Các hình ảnh chuyển động thường thấy trong game, đặc biệt là game 2D như nhân vật di chuyển, nước chảy, hay các vụ nổ do va chạm đều có thể được thể hiện bằng cách dùng sprite

Hình II.1: Sprite Sheet

b Mô hình màu RGB

Mô hình màu RGB (Red – Green – Blue) là mô hình màu chuẩn được sử dụng chủ yếu trong các thiết bị hiển thị màu Mô hình RGB tạo ra các màu khác nhau bằng cách hòa trộn với tỷ lệ khác nhau từ 3 màu chính đỏ, xanh lá cây và xanh dương Vì vậy trong các thiết bị hiển thị khác nhau màu sắc có thể khác nhau

Khi biểu diễn dưới dạng số các giá trị RGB được biểu diễn bằng bộ 3 số tương đương với cường độ của 3 màu cơ bản trên Dựa vào độ lớn của bộ 3 số này người ta phân ra các kiểu sau

Kiểu 16 bit

Trang 18

Dùng 16 bit để biểu diễn 1 màu với 5 bit cho mỗi màu gọi là kiểu 555 hoặc thêm 1 bit cho màu xanh lá cây (vì mắt có thể cảm nhận màu này tốt hơn so với các màu khác), gọi là kiểu 565

bổ sung thêm thông tin về độ trong suốt cùng với thông tin về màu trong cùng một file

Có 2 định dạng ảnh phổ biến hiện nay hổ trợ ảnh trong suốt đó là GIF và PNG Tuy nhiên PNG tỏ ra vượt trội hơn ở ảnh tĩnh với khả năng nén tốt hơn và hiển thị ảnh trong suốt, không bị răng cưa ở vùng biên Ngoài ra, trong khi PNG hỗ trợ đến 48 bit màu thì GIF chỉ có tới 8 bit màu

c Frame

Tất cả các thiết bị hiển thị hình ảnh chuyển động hiện nay như TV, màn hình… đều dựa trên khả năng lưu ảnh của mắt người Sau khi hình ảnh biến mất mắt của chúng ta còn lưu lại tại võng mạc 1/24 giây Vì vậy để tạo các đoạn film người ta chỉ cần thay đổi liên tục các hình ảnh theo tốc độ 24 hình/giây hoặc cao hơn Trong game cũng áp dụng kỹ thuật này để tạo chuyển động và mỗi lần cập nhật màn hình gọi là 1 frame

Trang 19

d Bản đồ

Bản đồ là vùng thể hiện tất cả các đối tượng trong game, một phần hoặc toàn

bộ bề mặt của bản đồ được hiển thị trên màn hình Bản đồ chứa tất cả các đối tượng khác Tất cả các đối tượng chỉ có thể di chuyển trong phạm vi của bản đồ và có mức

độ ưu tiên khi xuất hiện trên bản đồ khác nhau

Cách tổ chức bản đồ trong game là phần rất quan trọng, đối với mỗi game khác nhau lại có các tổ chức khác nhau

e Surface

Surface là khái niệm chỉ một vùng bộ nhớ để lưu dữ liệu hình ảnh Hình ảnh được lưu là một vùng hình chữ nhật, có thể là hình ảnh được tải lên từ một file hình ảnh nào đó hoặc là sự tổng hợp của nhiều hình ảnh khác nhau Khi cần các surface

có thể được vẽ lên màn hình để hiển thị hình ảnh đồ họa trong game

3.1.2 Các kỹ thuật xử lý

a Lọc màu

Gần như tất cả các ảnh số hiện nay được lưu dưới dạng hình chữ nhật, nhưng các hình ảnh được dùng trong game thì có vô số kiểu khác nhau Có hai phương pháp giải quyết vấn đề này là dùng các định dạng ảnh có kênh alpha và dùng phương pháp lọc màu khi vẽ lên màn hình

Các định dạng ảnh có kênh alpha như gif, png có thêm một giá trị lưu độ mờ tại pixel đó, nếu giá trị này bằng không thì pixel đó trong suốt và không được nhìn thấy

Tuy nhiên khi sử dụng các định dạng này việc thay đổi độ mờ, vị trí mờ trong chương trình sẽ khó khăn vì vậy ở đây tôi sử dụng cơ chế chọn màu Hình cần

sử dụng được vẽ trên một màu nền đồng nhất, khi vẽ chúng lên màn hình ta chỉ cần loại bỏ tất cả các pixel có màu là màu nền, ta được hình cần vẽ

Trang 20

Hình II.2: Ảnh chưa lọc màu nền

Hình II.3: Ảnh đã lọc màu nền

b Đồng bộ Frame

Đồng bộ frame là một kỹ thuật làm cho hình ảnh chuyển động trong game được mịn Trong game có nhiều đối tượng với nhiều hình ảnh đồ họa được vẽ liên tục Nếu cứ mỗi lần có 1 đối tượng thay đổi ta lại cập nhật lên màn hình thì sẽ không tạo được cảm giác các đối tượng chuyển động đồng thời Để giải quyết vấn

đề này chúng ta chờ tất cả các đối tượng thay đổi rồi mới cập nhật màn hình

Tuy nhiên khi game chạy có lúc các xử lý xảy ra nhanh, có khi lại chậm khiến các các đối tượng lúc thì chuyển động nhanh lúc thì chuyển động chậm tạo cảm giác game bị giật Để giải quyết vấn đề này ta quy định thời gian cập nhật màn hình là cố định, nếu sau khi tất cả các xử lý trong 1 frame hoàn thành ta kiểm tra xem thời gian thực hiện chúng đã đủ thời gian quy định cho 1 frame hay chưa Nếu nhỏ hơn thì đợi cho đến lúc đủ thời gian mới cập nhật tất cả lên màn hình

Trang 21

Hình II.4: Sơ đồ thuật toán đồng bộ Frame

c Ngôn ngữ Script

Ngôn ngữ script là ngôn ngữ lập trình kịch bản, các lệnh được người lập trình định sẵn để chương trình sử dụng đọc và thực hiện theo script đó Các chương trình được viết bằng ngôn ngữ này hầu hết không được biên dịch, chúng không hoạt động độc lập được mà phụ thuộc vào chương trình hổ trợ chúng

Ngôn ngữ kịch bản được biết đến nhiều nhất là javascript được nhúng vào các trang web Ngoài ra còn có Macromedia Flash – ActionScript dùng để lập trình trong flash, Lua, Shell…

Việc thiết kế bản đồ trong game là một phần quan trọng Nếu một game được đầu tư rất tốt về phần đồ họa nhưng bản đồ được thiết kế không tốt, không hấp dẫn

và khó khăn cho người chơi thì game đó sẽ mất điểm rất nhiều Ngoài ra để bản đồ

có thể thay đổi dễ dàng và mở rộng sau khi game hoàn thành, tôi đã định nghĩa một ngôn ngữ script đơn giản để tách phần thiết kế ra khỏi mã nguồn của chương trình Khi đó việc thiết kế bản đồ sẽ không phụ thuộc vào mã nguồn của chương trình và thậm chí người sử dụng cũng có thể tự thiết kế bản đồ nếu muốn

BẮT ĐẦU

Time < frameTime

frameTime = const Time = thời điểm bắt đầu

Time = thời gian hiện tại – thời điểm bắt đầu

KẾT THÚC đúng

sai

Trang 22

d Tổ chức bản đồ

Có nhiều cách tổ chức bản đồ, tuy nhiên có 2 cách thông dụng nhất đó là

dùng Tile và dùng Background Trong chương trình này em tổ chức bản đồ bằng Background

Cách tổ chức bản đồ dùng Background thường được áp dụng với những game có bản đồ lớn hơn nhiều lần cửa sổ hiển thị Một Background có kích thước

lớn hơn hoặc bằng với cửa sổ hiển thị được vẽ đầu tiên làm hình nền Tất cả những

đối tượng khác trong game sẽ được vẽ lên trên Background này theo thứ tự ưu tiên

Trang 23

Hình II.5: Sơ đồ thuật toán cuộn Background theo chiều dọc từ trên xuống dưới

tốc độ cuộn map = const

bgY = bgY ± tốc độ cuộn map

bgY < - background.height

hoặc bgY > background height

Trang 24

Hình II.6: Sơ đồ thuật toán kiểm tra va chạm

Trang 25

g Vòng lặp game (Game loop)

Hình II.7: Sơ đồ vòng lặp chính của game

Cập nhật tọa

độ mới Khởi tạo

Xác định va chạm

Nhận sự kiện

từ người chơi

Vẽ lên màn hình

Thoát Game

Đúng

Sai BẮT ĐẦU

KẾT THÚC

Ngày đăng: 09/05/2022, 01:30

HÌNH ẢNH LIÊN QUAN

Hình II.4: Sơ đồ thuật toán đồng bộ Frame - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh II.4: Sơ đồ thuật toán đồng bộ Frame (Trang 21)
Hình II.5: Sơ đồ thuật toán cuộn Background theo chiều dọc từ trên xuống dưới - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh II.5: Sơ đồ thuật toán cuộn Background theo chiều dọc từ trên xuống dưới (Trang 23)
Hình II.6: Sơ đồ thuật toán kiểm tra va chạm - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh II.6: Sơ đồ thuật toán kiểm tra va chạm (Trang 24)
Hình II.7: Sơ đồ vòng lặp chính của game - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh II.7: Sơ đồ vòng lặp chính của game (Trang 25)
Hình II.8: Đường cong Bézier bậc 3 (cubic) - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh II.8: Đường cong Bézier bậc 3 (cubic) (Trang 26)
Hình III.1: Sơ đồ thiết kế lớp GameObject - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.1: Sơ đồ thiết kế lớp GameObject (Trang 35)
Hình III.2: Sơ đồ thiết kế lớp PCFighter - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.2: Sơ đồ thiết kế lớp PCFighter (Trang 36)
Hình III.3: Sơ đồ thiết kế lớp PCBullet - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.3: Sơ đồ thiết kế lớp PCBullet (Trang 36)
Hình III.6: Sơ đồ thiết kế lớp NPCCannon - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.6: Sơ đồ thiết kế lớp NPCCannon (Trang 37)
Hình III.5: Sơ đồ thiết kế lớp NPCFighter - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.5: Sơ đồ thiết kế lớp NPCFighter (Trang 37)
Hình III.9: Sơ đồ thiết kế lớp Sprite - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.9: Sơ đồ thiết kế lớp Sprite (Trang 38)
Hình III.8: Sơ đồ thiết kế lớp NPCBullet - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.8: Sơ đồ thiết kế lớp NPCBullet (Trang 38)
Hình III.11: Sơ đồ thiết kế lớp PCRocketManager - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.11: Sơ đồ thiết kế lớp PCRocketManager (Trang 39)
Hình III.16: Sơ đồ thiết kế lớp Timer - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.16: Sơ đồ thiết kế lớp Timer (Trang 40)
Hình III.15: Sơ đồ thiết kế lớp HighScore - Xây dựng game 2D “Không chiến” chạy trên Windows bằng ngôn ngữ C++ và thư viện đồ họa SDL.
nh III.15: Sơ đồ thiết kế lớp HighScore (Trang 40)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm