30/09/2018, 20:41

Xử lý di chuyển vật cản trong game bằng ngôn ngữ C trên Console

Em đang code 1 game đơn giản trên console với khung game có độ rộng là 80 chiều cao 18
Em muốn cho nhân vật di chuyển tránh vật cản đang di chuyển từ trên xuống theo hướng trái đến khi vật cản chạm đến đáy khung game thì lại di chuyển lên theo hướng trái.

Ai hướng dẫn giúp em 1 đoạn được không ạ

if (vc.td.y == GameHeight - 1)
{
      ???????

}

Em xin chân thành cảm ơn!
Xin thứ lỗi nếu em hỏi chưa rõ câu hỏi vì em mới tham gia diễn đàn ạ nên chưa biết cách hỏi hiệu quả

Gió viết 22:46 ngày 30/09/2018

Đơn giản nhất là cho nó có 2 cái vận tốc theo chiều ngang và chiều dọc là vx,vy. Khi tới biên theo chiều nào thì vận tốc theo chiều đó đổi chiều

#khi chuyển động
x+=vx
y+=vy
#khi tới biên 
if y>=MAX_HEIGHT-1:
     vy=-vy
Nguyễn Đức Thắng viết 22:50 ngày 30/09/2018

sư huynh có thể chỉ rõ hơn cho em về cái vận tốc được không ạ? em toàn làm kiểu vc.td.x++ (cho nó sang phải) hoặc vc.td.y++ (sang trái) chứ em ko hiểu cái vận tốc

Nguyễn Hoàng Trung viết 22:47 ngày 30/09/2018

Bác cho ++ thì nó chỉ di chuyển 1 đon vị, giờ bác gán vận tốc vô một biến nào đó , rồi khi tới biên cho nó dấu “-” thì nó sẽ là ngược chiều di chuyển thôi

Nguyễn Đức Thắng viết 22:53 ngày 30/09/2018

ý em là đập biên theo ziczac ý ạ chứ không phải là đập ngược lại :3

Nguyễn Hoàng Trung viết 22:53 ngày 30/09/2018

đập ziczac thì tại điểm đập viết phương trình đường pháp tuyến, xong tính góc tạo giữa vector vận tốc và vector pháp tuyến -> góc phản xạ

Hùng Quang viết 22:50 ngày 30/09/2018

học vector đi bạn chứ ±1 thế khá phức tạp. Còn làm theo kiểu ±1 đấy thì copy nguyên đoạn code di chuyển trược rồi tọa độ y thay vì trừ chuyển thành cộng thôi

Bài liên quan
0