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 ạ :confused:

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 ạ :wink: nên chưa biết cách hỏi hiệu quả

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

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 :frowning:

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 :slight_smile:

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

đậ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ọ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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?