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:
Thanh lý pallet nhựa cũ Đaklak Trải dài trên vùng đất Daklak, những chiếc pallet nhựa cũ Đaklak nằm rải rác như những bức tranh tĩnh lặng, kể lể về những chặng đường mà chúng đã đi qua. Những đường...
Thanh lý pallet nhựa cũ Đaklak