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

ỨNG DỤNG XNA xây DỰNG CHƯƠNG TRÌNH mô PHỎNG vật lý

95 165 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

Định dạng
Số trang 95
Dung lượng 7,22 MB

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

Nội dung

Phạm Thi Vương SVTH: Phạm Trịnh Đồng Nguyễn Thịnh Khả - Đặc điểm chính: o Các chức năng: Điều chỉnh các thông số không bằng cách nhập trực tiếp mà là qua hình ảnh bảng điều khiển:  Chức

Trang 1

KHOA CÔNG NGHỆ PHẦN MỀM

KHÓA LUẬN TỐT NGHIỆP

ỨNG DỤNG XNA XÂY DỰNG CHƯƠNG

Trang 2

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Foreword

Mở đầu

Lời cảm ơn

Mục lục

Thuật ngữ và từ viết tắt

Danh mục bảng biểu

Danh mục hình vẽ

CHƯƠNG I: GIỚI THIỆU 1

1 Giới thiệu đề tài 1

2 Mục tiêu đề tài 7

CHƯƠNG II: KIẾN THỨC VẬT LÝ 9

1 Chuyển động điều hòa của con lắc đơn 9

2 Chuyển động của một vật trên mặt phẳng nghiêng 10

3 Chuyển động của một vật bị ném xiên 14

CHƯƠNG III: CÔNG NGHỆ XNA 17

1 Tổng quan về XNA 17

1.1 Giới thiệu về XNA 17

1.2 XNA Framework 17

1.3 XNA Game Studio 18

2 Cấu trúc cơ bản của một Project XNA Game 19

3 XNA với lập trình Game 2D 22

3.1 Giới thiệu về XNA và Game 2D 22

3.2 Tạo Class mới cho Project 22

3.3 Xử lí Input, Audio và Font 24

4 XNA với lập trình Game 3D 30

4.1 Môt số khái niệm về đơn vị căn bản trong lập trình Game 3D 30

4.2 XNA với lập trình Game 3D 35

Trang 3

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

2 Thiết kế 43

2.1 Use Case 43

2.2 Giải thích 43

3 Xử lí 45

3.1 Phóng đại góc quay của con lắc đơn 45

3.2 Vấn đề với việc chọn vị trí ban đầu của con lắc đơn 45

3.3 Vấn đề xem thông số tại một vị trí của con lắc đơn 46

3.4 Tìm công thức chung cho các Pha chuyển động trên mặt phẳng 46

3.5 Lực ma sát nghỉ 48

3.6 Vận tốc khi chuyển đổi mặt phẳng 50

3.7 Vấn đề AdaptRatio trong ném xiên 51

3.8 Chuyển động của ném xiên khi xuống thấp hơn độ cao ban đầu 51

3.9 Ý tưởng Game Tổng Hợp 52

3.10 Hiển thị tiếng Việt 54

3.11 Vấn đề với GameTime 57

4 Cài đặt 59

4.1 Diagram 59

4.2 DGui 73

4.3 Giao diện 78

CHƯƠNG V: KẾT LUẬN 85

1 Ưu điểm 85

2 Nhược điểm 85

3 So sánh Physics Simulator với một số ứng dụng mô phỏng vật lý khác 86 4 Hướng phát triển 87

TÀI LIỆU THAM KHẢO 88

Trang 4

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Trang 5

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Bảng IV.4.3.1.1.1 Button OK trên màn hình thông tin 78

Bảng IV.4.3.2.2.1 Các Control trên màn hình Input của 'Con lắc đơn' 79

Bảng IV.4.3.3.2.1 Các Control trên màn hình Input của 'Vật ném xiên' 81

Bảng IV.4.3.4.2.1 Các Control trên màn hình Input của 'Mặt phẳng nghiêng' 83

Bảng V.1 Physics Simulator so với ứng dụng mô phỏng vật lý 1 86

Bảng V.2 Physics Simulator so với ứng dụng mô phỏng vật lý 2 86

Bảng V.3 Physics Simulator so với ứng dụng mô phỏng vật lý 3 86

Bảng V.4 Physics Simulator so với ứng dụng mô phỏng vật lý 4 86

Bảng V.5 Physics Simulator so với ứng dụng mô phỏng vật lý 5 87

Trang 6

Hình III.4.1.5.2 Terrain tạo từ Height Map hình Wireframe (trên),

SolidRendering (dưới)

33

Hình III.4.1.6.2 Skeletal Animation với Mesh và Skeleton 34

Hình III.4.2.5.1 Skeletal Animation – Alien Spider 41

Trang 7

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Trang 8

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

CHƯƠNG I: GIỚI THIỆU

1 Giới thiệu đề tài

Vật lý nghiên cứu tự nhiên với nhiều lĩnh vực: cơ, nhiệt, quang, điện, hạt nhân…

Các lĩnh vực trên đem lại tri thức để con người hiểu rõ hơn về thế giới xung quanh mình Trong đó, cơ học, đặc biệt là động lực học, là một lĩnh vực của các hiện tượng gần gũi nhất: Con lắc đơn (vật treo đung đưa trên cành cây), Vật ném xiên(quả bóng chuyền lên cao rơi xuống), Mặt phẳng nghiêng(quyển sách đặt trên mặt bàn nghiêng) Trong cơ học, ba loại hiện tượng trên cũng dễ quan sát thấy trực tiếp hơn so với một số hiện tượng khác như: Con lắc lò xo, Ròng rọc…

Rất nhiều hiện tượng chỉ được hiểu chi tiết qua mô tả nhờ các thông số, từ ngữ (sách, vở) Trong khi, hiện tại, công nghệ thông tin với sự phát triển cao của công nghệ vi tính có thể cung cấp sự hỗ trợ hiện đại rất lớn Điều đó dẫn tới khả năng mô phỏng các hiện tượng vật lý một cách trực quan, như nhiều ứng dụng đã có trên thị trường XNA vốn là một công cụ cho lập trình Game trên C# của Microsoft với nhiều ưu điểm và cũng

hỗ trợ rất tốt cho mục đích mô phỏng này

Một số ứng dụng Mô phỏng vật lý

Ứng dụng 1 [13]

Hình I.1.1

Trang 9

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Copyright © Walter Fendt, May 21, 1998

- Là một mô phỏng của hiện tƣợng con lắc đơn

- Đặc điểm chính:

o Các chức năng:

 Chức năng Reset, Start

 Chức năng chỉnh chế độ quan sát với tốc độ chậm (Slow Motion)

 Chức năng chỉnh các thông số bên cạnh màn hình mô phỏng

o Các thông tin hiển thị:

 Hiển thị một số thông số của hiện tƣợng

 Hiển thị Đồ thị, Quỹ đạo chuyển động

 Hiển thị đồng hồ đếm thời gian

- Ƣu điểm chính:

o Giao diện thể hiện tính chất khoa học

o Thể hiện thông tin của hầu hết thông số cần thiết

- Khuyết điểm chính:

o Không có thông tin về năng lƣợng

Ứng dụng 2 [6]

Hình I.1.2

- Thiết kế: CN.Trần Văn Huy – Đại Học Sƣ Phạm Hà Nội

- Là một mô phỏng của hiện tƣợng vật ném xiên với hình ảnh khẩu đại bác bắn

từ các độ cao khác nhau

Trang 10

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Đặc điểm chính:

o Các chức năng: Điều chỉnh các thông số không bằng cách nhập trực tiếp mà

là qua hình ảnh bảng điều khiển:

 Chức năng điều chỉnh góc bay

 Chức năng điều chỉnh vận tốc

 Chức năng điều chỉnh độ cao

o Các thông tin hiển thị:

 Hiển thị Quỹ đạo

- Copyright © Walter Fendt, September 13, 2000

- Là một mô phỏng của hiện tƣợng vật ném xiên

- Đặc điểm chính:

Trang 11

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

o Các chức năng:

 Chức năng Reset, Start

 Chức năng chỉnh chế độ quan sát với tốc độ chậm (Slow Motion)

 Chức năng chỉnh các thông số bên cạnh màn hình mô phỏng

 Chức năng chọn các đại lượng

o Các thông tin hiển thị:

 Hiển thị một số thông số của hiện tượng

 Hiển thị trục tọa độ, Quỹ đạo chuyển động

 Hiển thị đồng hồ đếm thời gian

- Ưu điểm chính:

o Giao diện thể hiện tính chất khoa học

o Thể hiện thông tin của hầu hết thông số cần thiết

- Khuyết điểm chính:

o Không có thông tin về năng lượng

Ứng dụng 4 [12]

Hình I.1.4

- Copyright: Fu-Kwun Hwang

- Là một mô phỏng cho hiện tượng ném xiên, gồm hai khẩu súng luôn hướng

vào nhau

Trang 12

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Đặc điểm chính:

o Các chức năng:

 Chức năng Reset, Start, Show

 Chức năng chỉnh chế độ quan sát với tốc độ chậm (Slow Motion)

 Chức năng thay đổi vị trí (độ cao với khẩu súng bên trái, độ xa với khẩu súng bên phải)

 Chức năng thay đổi vận tốc

o Các thông tin hiển thị:

 Hiển thị Quỹ đạo chuyển động

Trang 13

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Copyright © 2004-2010 University of Colorado

- Nhóm phát triển PhET:

o Phát triển phần mềm: Sam Reid

o Nhóm thiết kế: Wendy Adams, Trish Loeblein, Kathy Perkins, Carl Wieman

o Phỏng vấn: Danielle Harlow

- Là một chương trình mô phỏng chuyên biệt cho mặt phẳng nghiêng với dạng

người đẩy vật thể, tập hợp một số mô phỏng con, mỗi mô phỏng có hai mặt phẳng: một mặt phẳng ngang dài 10 mét, một mặt phẳng nghiêng dài 10 mét

Các mô phỏng này được chia theo loại:

o Ứng dụng giới thiệu chung với các thông số cơ bản của hiện tượng

o Ứng dụng tập trung vào theo dõi ma sát

o Ứng dụng tập trung vào theo dõi đồ thị lực

o Ứng dụng Game mini (dựa theo mô phỏng)

 Chức năng điều chỉnh lực khi mô phỏng đang diễn ra

 Chức năng thay đổi góc nghiêng khi mô phỏng đang diễn ra (kéo thả)

 Chức năng quay phim quá trình hiện tượng diễn ra trong mô phỏng:

 Hiển thị thông tin tương ứng với từng mô phỏng con:

 Ứng dụng giới thiệu chung: có các loại đối tượng riêng:Thùng nhỏ,

Tủ hồ sơ, Chó ngủ, Tủ lạnh,Vật bí mật

 Ứng dụng ma sát: Hệ số ma sát, Gia tốc trọng trường

 Ứng dụng đồ thị lực: Các loại lực, Đồ thị lực

Trang 14

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Ưu điểm: Là một ứng dụng hoàn chỉnh cho mô phỏng cho duy nhất một hiện tượng, là thành quả của cả một tập thể lớn, do đó có sự trau chuốt kỹ lưỡng:

o Giao diện, chức năng và thao tác thân thiện

o Thể hiện thông tin của hầu hết thông số cần thiết

o Thiết kế các chức năng thêm thú vị

- Khuyết điểm:

o Hình ảnh hiển thị, đặc biệt là các Vector có thể vượt ra ngoài màn hình mô phỏng

o Không có thông tin về năng lượng

Một số ưu điểm của XNA

- Miễn phí khi người cộng tác ít

- Thư viện XNA được viết lại và nâng cao cho thư viện DirectX, mục đích để dễ

sử dụng và mang lại hiệu quả cao

- Hệ thống thư viện quản lý và phát triển mã sẵn có, các API cơ bản cần thiết cho một chương trình

o Vật ném xiên: dạng hiện tượng trong tự nhiên với một vật bị ném lên cao

và sau một thời gian thì hạ độ cao và rơi xuống đất

Trang 15

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

o Chuyển động của vật trên đoạn đường tổng hợp gồm mặt phẳng ngang và mặt phẳng nghiêng: dạng hiện tượng như trường hợp đặt một tấm gỗ dựng nghiêng để di chuyển các vật thể từ thấp lên cao

- Các mô phỏng trên cần được thực hiện theo mô hình mô phỏng động học: “Mô

hình động học diễn tả hệ thống diễn ra theo thời gian, giống như hệ thống băng chuyền trong nhà máy[4]”

- Chương trình mang những đặc điểm chính như sau:

o Giao diện, chức năng, thao tác thân thiện

o Ý tưởng thể hiện mới mẻ

o Các hình ảnh hiển thị không vượt ra ngoài màn hình

o Thể hiện được thông tin của các thông số trong mỗi hiện tượng

o Cần có thông số năng lượng

o Thiết kế các chức năng thêm thú vị

Trang 16

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

CHƯƠNG II: KIẾN THỨC VẬT LÝ

1 Chuyển động điều hòa của con lắc đơn

 Cấu tạo

- Gồm một sợi dây không giãn có độ dài l, khối lƣợng không đáng kể, một đầu

cố định, đầu còn lại đƣợc gắng vào một vật có khối lƣợng m Con lắc dao động với biên độ góc nhỏ (α < 100)

- Điều kiện dao động điều hoà:Bỏ qua ma sát, lực cản và α0 << 100 hay S0 << l

Trang 17

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

s w

= - = - w a2

o S0 =

2

2 v s

o Động năng: Wđ = mv2 = mgl(cos- cos0)

o Cơ năng: W = Wt + Wđ = mgl(1 - cos0)

o Vận tốc khi đi qua li độ góc : v =

o Vận tốc khi đi qua vị trí cân bằng ( = 0): |v| = vmax =

o Nếu 0 100 thì: v = ; vmax = 0 ; , 0 tính ra rad

- Sức căng của sợi dây:

o Sức căng của sợi dây khi đi qua li độ góc  là:T = mgcos + = mg(3cos - 2cos0)

o Tại VTCB là: TVTCB = Tmax = mg(3 - 2cos0)

o Tại vị trí biên: Tbiên = Tmin = mgcos0

Với 0 100: T = 1 +  - 2; Tmax = mg(1 +  ); Tmin = mg(1 -

2 0

2

)

2 Chuyển động của một vật trên mặt phẳng nghiêng

 Cấu tạo: Là mặt phẳng với các điểm đầu cuối có độ cao khác nhau

Công dụng: Dùng mặt phẳng nghiêng có thể kéo vật lên với lực kéo nhỏ hơn trọng lƣợng của vật

2 1

2gl   0

)cos1(

2gl  0

) ( 2 2

0

Trang 18

o Gốc toạ độ O: tại vị trí vật bắt đầu chuyển động

o Chiều dương Ox: Theo chiều chuyển động của vật

o Mốc thời gian: Lúc vật bắt đầu chuyển động ( t0 = 0)

- Áp dụng định luật II Niu-tơn cho vật:

Chiếu phương trình trên lên chiều chuyển động của vật ta có:

Trang 19

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Lực ma sát làm chuyển hóa động năng của chuyển động tương đối giữa các bề mặt thành năng lượng ở dạng khác Việc chuyển hóa năng lượng thường là do va chạm giữa phân tử của hai bề mặt gây ra chuyển động nhiệt hoặc thế năng dự trữ trong biến dạng của bề mặt hay chuyển động của các electron, được tích lũy một phần thành điện năng hay quang năng Trong đa số trường hợp trong thực tế, động năng của các bề mặt được chuyển hóa chủ yếu thành nhiệt năng

Về bản chất vật lý, lực ma sát xuất hiện giữa các vật thể trong cuộc sống là lực điện từ, một trong các lực cơ bản của tự nhiên, giữa các phân tử, nguyên tử

Có thể xấp xỉ lực ma sát tỷ lệ với lực ép hai bề mặt lên nhau, áp lực F0 vuông góc với hai bề mặt, và hệ số ma sát, k, giữa các vật liệu:

F = F0k

Ma sát nghỉ

Ma sát nghỉ (hay còn được gọi là ma sát tĩnh) là lực xuất hiện giữa hai vật tiếp xúc

mà vật này có xu hướng chuyển động so với vật còn lại nhưng vị trí tương đối của chúng chưa thay đổi Ví dụ như, lực ma sát nghỉ ngăn cản một vật trượt trên bề mặt nghiêng Hệ

số của ma sát nghỉ, thường được kí hiệu là μt, thường lớn hơn so với hệ số của ma sát động Lực ban đầu làm cho vật chuyển động thường bị cản trở bởi ma sát nghỉ

Một ví dụ quan trọng khác về lực ma sát nghỉ là: lực ma sát nghỉ ngăn cản khiến cho bánh xe khi mới khởi động lăn không được nhanh như khi nó đang chạy Mặc dù vậy khi bánh xe đang chuyển động, bánh xe vẫn chịu tác dụng của lực ma sát động Cho nên lực ma sát nghỉ lớn hơn lực ma sát động

Giá trị lớn nhất của lực ma sát nghỉ, khi vật bắt đầu chuyển động, hay ma sát nghỉ cực đại, được tính bằng công thức:

F = F0kt với:

kt là hệ số ma sát tĩnh

F0 là lực mà vật tác dụng lên mặt phẳng

Ma sát động

Trang 20

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Ma sát động xuất hiện khi một vật chuyển động so với vật còn lại và có sự cọ xát giữa chúng Hệ số của ma sát động thường nhỏ hơn hệ số ma sát nghỉ Mỗi loại ma sát động lại có một kí hiệu khác nhau:

- Trường hợp này tạo ra lực ma sát có phương trùng với tiếp tuyến của bề mặt tiếp xúc giống như lực ma sát trượt, mà nó còn xuất hiện khi có lực vuông góc với bề mặt tiếp xúc Lực này góp một phần đáng kể (là một phần quan trọng khi vận tốc của vật thể đủ lớn) tạo nên ma sát nhớt Chú ý rằng trong một số trường hợp, lực này sẽ nâng vật thể lên cao

- Ma sát lăn là lực ngăn cản lại sự lăn của một bánh xe hay các vật có dạng hình tròn trên mặt phẳng bởi sự biến dạng của vật thể và/ hoặc của bề mặt Lực ma sát lăn nhỏ hơn các lực ma sát động khác Hệ số ma sát lăn thường có giá trị là 0,001

Ví dụ điển hình nhất của lực ma sát lăn là sự di chuyển của bánh các loại xe cộ trên đường

Hệ số ma sát

Hệ số ma sát không phải là một đại lượng có đơn vị, nó biểu thị tỉ số của lực ma sát nằm giữa hai vật trên lực tác dụng đồng thời lên chúng Hệ số ma sát phụ thuộc vào chất liệu làm nên vật; ví dụ như, nước đá trên thép có hệ số ma sát thấp (hai vật liệu có thể trượt dễ dàng trên bề mặt của nhau), cao su trên mặt đường có hệ số ma sát lớn(hai loại vật liệu không thể dễ dàng trượt trên bề mặt của nhau) Các hệ số ma sát có thể nằm trong khoảng từ 0 cho tới một giá trị lớn hơn 1- trong điều kiện tốt, lốp xe trượt trên bê tông có thể tạo ra hệ số ma sát với giá trị là 1,7

Lực ma sát luôn luôn có xu hướng chống lại chuyển động (đối với lực ma sát động) hoặc xu hướng chuyển động (đối với ma sát nghỉ) giữa hai bề mặt tiếp xúc nhau

Ví dụ như, một hòn đá trượt trên băng đã chịu tác dụng của lực ma sát động làm chậm nó lại Một ví dụ về lực ma sát chống lại xu hướng chuyển động của vật, bánh xe của một chiếc xe đang tăng tốc chịu tác dụng của lực ma sát hướng vế phía trước; nếu không có

nó bánh xe sẽ bị trượt ra phía sau Chú ý rằng trong trường hợp này lực ma sát không

Trang 21

hệ số ma sát nằm trong khoảng từ 0.3 đến 0.6 Các giá trị ngoài tầm này thường rất hiếm gặp, nhưng Teflon có thể có hệ số ma sát thấp với giá trị là 0.04 Hệ số ma sát có giá trị không chỉ xuất hiện trong trường hợp bay lên nhờ có từ trường Cao su trên các mặt tiếp xúc khác thường có hệ số ma sát nằm trong khoảng 1,0 đến 2

 Chuyển động thẳng biến đổi đều

Chuyển động thẳng biến đổi đều là chuyển động của một vật có quỹ đạo là đường thẳng, và có vận tốc tức thời hoặc là tăng đều hoặc là giảm đều theo thời gian Chuyển động thẳng biến đổi đều của vật mà vận tốc tức thời tăng đều theo thời gian được gọi là chuyển động thẳng nhanh dần đều; ngược lại là chuyển động thẳng chậm dần đều Chuyển động thẳng biến đổi đều của vật được đặc trưng bởi bốn đại lượng sau: gia tốc, vận tốc tức thời, quãng đường đi được và thời gian chuyển động

Trong chuyển động thẳng biến đổi đều với vận tốc biến đổi theo thời gian biến đổi, Gia Tốc được dùng để mô tả vận tốc của chuyển động tăng tốc, giảm tốc hay chuyển động với vận tốc không đổi

vt = v0 + at

Gia tốc được định nghĩa là tỉ lệ giữa biến đổi vận tốc với biến đổi thời gian

Chuyển động thẳng đều không có thay đổi về vận tốc có gia tốc bằng 0.Chuyển động thẳng biến đổi đều tăng tốc có gia tốc là một số dương; chuyển động thẳngbiến đổi đều giảm tốc có gia tốc là một số âm

3 Chuyển động của một vật bị ném xiên

Trang 22

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Khảo sát chuyển động của một vật bị ném xiên từ một điểm O trên mặt đất Sau khi được truyền một vận tốc đầuVo làm với mặt phẳng ngang một góc α vật chỉ còn chịu tác dụng của trọng lực (bỏ qua sức cản của không khí)

Hình II.3.1 Xét một vật được ném ra theo phương xiên(có vận tốc ban đầu v0hợp với phương

ngang một góc α ) Với dạng quỹ đạo là một parabol, chuyển động ném xiên có thể phân

tích thành hai chuyển động là chuyển động theo phương ngang Ox và theo phương thẳng

đứng Oy

Hình II.3.2 Chọn hệ trục tọa độ như hình vẽ.Gốc tọa độ O là vị trí ném vật Gốc thời gian là

lúc ném vật(t0 = 0)

Ta xét chuyển động của vật trên trục Ox và Oy

- Theo OY: ta có các phương trình mô tả chuyển động của vật là:

o Gia tốc:

Trang 23

- Phương trình quỹ đạo của chuyển động ném xiên:

- Độ cao cực đại của vật bị ném:

- Tầm bay xa của vật bị ném:

- Vận tốc của vật bị ném xiên:

Trang 24

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

CHƯƠNG III: CÔNG NGHỆ XNA

1 Tổng quan về XNA

1.1 Giới thiệu về XNA

Microsoft XNA là một bộ công cụ được cung cấp bởi Microsoft giúp phát triển

và quản lí game trên các hệ máy tính XNA cố gắng hỗ trợ các nhà phát triển game trong việc viết "các đoạn code lặp đi lặp lại" và gắn kết các khía cạnh khác nhau của việc sản xuất game thành một hệ thống đơn lẻ

- Bộ công cụ XNA được công bố ngày 24 Tháng Ba năm 2004, tại Hội nghị các nhà phát triển game tại San Jose, California

- Bản Preview của XNA đã được phát hành vào ngày 14 Tháng 3, 2006

- XNA Game Studio 2.0 được phát hành vào tháng Mười Hai năm 2007, tiếp theo là XNA Game Studio 3.0 vào ngày 30 tháng Mười 2008

- XNA Game Studio 4.0 được phát hành vào ngày 16 Tháng Chín năm 2010 cùng với công cụ phát triển Windows Phone 7

XNA hiện tại là toàn bộ môi trường phát triển Game của Microsoft, bao gồm bộ Kit phát triển game cho Xbox và XNA Game Studio

"XNA" ban đầu là tên của dự án phát triển, Xbox New Architecture Microsoft

dự định phát hành máy chơi game Xbox, tuy nhiên năm 2005 Xbox 360 được ra đời thay cho tên Xbox và XNA được dùng cho công cụ phát triển game trong toàn bộ hệ thống Microsoft

1.2 XNA Framework

XNA Framework là sự kết hợp giữa hai phiên bản NET Compact Framework 2.0

phát triển cho Xbox 360 và NET Framework 2.0 trên Windows XNA bao gồm một tập hợp rộng lớn các thư viện, dành riêng cho việc phát triển game, thúc đẩy sử dụng lại tối

đa các đoạn code trên mọi nền tảng Framework này dựa trên một phiên bản của Common Language Runtime được tối ưu hóa để cung cấp một môi trường thực thi hoàn chỉnh Bản Runtime này có sẵn trong Windows XP, Windows Vista, Windows 7,Windows Phone 7 và Xbox 360 Khi một game XNA được viết bởi Runtime này, nó có thể chạy trên bất kỳ nền tảng nào hỗ trợ XNA Framework mà chỉ chỉnh sửa tối thiểu hoặc không Game viết theo framework này phải được viết bằng ngôn ngữ NET, nhưng chỉ có

C # trong XNA Game Studio Express IDE và tất cả các phiên bản của VisualStudio 2008

và 2010 (lúc XNA 4.0) được hỗ trợ chính thức

Do đó XNA Framework chỉ giới hạn ở mức chi tiết kĩ thuật thấp (low-level) liên quan đến việc viết mã game, mà tập trung đảm bảo sự hoạt động thông suốt khi game

Trang 25

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

được chuyển từ một nền tảng tương thích sang nền tảng khác, do đó cho phép các nhà phát triển game tập trung vào nội dung và giải thuật trong game XNA Framework tích hợp với một số công cụ, như Cross-Platform Audio Creation Tool (XACT), để hỗ trợ trong việc tạo nội dung XNA Framework hỗ trợ viết game cho cả 2D và 3D và cho phép

sử dụng bộ điều khiển và chuyển động của Xbox 360

1.3 XNA Game Studio

XNA Game Studio là một môi trường phát triển tích hợp (IDE) cho việc phát

triển game Bao gồm:

- XNA Game Studio Express phiên bản đầu tiên của XNA Game Studio, được

dành cho sinh viên, các phát triển game tự do Express cung cấp cơ bản "bộ Kit ban đầu" cho việc phát triển game, chẳng hạn như các trò chơi nền tảng, chiến lược thời gian thực, và bắn súng góc nhìn thứ nhất Phiên bản đàu tiên đã không có cách nào vận chuyển mã nhị phân tiền biên dịch giữa các người chơi Xbox 360, nhưng điều này được khắc phục trong "XNA Game Studio Express 1.0 Refresh", làm cho nó có thể biên dịch mã nhị phân Xbox 360 và chia sẻ với Microsoft XNA Creator khác Các phiên bản beta đầu tiên của XNA Game Studio Express được phát hành và cho tải về ngày 30/08/2006, theo sau là một phiên bản thứ hai vào ngày 01/11/2006 Microsoft phát hành phiên bản cuối cùng vào ngày 11/12/2006.Ngày 24/04/2007, Microsoft phát hành một bản cập

nhật được gọi là XNA Game Studio Express 1.0 Refresh

- XNA Game Studio 2.0 được phát hành vào ngày 13/12/2007 XNA Game

Studio 2.0 tương thích với tất cả các phiên bản của Visual Studio 2005 (bao gồm cả các Visual C# 2005 Express Edition), một network API sử dụng Xbox Live trên cả Windows và Xbox 360 và xử lý thiết bị tốt hơn

- XNA Game Studio 3.0 (dành cho Visual Studio 2008 hoặc phiên bản Visual C

# 2008 Express Edition) cho phép các nhà sản xuất game nhắm đến nền tảng Zune và thêm vào hỗ trợ cộng đồng Xbox Live Bản beta được phát hành vào tháng 09/2008 Các phiên bản cuối cùng được phát hành vào ngày 30/10/2008 XNA Game Studio 3.0 hiện tại hỗ trợ C# 3.0, LINQ và hầu hết các phiên bản của Visual Studio 2008 Có thêm một số tính năng mới của XNA Game Studio 3.0, chẳng hạn như chế độ dùng thử thêm vào XNA Game Studio 3.0 sẽ cho phép nhà lập trình dễ dàng thêm các tính năng dùng thử cần thiết cho game, Xbox LIVE mutil-player thêm tính năng mời người chơi, tạo game đa nền tảng chạy trên Windows, Xbox 360 và Zune

- XNA Game Studio 3.1 được phát hành vào ngày 11/06/2009 API bao gồm hỗ

trợ phát lại video, một API chỉnh sửa âm thanh, hệ thống Xbox LIVE Party và

Trang 26

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

hỗ trợ cho các trò chơi sử dụng Xbox 360 Avatar

- XNA Game Studio 4 đƣợc công bố và ban đầu phát hành bản Preview tại

GDC ngày 09/03/2010, và hoàn chỉnh vào ngày 16/09/2010 Bao gồm thêm hỗ trợ cho nền tảng Windows Phone 7 (nhƣ tăng tốc phần cứng 3D), cấu hình phần cứng, cấu hình hiệu ứng, tích hợp các trạng thái đối tƣợng, đa nền tảng và

đa cảm ứng, bộ đệm cho microphone và audio playback, và tích hợp trong Visual Studio 2010

2 Cấu trúc cơ bản của một Project XNA Game

 Trong file Game1.cs:

- File Game1.cs là nơi tất cả các đối tƣợng đƣợc khai báo và thực hiện việc xử lí

- Các lệnh using cần cho XNA:

Trang 27

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Hàm tạo thông tin giá trị đầu tiên cho các thành phần trong game:

protected override void Initialize()

// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch (GraphicsDevice);

// Allows the game to exit

if ( GamePad GetState( PlayerIndex One).Buttons.Back == ButtonState Pressed)

this Exit();

// TODO: Add your update logic here

base Update(gameTime);

}

Trang 29

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

3 XNA với lập trình Game 2D

3.1 Giới thiệu về XNA và Game 2D

Nói đến làm game ai cũng nghĩ ngay đến ngôn ngữ chuẩn là C++ và bộ thư viện DirectX hay OpenGL Như đã biết C++ thì code rất khó hiểu so với C# và ít được hỗ trợ trong quá trình code Vì thế, làm sao vừa code dễ mà chất lượng game không giảm mấy

so với ngôn ngữ chuẩn C++ nên đa số người dùng lựa chọn công nghệXNA( dựa trên ngôn ngữ C#) của Microsoft để viết game

Ưu điểm:

- Miễn phí khi người cộng tác ít

- XNA cho phép lập trình game chạy trên PC + Windows, XBOX360, ZUNE

- Ngoài ra thư viện XNA được viết lại và nâng cao cho thư viện DirectX, mục đích để dễ sử dụng và mang lại hiệu quả cao

- Hệ thống thư viện quản lý và phát triển mã sẵn có, các API cơ bản cần thiết cho một game

- Hỗ trợ xây dựng hình ảnh 2D - 3D

- Ngoài ra XNA còn kiểm luôn việc quản lý C# và tích hợp chương trình biên dịch NET C#

Nhược điểm:

- Phải trả phí khi có nhiều người cộng tác làm việc ( phiên bản có phí )

3.2 Tạo Class mới cho Project

3.2.1 Tạo class cho một đối tượng trong Game

- Câu lệnh using cần có khi tạo mới 1 class của XNA:

using Microsoft.Xna.Framework.Graphics; // for Texture2D

using Microsoft.Xna.Framework; // for Vector2

- Khai báo biến:

public Texture2D texture { get ; set ; } // sprite texture, read-only property

public Vector2 position { get ; set ; } // sprite position on screen

public Vector2 size { get ; set ; } // sprite size in pixels

Sử dụng Vector2 cho biến size và position ( X, Y ), Texture2D cho biến texture

- Hàm khởi tạo:

Trang 30

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

public clsSprite( Texture2D newTexture, Vector2 newPosition, Vector2 newSize, int

ScreenWidth, int ScreenHeight)

3.2.2 Đưa đối tượng vào Game

- Bổ sung biến trong phần khai báo biến:

- Bổ sung trong hàm LoadContent():

// Load a 2D texture sprite

mySprite1 = new clsSprite (Content.Load< Texture2D >( "ball" ), new Vector2 (0f, 0f),

new Vector2 (64f, 64f));

- Bổ sung trong hàm UnloadContent():

Trang 31

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

// Free the previously alocated resources

mySprite1.texture.Dispose();

- Hàm Update() giữ nguyên

- Bổ sung trong hàm Draw() (Thực hiện đưa Sprite lên bằng một texture tại vị trí nhất định ):

// Draw the sprite using Alpha Blend, which uses transparency information if avaliable

spriteBatch.Begin( SpriteSortMode FrontToBack, BlendState AlphaBlend);

mySprite1.Draw(spriteBatch);

spriteBatch.End();

- Lưu ý là file ảnh phải được chứa trong content

3.3 Xử lí Input, Audio và Font

3.3.1 Input

- Hàm checkKeyboard(): để lấy sự kiện bàn phím gán giá trị cho tốc độ của vật

protectedvoid checkKeyboard()

{

KeyboardState keyboardState = Keyboard GetState();

if (keyboardState.IsKeyDown( Keys Up))

mySprite2.position += new Vector2 (0, -5);

if (keyboardState.IsKeyDown( Keys Down))

mySprite2.position += new Vector2 (0, 5);

if (keyboardState.IsKeyDown( Keys Left))

mySprite2.position += new Vector2 (-5, 0);

if (keyboardState.IsKeyDown( Keys Right))

mySprite2.position += new Vector2 (5, 0);

}

- Hàm checkMouse(): để lấy sự kiện click chuột ở vị trí nào gán giá trị cho tốc

độ của vật

Trang 32

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

protectedvoid checkMouse()

{

MouseState MouseState = Mouse GetState();

if (mySprite2.position.X < Mouse GetState().X)

mySprite2.position += new Vector2 (5, 0);

if (mySprite2.position.X > Mouse GetState().X)

mySprite2.position += new Vector2 (-5, 0);

if (mySprite2.position.Y < Mouse GetState().Y)

mySprite2.position += new Vector2 (0, 5);

if (mySprite2.position.Y > Mouse GetState().Y)

mySprite2.position += new Vector2 (0, -5);

}

- Kiểm tra input được thực hiện trong hàm Update():

protectedoverridevoid Update( GameTime gameTime)

- Nhạc nền chạy khi bắt đầu, kết thúc hoặc khi đang chơi

- Nhạc hiệu ứng sẽ được chơi tùy trường hợp: va chạm, ăn điểm, chiến thắng

Có 2 cách để đưa âm thanh vào game

Cách 1:

 Tạo file MySounds.xap:

Chúng ta chuẩn bị cho âm thanh từ một hệ thống quản lý âm thanh của XNA đó là platform Audio Creation Tools.Các bước như sau:

Trang 33

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

- Bắt đầu XACT bằng cách chọn Start \ Programs \ Microsoft XNA Game Studio 4.0 \ Tools \ Cross-Platform Audio Creation Tool 3 (XACT3)

- Trong bảng XACT window, chọn File \ New Project để tạo mới audio project,

và lưu lại với tên MySounds

- Nhìn phía bên trái cửa sổ, MySounds sẽ xuất hiện với nhiều thành phần khác Click chuột phải vào Wave Banks và lựa chọn New Wave Bank trong cửa sổ hiện ra như hình:

Hình III.3.3.2.1

- Sau đó click chuột phải vào Sound Banks chọn New Sound Bank như hình:

Hình III.3.3.2.2

Trang 34

- Ta drag và drop nhạc từ cửa sổ Wave Bank vào Cue box, và lưu lại Vậy là ta

đã có file MySounds.xap, ta add file này bỏ vào project ( thư mục content )

 Thêm âm thanh vào Game:

- Phần khai báo thêm các yếu tố của audio:

// Audio objects

AudioEngine audioEngine;

WaveBank waveBank;

SoundBank soundBank;

Cue myLoopingSound = null ;

- Hàm Initiallize() để thiết lập âm thanh lặp ( dùng làm nhạc nền ): đặt nhạc nền trong hàm Initiallize() vì chỉ khi ta thoát game nó mới kết thúc

Trang 35

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

protectedoverridevoid Initialize()

{

audioEngine = new AudioEngine ( @"Content\MySounds.xgs" );

waveBank = new WaveBank (audioEngine, @"Content\Wave Bank.xwb" );

soundBank = new SoundBank (audioEngine, @"Content\Sound Bank.xsb" ); myLoopingSound = soundBank.GetCue( "notify" );

GamePad SetVibration( PlayerIndex One, 0f, 0f);

// Play or stop an infinite looping sound when pressing the "P" button

private SoundEffect collisonSound;

private Song bgSound;

- Hàm Initialize():

bgSound = Content.Load< Song >( "backMusic" );

collisonSound = Content.Load< SoundEffect >( "chord" );

MediaPlayer Play(bgSound);

Trang 36

- Thay đổi kiểu Font bằng cách thay đổi tên Font trong thẻ:

<FontName>Calibri</FontName>, ta cũng có thể thay đổi kiểu nghiêng hay in

đậm… với các tên thẻ giống trong Microsoft Word

Các mã lệnh trong file Game1.cs:

- Trong khai báo:

private SpriteFont gameFont;

Trang 37

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

4 XNA với lập trình Game 3D

4.1 Môt số khái niệm về đơn vị căn bản trong lập trình Game 3D

4.1.1 Hệ trục tọa độ 3D

- Hệ trục 3D: Hệ trục tọa độ Oxyz

Hình III.4.1.1.1

4.1.2 Vertice và Primitive

- Vertex (số nhiều – Vertices): Phần cơ bản nhất của vật thể 3D là Vertex (đỉnh)

- Edge: đoạn thẳng đơn (Line) nối hai Vertex

- Primitive: Đơn vị hình học nhỏ nhất mà hệ thống có thể lưu trữ Đôi lúc, cơ sở nhỏ nhất để dựng nên các vật thể, các mô hình cũng gọi là Primitive (Geometric Primitive, Drawing Primitive)

Primitive nguyên thủy nhất là điểm và đường thẳng (Point và Line)

4.1.3 Model và Mesh

- Sự định nghĩa các đối tượng 3D gọi là 3D Model hay đơn giản hơn, Model

- Model là hệ thống phân tầng các Mesh Mesh là một tập hợp nội kết nối của các Vertex, với một số thông tin để biểu diễn

Trang 39

GVHD: ThS Phạm Thi Vương SVTH: Phạm Trịnh Đồng

Nguyễn Thịnh Khả

Hình III.4.1.4.1

- Local Space: không gian kiến tạo vật thể 3D với riêng nó

- World Space: không gian lớn, là môi trường 3D

- View Space: không gian theo góc nhìn

- Backface Culling: chọn những phần nhìn thấy được trong View Space theo hình chóp cụt của Camera (frustum)

- Lighting: chiếu sáng

- Clipping: chọn hiển thị những vùng nằm trong View Space

- Projection: phép chiếu

- Viewport Space: chọn một vùng nào đó để chiếu hình

- Rasterization: chuyển hóa thông tin số hóa theo định dạng đồ họa Vector (khối hình) sang định dạng ảnh quét (pixel hay dot) để chiếu lên màn hình, máy in, hoặc lưu trữ

4.1.5 Kiến tạo Terrain - Height Maps

- Là bản đồ 2D dùng để chứa thông tin bản đồ 3D

Hình III.4.1.5.1

Ngày đăng: 23/12/2018, 06:19

TỪ KHÓA LIÊN QUAN

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

w