30/09/2018, 17:42

Game Cờ Cá Ngựa c++, cách di chuyển một điểm tới vị trí khác sử dụng thư viện graphics.h?

Vấn đề : Từ ô tròn tô màu “xanh” , đi theo ngược chiều kim đồng hồ tương ứng mỗi ô từ 0-47 , giả sử nhập 1 a bất kỳ (a=1 hoặc a=6) thì nhập tiếp …
Câu Hỏi: Vậy có cách nào để di chuyển cái ô tròn tô màu “xanh” đến vị trí , ViTri+=a ( do những vị trí đó nằm trong mảng 2 chiều , và vị trí hiện tại của ô tròn tô màu “xanh” là (250,30) )

time viết 19:46 ngày 30/09/2018

bác làm xong cho em xin code nhé tạo động lực chút

vũ xuân quân viết 19:55 ngày 30/09/2018

anh không biết coi em như thế nào ?
Anh đưa giải thuật cho em xem có giải quyết được không. Lâu rồi không code với C++ nên hơi gà một tí. ^^
có 2 biếng:

1. mapChess[][] : biếng mảng 2 chiều lưu bàn cờ cá ngựa. Lưu tọa độ (x,y) trên đồ họa.
2. position[][]: biếng mảng 2 chiều lưu vị trí. Lưu tọa độ (x1,y1).

B1: - tìm index trên biến mapChess để biết vị trí con ngựa đang nằm ở chỗ nào.

 int index = 0;
     for(int i = 0 ;i < 48; i++){
    if (mapChess[i][0] == position[0][0] // tuong duoc truc x
          and mapChess[i][1] == position[0][1]) // tuong duong voi truc y{
             index = i;
             break;
           }
}

B2: Tính chỉ số index theo giá trị biếng a nhập trên màn hình.

index += a;
if(index > 47) index = 0;

B3. lấy vị trí mới:

position[0][0] = mapChess[index][0]; // truc x
position[0][1] = mapChess[index][1]; // truc y

b4. Tô màu.

thai tan loi viết 19:51 ngày 30/09/2018

uhm xong tui gửi cho xem thử

thai tan loi viết 19:48 ngày 30/09/2018

dạ để e thử , xem sao , thanks a nhiều nha

thai tan loi viết 19:46 ngày 30/09/2018

à có chỗ này e ko rõ lắm , chỗ

  • mapChess[i][0] ( tức cho quét những vị trị có hàng là i , và cột là 0 )
  • mapChess[i][1] ( tức cho quét những vị trị có hàng là i , và cột là 1 )
    thì nó không quét hết đc toàn bộ bàn cờ
vũ xuân quân viết 19:50 ngày 30/09/2018

sao không quét hết
i đi từ 0 - 47.

anh không biết là bàn cờ em lưu như thế nào ?
anh nghĩ là bàn cờ em chỉ lưu tọa độ (x,y) của mấy vòng tròn, còn con số thì không biết lưu ở đâu.

thai tan loi viết 19:45 ngày 30/09/2018

uhm đúng là e chỉ lưu tọa độ của những vòng tròn đó, nhưng nếu chỉ có i chạy từ 0-47 , còn cột = 0 vs 1 , e nghĩ nó chỉ quét đc 2 hàng đầu…
Gỉa sử : ví trí bắt đầu của e là (250,30) tương ứng với a[0] của mảng a[48], chỗ cái vòng màu xanh
và nếu như dùng phương của a…e ko hiểu lắm a giải thích giúp với

thai tan loi viết 19:58 ngày 30/09/2018

Em làm thế này ko biết có hợp lý ko
+Đầu tiền tạo 1 mảng a[48]={0}; ( 0 tức là trống ) ( 1,2,3,4 tương ứng là màu của người 1,2,3,4 …cũng là vị trí quân cờ của người chơi đó lun)
+Sau đó dùng 1 hàm để quét mảng này để xét vật cản.
+Tạo 1 hàm gọi để liên kết mảng 1 chiều với màn hình đồ họa ( chỗ này e xài for(i=0;i<48;i++) rồi dùng if để phân ra những nhóm có qui luật @@ , mà thấy chỗ này code quá dài )

vũ xuân quân viết 19:51 ngày 30/09/2018

Đầu tiên anh nghĩ bài tập của em chỉ có 1 con ngựa, nhập số từ 1 đến 6 đến di chuyển vị trí của con ngựa nên mới đưa đoạn code trên.

anh thấy cách giải quyết của em hợp lý.

Tạo 1 hàm gọi để liên kết mảng 1 chiều với màn hình đồ họa ( chỗ này e xài for(i=0;i<48;i++) rồi dùng if để phân ra những nhóm có qui luật @@ , mà thấy chỗ này code quá dài )

chỗ này dài thì thử làm case. Dùng if nhiều quá không tốt. Chỗ qui luật có thể tách ra thành những hàm con cho từng quy luật tương ứng.

time viết 19:55 ngày 30/09/2018

có code chưa anh ơi

Bài liên quan
0