سلام
من در پروژه 12 پنل دارم که تکه های یک پازل هستند. چطور اونا رو رندوم نمایش بدم ؟؟؟
با استفاده از ()random تابع می خوام هر بار عکس بک گراند پنل ها بصورت تصادفی عوض بشه...
یه راهنمایی بکنین ممنون می شم
سلام
من در پروژه 12 پنل دارم که تکه های یک پازل هستند. چطور اونا رو رندوم نمایش بدم ؟؟؟
با استفاده از ()random تابع می خوام هر بار عکس بک گراند پنل ها بصورت تصادفی عوض بشه...
یه راهنمایی بکنین ممنون می شم
Random random= new Random();
panel1.BackgroundImage=Image.FromFile( string.Format("C:\\Pic\\{0}.Png",random.Next(1, 12)));
ممنون
حالا من 12 پنل دارم با 12 عکس بک گراند ...
چکارش کنم که عکس های تصادفی که می ده تکراری نباشن ؟؟
void Main()
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 12; i++)
{
sb.AppendFormat("{0},",GetRandomNumber());
}
MessageBox.Show(sb.ToString());
}
List<int> list = new List<int>();
Random random = new Random();
private int GetRandomNumber()
{
int iRandom = random.Next(1, 13);
if (!list.Contains(iRandom))
{
list.Add(iRandom);
return iRandom;
}
return GetRandomNumber();
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 12; i++)
{
sb.AppendFormat("{0},", GetRandomNumber());
}
MessageBox.Show(sb.ToString());
این قسمت رو توی main از کلاس program پروژه نوشتم و بقیه رو توی فرمی که پازل رو دارم...
اما می گه GetRandomNumber() وجود نداره ...
همه رو هم که توی void main می نویسم بازم ایراد می گیره از آرایه و ...
چطور کدها رو قرار بدم؟
با با استفاده از linq
IEnumerable<int> numbers= Enumerable.Range(1, 12) ;
int[] randomNumbers = (from n in numbers
orderby Guid.NewGuid()
select n).ToArray();
اون مثال بود تو Ctor مربوط به form بنویس
من راه دوم بیشتر توصیه میکنم .
وقتی همه اش رو توی فرم پازل می یارم این کدها رو توی رویداد کلیک button گذاشتم اما خطای stack overflow می ده
مشکل از کجاست؟
//StringBuilder sb = new StringBuilder();
for (int i = 0; i < 13; i++)
{
// sb.AppendFormat("{0},", GetRandomNumber());
panel1.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel2.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel3.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel4.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel5.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel6.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel7.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel8.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel9.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel10.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel11.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
panel12.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", GetRandomNumber()));
}
MessageBox.Show(sb.ToString());
از این خط از تابع GetRandomNumber() ایراد می گیره
int iRandom = random.Next(1, 12);
من با linq کار نکردم ...
روش دیگر :
System.Random random = new System.Random();
int[] randomNumbers = (from r in Enumerable.Range(1, 12)
let iRandom = random.Next()
orderby iRandom
select r).ToArray();
خوب معلومه دیگه for نمیخواد .
توی کدهای من کجا باید اینو بذارم؟؟؟
panel1.BackgroundImage = Image.FromFile(string.Format(".\\puzzle pic\\cd1\\p1\\p1_{0}.jpg", ???????????????????????????????));
در ضمن فضای نام using system.linq باید بذارم ؟؟؟؟ چرا قبول نمی کنه ؟
شرمنده !!! خیلی دارم وقتتونو می گیرم
اصلاح method :
private int GetRandomNumber()
{
int iRandom = random.Next(1, 13);
if (!list.Contains(iRandom))
{
list.Add(iRandom);
return iRandom;
}
else if (list.Count != 12)
{
return GetRandomNumber();
}
return -1;
}
نمیدونم تو شروع بازی یا Ctor . اصلا هر جا خودت میپسندی!
فقط برای دریافت دوباره حتما لیست خالی کن . در .net 2 نمیتونی به linq دسترسی داشته باشی نسخه framework عوض کن .
درست شد خیلی لطف کردین