Chào mọi người, tôi đang viết game slide puzzle 3x3 ô, một app trên windows phone 7.1, nền tảng Silverlight. Game đã viết gần xong, chỉ còn lại vấn đề cuối cùng là: random hình ảnh.
Ảnh chụp phần chơi 3x3
Xem trong hình trên, mỗi ô ảnh là 1 StackPanel (các bạn có thể xem là PictureBox trong winform cho quen), mỗi ô chứa 1 Image có đánh ID - ngoại trừ ô trắng không có chứa Image. Bên phải ô trắng còn có 2 ô ảnh bị ẩn nữa. Các ID được đánh tăng dần từ trái sang phải, từ trên xuống dưới, bắt đầu từ ô trắng có ID = 1.
Ban đầu tôi dùng giải thuật chọn ra 2 ô ảnh bất kì, rồi swap chúng với nhau, lặp lại thao tác này khoảng 100 lần. Vấn đề phát sinh là sau khi random thì phát sinh 1 trong 2 trạng thái: đưa về hình gốc <font color="blue">thành công và không thành công - luôn có 2 ô ảnh bị sau vị trí.
Tôi dùng mảng 1 chiều để quản lí các StackPanel trên.
Các bác có biết cách nào khác dùng để random ảnh luôn đưa ra trạng thái có thể đưa về ảnh gốc, xin chia sẻ!
Sau đây là code:
Code trộn ảnh.
Mã:
void Scrambles()
{
var count = 0;
while (count < 25)
{
var a = _rnd.Next(5, 11);
var b = _rnd.Next(5, 11);
if (a == b) continue;
var stack1 = FindStackPanelByTagId(a);
var stack2 = FindStackPanelByTagId(b);
var image1 = stack1.Children[0];
var image2 = stack2.Children[0];
stack1.Children.Clear();
stack2.Children.Clear();
stack1.Children.Add(image2);
stack2.Children.Add(image1);
count++;
}
}
Xin cám ơn mọi đóng góp và chia sẻ!</font>
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...