C# 如何洗牌列表
用C写一个记忆游戏。所以我有一个54张图片的列表。我可以得到另一张列表,随机抓取其中八张图片。然后我想把第二张列表中的八张图片添加到另一张列表中,每张图片两次,非常简单 现在我想洗牌名单,我有点卡住了。我之所以要洗牌列表,是因为我希望每次加载游戏(内存)或单击按钮(重启)时图片都是随机的。。。以下是我对这个问题的看法:C# 如何洗牌列表,c#,list,shuffle,C#,List,Shuffle,用C写一个记忆游戏。所以我有一个54张图片的列表。我可以得到另一张列表,随机抓取其中八张图片。然后我想把第二张列表中的八张图片添加到另一张列表中,每张图片两次,非常简单 现在我想洗牌名单,我有点卡住了。我之所以要洗牌列表,是因为我希望每次加载游戏(内存)或单击按钮(重启)时图片都是随机的。。。以下是我对这个问题的看法: private void Form2_Load(object sender, EventArgs e) { //generate random number Ra
private void Form2_Load(object sender, EventArgs e)
{
//generate random number
Random r = new Random();
//play music via media player
axWindowsMediaPlayer1.uiMode = "none";
axWindowsMediaPlayer1.URL = ("Theme.mp3");
//create limage list
List<Image> imagesEasy;
//populate the 'imageEasy' list
imagesEasy = new List<Image>();
imagesEasy.Add(Image.FromFile(@"Baraka01.gif"));
imagesEasy.Add(Image.FromFile(@"Baraka02.gif"));
imagesEasy.Add(Image.FromFile(@"CyberSubZero01.gif"));
imagesEasy.Add(Image.FromFile(@"CyberSubZero02.gif"));
imagesEasy.Add(Image.FromFile(@"Cyrax01.gif"));
imagesEasy.Add(Image.FromFile(@"Cyrax02.gif"));
imagesEasy.Add(Image.FromFile(@"Ermac01.gif"));
imagesEasy.Add(Image.FromFile(@"Ermac02.gif"));
imagesEasy.Add(Image.FromFile(@"Jade01.gif"));
imagesEasy.Add(Image.FromFile(@"Jade02.gif"));
imagesEasy.Add(Image.FromFile(@"Jax01.gif"));
imagesEasy.Add(Image.FromFile(@"Jax01.gif"));
imagesEasy.Add(Image.FromFile(@"JohnnyCage01.gif"));
imagesEasy.Add(Image.FromFile(@"JohnnyCage02.gif"));
imagesEasy.Add(Image.FromFile(@"Kabal01.gif"));
imagesEasy.Add(Image.FromFile(@"Kabal02.gif"));
imagesEasy.Add(Image.FromFile(@"Kano01.gif"));
imagesEasy.Add(Image.FromFile(@"Kano02.gif"));
imagesEasy.Add(Image.FromFile(@"Katana01.gif"));
imagesEasy.Add(Image.FromFile(@"Katana02.gif"));
imagesEasy.Add(Image.FromFile(@"Kratos01.gif"));
imagesEasy.Add(Image.FromFile(@"Kratos02.gif"));
imagesEasy.Add(Image.FromFile(@"KungLau01.gif"));
imagesEasy.Add(Image.FromFile(@"KungLau02.gif"));
imagesEasy.Add(Image.FromFile(@"LiuKang01.gif"));
imagesEasy.Add(Image.FromFile(@"LiuKang02.gif"));
imagesEasy.Add(Image.FromFile(@"Mileena01.gif"));
imagesEasy.Add(Image.FromFile(@"Mileena02.gif"));
imagesEasy.Add(Image.FromFile(@"NightWolf01.gif"));
imagesEasy.Add(Image.FromFile(@"NightWolf02.gif"));
imagesEasy.Add(Image.FromFile(@"NoobSaibot01.gif"));
imagesEasy.Add(Image.FromFile(@"NoobSaibot02.gif"));
imagesEasy.Add(Image.FromFile(@"QuanChi01.gif"));
imagesEasy.Add(Image.FromFile(@"QuanChi01.gif"));
imagesEasy.Add(Image.FromFile(@"Raiden01.gif"));
imagesEasy.Add(Image.FromFile(@"Raiden02.gif"));
imagesEasy.Add(Image.FromFile(@"Scorpian01.gif"));
imagesEasy.Add(Image.FromFile(@"Scorpian02.gif"));
imagesEasy.Add(Image.FromFile(@"Sektor01.gif"));
imagesEasy.Add(Image.FromFile(@"Sektor02.gif"));
imagesEasy.Add(Image.FromFile(@"ShangTsung01.gif"));
imagesEasy.Add(Image.FromFile(@"ShangTsung02.gif"));
imagesEasy.Add(Image.FromFile(@"Sheeva01.gif"));
imagesEasy.Add(Image.FromFile(@"Sheeva02.gif"));
imagesEasy.Add(Image.FromFile(@"Sindel01.gif"));
imagesEasy.Add(Image.FromFile(@"Sindel02.gif"));
imagesEasy.Add(Image.FromFile(@"Smoke01.gif"));
imagesEasy.Add(Image.FromFile(@"Smoke02.gif"));
imagesEasy.Add(Image.FromFile(@"Sonya01.gif"));
imagesEasy.Add(Image.FromFile(@"Sonya02.gif"));
imagesEasy.Add(Image.FromFile(@"Stryker01.gif"));
imagesEasy.Add(Image.FromFile(@"Stryker02.gif"));
imagesEasy.Add(Image.FromFile(@"SubZero01.gif"));
imagesEasy.Add(Image.FromFile(@"SubZero02.gif"));
List<Image> imagesReady;
//populate the 'imageReady' list to fill remaining 8 pictureBoxes
imagesReady = new List<Image>();
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
imagesReady.Add(imagesEasy[r.Next(54)]);
List<Image> imagesFinal;
//populate the 'imageFinal' list to fill remaining 8 pictureBoxes
imagesFinal = new List<Image>();
imagesFinal.Add(imagesReady[0]);
imagesFinal.Add(imagesReady[1]);
imagesFinal.Add(imagesReady[2]);
imagesFinal.Add(imagesReady[3]);
imagesFinal.Add(imagesReady[4]);
imagesFinal.Add(imagesReady[5]);
imagesFinal.Add(imagesReady[6]);
imagesFinal.Add(imagesReady[7]);
imagesFinal.Add(imagesReady[0]);
imagesFinal.Add(imagesReady[1]);
imagesFinal.Add(imagesReady[2]);
imagesFinal.Add(imagesReady[3]);
imagesFinal.Add(imagesReady[4]);
imagesFinal.Add(imagesReady[5]);
imagesFinal.Add(imagesReady[6]);
imagesFinal.Add(imagesReady[7]);
//
//need to add or call shuffle method here before assigning pictures to pictureBoxes
//
//assign pictures to pictureBoxes from the imagesFinal list
pictureBox1.Image = imagesFinal[0];
pictureBox2.Image = imagesFinal[1];
pictureBox3.Image = imagesFinal[2];
pictureBox4.Image = imagesFinal[3];
pictureBox5.Image = imagesFinal[4];
pictureBox6.Image = imagesFinal[5];
pictureBox7.Image = imagesFinal[6];
pictureBox8.Image = imagesFinal[7];
pictureBox9.Image = imagesFinal[8];
pictureBox10.Image = imagesFinal[9];
pictureBox11.Image = imagesFinal[10];
pictureBox12.Image = imagesFinal[11];
pictureBox13.Image = imagesFinal[12];
pictureBox14.Image = imagesFinal[13];
pictureBox15.Image = imagesFinal[14];
pictureBox16.Image = imagesFinal[15];
}
private void Form2\u加载(对象发送方,事件参数e)
{
//生成随机数
随机r=新随机();
//通过媒体播放器播放音乐
axWindowsMediaPlayer1.uiMode=“无”;
axWindowsMediaPlayer1.URL=(“Theme.mp3”);
//创建limage列表
列表图像搜索;
//填充“imageEasy”列表
imagesEasy=新列表();
Add(Image.FromFile(@“Baraka01.gif”);
Add(Image.FromFile(@“baraka2.gif”);
添加(Image.FromFile(@“CyberSubZero01.gif”);
添加(Image.FromFile(@“CyberSubZero02.gif”);
Add(Image.FromFile(@“Cyrax01.gif”);
Add(Image.FromFile(@“Cyrax02.gif”);
添加(Image.FromFile(@“Ermac01.gif”);
添加(Image.FromFile(@“Ermac02.gif”);
Add(Image.FromFile(@“Jade01.gif”);
Add(Image.FromFile(@“Jade02.gif”);
Add(Image.FromFile(@“Jax01.gif”);
Add(Image.FromFile(@“Jax01.gif”);
Add(Image.FromFile(@“JohnnyCage01.gif”);
Add(Image.FromFile(@“JohnnyCage02.gif”);
Add(Image.FromFile(@“Kabal01.gif”);
Add(Image.FromFile(@“Kabal02.gif”);
Add(Image.FromFile(@“Kano01.gif”);
Add(Image.FromFile(@“Kano02.gif”);
Add(Image.FromFile(@“Katana01.gif”);
Add(Image.FromFile(@“katana2.gif”);
Add(Image.FromFile(@“Kratos01.gif”);
Add(Image.FromFile(@“Kratos02.gif”);
添加(Image.FromFile(@“KungLau01.gif”);
Add(Image.FromFile(@“KungLau02.gif”);
添加(Image.FromFile(@“LiuKang01.gif”);
Add(Image.FromFile(@“LiuKang02.gif”);
Add(Image.FromFile(@“Mileena01.gif”);
Add(Image.FromFile(@“Mileena02.gif”);
Add(Image.FromFile(@“NightWolf01.gif”);
Add(Image.FromFile(@“NightWolf02.gif”);
Add(Image.FromFile(@“NoobSaibot01.gif”);
Add(Image.FromFile(@“NoobSaibot02.gif”);
Add(Image.FromFile(@“QuanChi01.gif”);
Add(Image.FromFile(@“QuanChi01.gif”);
Add(Image.FromFile(@“Raiden01.gif”);
Add(Image.FromFile(@“Raiden02.gif”);
Add(Image.FromFile(@“Scorpian01.gif”);
Add(Image.FromFile(@“Scorpian02.gif”);
Add(Image.FromFile(@“Sektor01.gif”);
Add(Image.FromFile(@“Sektor02.gif”);
添加(Image.FromFile(@“ShangTsung01.gif”);
添加(Image.FromFile(@“ShangTsung02.gif”);
Add(Image.FromFile(@“Sheeva01.gif”);
Add(Image.FromFile(@“Sheeva02.gif”);
添加(Image.FromFile(@“Sindel01.gif”);
添加(Image.FromFile(@“Sindel02.gif”);
添加(Image.FromFile(@“Smoke01.gif”);
添加(Image.FromFile(@“Smoke02.gif”);
Add(Image.FromFile(@“Sonya01.gif”);
Add(Image.FromFile(@“Sonya02.gif”);
Add(Image.FromFile(@“Stryker01.gif”);
Add(Image.FromFile(@“Stryker02.gif”);
Add(Image.FromFile(@“SubZero01.gif”);
Add(Image.FromFile(@“subzeroo2.gif”);
列表图像READY;
//填充“imageReady”列表以填充剩余的8个图片框
imagesReady=新列表();
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
imagesrady.Add(imagesEasy[r.Next(54)]);
最后列出图像;
//填充“imageFinal”列表以填充剩余的8个图片框
imagesFinal=新列表();
imagesFinal.Add(imagesrady[0]);
imagesFinal.Add(imagesrady[1]);
imagesFinal.Add(imagesrady[2]);
imagesFinal.Add(imagesrady[3]);
imagesFinal.Add(imagesrady[4]);
imagesFinal.Add(imagesrady[5]);
imagesFinal.Add(imagesrady[6]);
imagesFinal.Add(imagesrady[7]);
imagesFinal.Add(imagesrady[0]);
imagesFinal.Add(imagesrady[1]);
imagesFinal.Add(imagesrady[2]);
imagesFinal.Add(imagesrady[3]);
imagesFinal.Add(imagesrady[4]);
imagesFinal.Add(imagesrady[5]);
imagesFinal.Add(imagesrady[6]);
imagesFinal.Add(imagesrady[7]);
//
//在将图片分配给PictureBox之前,需要在此处添加或调用shuffle方法
//
//从imagesFinal列表中将图片分配给pictureBoxes
pictureBox1.Image=imagesFinal[0];
pictureBox2.Image=imagesFinal[1];
pictureBox3.Image=imagesFinal[2];
pictureBox4.Image=imagesFinal[3];
pictureBox5.Image=imagesFinal[4];
picturebx6.Image=imagesFinal[5];
pictureBox7.Image=imagesFinal[6];
pictureBox8.Image=imagesFinal[7];
pictureBox9.Image=imagesFinal[8];
pictureBox10.Image=imagesFinal[9];
picturebx11.Image=imagesFinal[10];
pictureBox12.Image=imagesFinal[11];
pictureBox13.Image=imagesFinal[12];
pictureBox14.Image=imagesFinal[13];
pictureBox15.Image=imagesFinal[14];
pictureBox16.Image=imagesFinal[15];
}
尝试实施此方法:
您可以尝试以下方法:
List<int> list = new List<int>();
Random rnd = new Random(SEED);
for(int i = 0; i < 15; i++)
{
int nextValue = rnd.Next(MIN,MAX);
while(list.Contains(nextValue))
nextValue = rnd.Next(MIN,MAX);
}
List List=新列表();
随机rnd=新随机(种子);
对于(int i=0;i<15;i++)
{
int nextValue=rnd.Next(
var rand = new Random();
var randomList = imagesEasy.OrderBy (x => rand.Next()).ToList();
int numbA;
int[] chosenA = new int[8];
for (int i = 0; i < 8; i++)
{
numbA = r.Next(9);
for (int b = 0; b < 8; b++)
{
while (chosenA.Contains(numbA) == true)
{
numbA = r.Next(9);
b = 0;
}
}
chosenA[i] = numbA;
}
List<Image> imagesFinal;
//populate the 'imageFinal' list to fill remaining 8 pictureBoxes
imagesFinal = new List<Image>();
imagesFinal.Add(imagesReady[(chosenA[0] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[1] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[2] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[3] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[4] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[5] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[6] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[7] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[0] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[1] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[2] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[3] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[4] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[5] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[6] - 1 )]);
imagesFinal.Add(imagesReady[(chosenA[7] - 1 )]);
pictureBox1.Image = imagesFinal[chosenB[0] -1 ];
pictureBox2.Image = imagesFinal[chosenB[1] -1 ];
pictureBox3.Image = imagesFinal[chosenB[2] -1 ];
pictureBox4.Image = imagesFinal[chosenB[3] -1 ];
pictureBox5.Image = imagesFinal[chosenB[4] -1 ];
pictureBox6.Image = imagesFinal[chosenB[5] -1 ];
pictureBox7.Image = imagesFinal[chosenB[6] -1 ];
pictureBox8.Image = imagesFinal[chosenB[7] -1 ];
pictureBox9.Image = imagesFinal[chosenB[8] -1 ];
pictureBox10.Image = imagesFinal[chosenB[9] -1 ];
pictureBox11.Image = imagesFinal[chosenB[10] -1 ];
pictureBox12.Image = imagesFinal[chosenB[11] -1 ];
pictureBox13.Image = imagesFinal[chosenB[12] -1 ];
pictureBox14.Image = imagesFinal[chosenB[13] -1 ];
pictureBox15.Image = imagesFinal[chosenB[14] -1 ];
pictureBox16.Image = imagesFinal[chosenB[15] -1 ];