Hiển thị các bài đăng có nhãn Kĩ thuật lập trình game. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Kĩ thuật lập trình game. Hiển thị tất cả bài đăng

Thứ Sáu, 29 tháng 11, 2013

Kĩ thuật lập trình Game – Cơ bản - part 2

VI.  Giao điểm của hai đường thẳng
Từ hai đoạn thẳng (hoặc vector) trong mặt phẳng 2D, ta có  thể tìm được giao điểm của chúng để 
tính toán các góc phản xạ và hướng di chuyển.
1.  Tạo phương trình đường thẳ ng từ đoạn thẳng
Ta có hai điểm A(x1,y1) và B(x2,y2) tạo thành một đoạn thẳng, để tạo được một phương trình 
đường thẳng từ  hai điểm  này, ta cần  tính được độ nghiêng của đường thẳng (slope) theo công 
thức:  
a = (y2 –  y1)/(x2 –  x1)
Thay thế x2, y2 bằng hai biến x,y:
a = (y –  y1)/(x –  x1)
=> y –  y1 = a(x –  x1)
Hay:
y = ax + (y1 – ax1)
Đặt b = y1 – ax1, ta có:
y = ax + b
2.  Tính giao điể m của hai đường thẳng
Ta có hai phương trình đường thẳng
(1): y = a1x + b1
(2): y = a2x + b2
Ta có thể tính được giao điểm của chúng bằng cách tìm   giao điểm x trước:
a1x + b1 = a2x + b2;
=> x(a1 – a2) = b2 – b1
=> x = (b2 – b1)/(a1 – a2)
Khi đã có x, ta sẽ thế vào (1) hoặc (2 ) để tính được y.  Để kiểm tra hai đoạn thẳng có cắt nhau 
không, ta chỉ cần kiểm tra điểm {x,y} thuộc cả hai đoạn thẳng hay không.   Ngoài ra ta cần loại 
trừ trường  hợp  hai đường thẳng song song  hoặc trùng nhau, khi đó  giá trị slope của chúng sẽ 
bằng nhau. 

Chủ Nhật, 17 tháng 11, 2013

Kĩ thuật lập trình Game – Cơ bản - part 1

I.   Vòng lặp game (Game loop) hoạt động thế  nào?
Phần cốt lõi của hầu hết các game chính là vòng lặp được dùng để cập nhật và hiển thị trạng thái của game. Trong bài viết này,  ta  sẽ minh họa các phương pháp tạo vòng lặp   game với ngôn ngữ javascript.
1.  Vòng lặp cơ bản
Một vòng lặp game cơ bản bao gồm các việc được thực hiện theo thứ tự sau:
while(gameRunning)
{
 processInput(); // keyboard, mouse,...
 updateGame();
 draw();
 // checkGameOver();
}
Minh họa: