PDA

View Full Version : پروژه مار و پله-مشکل در رنگ بندی خانه ها-زیاد بودن کد های تکراری



hsdnhd
پنج شنبه 10 اردیبهشت 1394, 20:00 عصر
باسلام
من برای پایام ترم دارم پروژه مارو پله رو با استفاده از سی شارپ می نویسم ولی با یک سری مشکلات برخورد کردم به عنوان مثال :
1 - من الان دستی خونه های رنگی که باعث محرومیت یاجایزه میشه را دادم میخوام طوری بشه که هردفعه که بازی شروع میشه یا ریست میشه این خانه ها عوض بشن و بصورت خودکار از رنگ های سبز و زرد 8 تا خانه رو بدون اینکه تکراری باشند انتخاب کنه و 5 تا هم خاکستری انتخاب کنه بدون اینکه تکراری باشه با رنگ های دیگه و همین رنگ این رو چطوری باید طراحی کنم؟
2- کدهای تکراری توی پروژه فوق العاده زیاده میخواستم بدونم راهی وجود داره که این کدهارو کمتر کنم روش های برای بهینه تر بودن کد سراغ دارید؟ممنون میشم راهنمایی کنید.
3- و اینکه من میخوام پروژه دیتابیس داشته باشه و هرشخصی زمان هایی که طول میکشه تا به آخر برسه و سطح سختی که انتخاب میکنه و تعداد خانه های سبز کم و دورنگ دیگه بیشتر بشه تا میزان سختی و راحتی بیشتری بتونم به بازی بدم میخواستم بدونم این رو چطوری باید پیاده سازی کنم؟
و اینکه کلا هرموردی که میتونم به این پروژه اضافه کنم رو هم لطفا بهم بگید.
ممنون
لینک پروژه (http://s6.picofile.com/file/8185856076/snake_and_ladder.zip.html)
کدهای پروژه:

int i = 0;//مشخص کننده ثانیه تایمر int j = 0;//مشخص کننده دقیقه تایمر
int a;//خانه ای که بازیکن در آن قرار داره
Random r;
private void label21_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
resetcolor();
}
private void label101_Click(object sender, EventArgs e)
{

}
private void timer1_Tick(object sender, EventArgs e)
{
label102.Text = System.Convert.ToString(i = i + 1);
if (i == 59)
{
i = 0;
label101.Text = Convert.ToString(j = j + 1);
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
a = 1;


}
private void button3_Click(object sender, EventArgs e)
{
Close();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
i=0;
j=0;
label102.Text = System.Convert.ToString(i);
label101.Text = System.Convert.ToString(j);
a = 1;
resetcolor();


}
private void groupBox1_Enter(object sender, EventArgs e)
{


}
private void button1_Click_1(object sender, EventArgs e)
{
st();
go();
}
private void timer2_Tick(object sender, EventArgs e)
{

}
private void button9_Click(object sender, EventArgs e)
{


}
public void test()
{
if (a == 3 || a == 12 || a == 18 || a == 35 || a == 35 || a == 64 || a == 68 || a == 98 || a == 75)
green();
else if (a == 5 || a == 17 || a == 26 || a == 22 || a == 43 || a == 53 || a == 83 || a == 92)
red();
else if (a == 8 || 1 == 15 || a == 20 || a == 78 || a == 94 || a == 97)
black();
else if (a==100)
{
go();
q4.Text = "شما به پایان بازی رسیدید";
}
}
private void green()
{
go();
Random ran = new Random();
int dd = ran.Next(i, 99);
i = dd;
go();
test();
}
private void red()
{
go();
Random ran = new Random();
int dd = ran.Next(1, 99);
i = dd;
go();
test();
}
private void black()
{
go();
Random ran = new Random();
int dd = ran.Next(1, i);
i = dd;
go();
test();
}
private void go()
{
switch (a)
{
case 1:
q1.BackColor = Color.Red;
break;
case 2:
q2.BackColor = Color.Red;
break;
case 3:
q3.BackColor = Color.Red;
break;
case 4:
q4.BackColor = Color.Red;
break;
case 5:
q5.BackColor = Color.Red;
break;
case 6:
q6.BackColor = Color.Red;
break;
case 7:
q.BackColor = Color.Red;
break;
case 8:
q8.BackColor = Color.Red;
break;
case 9:
q9.BackColor = Color.Red;
break;
case 10:
q10.BackColor = Color.Red;
break;
case 11:
q11.BackColor = Color.Red;
break;
case 12:
q12.BackColor = Color.Red;
break;
case 13:
q13.BackColor = Color.Red;
break;
case 14:
q14.BackColor = Color.Red;
break;
case 15:
q15.BackColor = Color.Red;
break;
case 16:
q16.BackColor = Color.Red;
break;
case 17:
q17.BackColor = Color.Red;
break;
case 18:
q18.BackColor = Color.Red;
break;
case 19:
q19.BackColor = Color.Red;
break;
case 20:
q20.BackColor = Color.Red;
break;
case 21:
q21.BackColor = Color.Red;
break;
case 22:
q22.BackColor = Color.Red;
break;
case 23:
q23.BackColor = Color.Red;
break;
case 24:
q24.BackColor = Color.Red;
break;
case 25:
q25.BackColor = Color.Red;
break;
case 26:
q26.BackColor = Color.Red;
break;
case 27:
q27.BackColor = Color.Red;
break;
case 28:
q28.BackColor = Color.Red;
break;
case 29:
q29.BackColor = Color.Red;
break;
case 30:
q30.BackColor = Color.Red;
break;
case 31:
q31.BackColor = Color.Red;
break;
case 32:
q32.BackColor = Color.Red;
break;
case 33:
q33.BackColor = Color.Red;
break;
case 34:
q34.BackColor = Color.Red;
break;
case 35:
q35.BackColor = Color.Red;
break;
case 36:
q36.BackColor = Color.Red;
break;
case 37:
q37.BackColor = Color.Red;
break;
case 38:
q38.BackColor = Color.Red;
break;
case 39:
q39.BackColor = Color.Red;
break;
case 40:
q40.BackColor = Color.Red;
break;
case 41:
q41.BackColor = Color.Red;
break;
case 42:
q42.BackColor = Color.Red;
break;
case 43:
q43.BackColor = Color.Red;
break;
case 44:
q44.BackColor = Color.Red;
break;
case 45:
q45.BackColor = Color.Red;
break;
case 46:
q46.BackColor = Color.Red;
break;
case 47:
q47.BackColor = Color.Red;
break;
case 48:
q48.BackColor = Color.Red;
break;
case 49:
q49.BackColor = Color.Red;
break;
case 50:
q50.BackColor = Color.Red;
break;
case 51:
q51.BackColor = Color.Red;
break;
case 52:
q52.BackColor = Color.Red;
break;
case 53:
q53.BackColor = Color.Red;
break;
case 54:
q54.BackColor = Color.Red;
break;
case 55:
q55.BackColor = Color.Red;
break;
case 56:
q56.BackColor = Color.Red;
break;
case 57:
q57.BackColor = Color.Red;
break;
case 58:
q58.BackColor = Color.Red;
break;
case 59:
q59.BackColor = Color.Red;
break;
case 60:
q60.BackColor = Color.Red;
break;
case 61:
q61.BackColor = Color.Red;
break;
case 62:
q62.BackColor = Color.Red;
break;
case 63:
q63.BackColor = Color.Red;
break;
case 64:
q64.BackColor = Color.Red;
break;
case 65:
q65.BackColor = Color.Red;
break;
case 66:
q66.BackColor = Color.Red;
break;
case 67:
q67.BackColor = Color.Red;
break;
case 68:
q68.BackColor = Color.Red;
break;
case 69:
q69.BackColor = Color.Red;
break;
case 70:
q70.BackColor = Color.Red;
break;
case 71:
q71.BackColor = Color.Red;
break;
case 72:
q72.BackColor = Color.Red;
break;
case 73:
q73.BackColor = Color.Red;
break;
case 74:
q74.BackColor = Color.Red;
break;
case 75:
q75.BackColor = Color.Red;
break;
case 76:
q76.BackColor = Color.Red;
break;
case 77:
q77.BackColor = Color.Red;
break;
case 78:
q78.BackColor = Color.Red;
break;
case 79:
q79.BackColor = Color.Red;
break;
case 80:
q80.BackColor = Color.Red;
break;
case 81:
q81.BackColor = Color.Red;
break;
case 82:
q82.BackColor = Color.Red;
break;
case 83:
q83.BackColor = Color.Red;
break;
case 84:
q84.BackColor = Color.Red;
break;
case 85:
q85.BackColor = Color.Red;
break;
case 86:
q86.BackColor = Color.Red;
break;
case 87:
q87.BackColor = Color.Red;
break;
case 88:
q88.BackColor = Color.Red;
break;
case 89:
q89.BackColor = Color.Red;
break;
case 90:
q90.BackColor = Color.Red;
break;
case 91:
q91.BackColor = Color.Red;
break;
case 92:
q92.BackColor = Color.Red;
break;
case 93:
q93.BackColor = Color.Red;
break;
case 94:
q94.BackColor = Color.Red;
break;
case 95:
q95.BackColor = Color.Red;
break;
case 96:
q96.BackColor = Color.Red;
break;
case 97:
q97.BackColor = Color.Red;
break;
case 98:
q98.BackColor = Color.Red;
break;
case 99:
q99.BackColor = Color.Red;
break;
case 100:
q100.BackColor = Color.Red;
break;
}
resetcolor();
}
private void st()
{
r = new Random();
int ri = r.Next(1, 7);//عدد تاس
a = ri + a;
if (a > 100)
{
label104.Text = " The End";
}
else
{
switch (ri)
{
case 1:
b1.Visible = true;
b2.Visible = false;
b3.Visible = false;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 2:
b1.Visible = true;
b2.Visible = true;
b3.Visible = false;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 3:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 4:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = false;
b6.Visible = false;
break;
case 5:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = true;
b6.Visible = false;
break;
case 6:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = true;
b6.Visible = true;
break;
}
}

}
private void resetcolor()
{
q3.BackColor = Color.ForestGreen;
q12.BackColor = Color.ForestGreen;
q18.BackColor = Color.ForestGreen;
q35.BackColor = Color.ForestGreen;
q64.BackColor = Color.ForestGreen;
q68.BackColor = Color.ForestGreen;
q64.BackColor = Color.ForestGreen;
q98.BackColor = Color.ForestGreen;
q75.BackColor = Color.ForestGreen;
q5.BackColor = Color.Gold;
q17.BackColor = Color.Gold;
q26.BackColor = Color.Gold;
q22.BackColor = Color.Gold;
q43.BackColor = Color.Gold;
q53.BackColor = Color.Gold;
q83.BackColor = Color.Gold;
q92.BackColor = Color.Gold;
q8.BackColor = Color.Gray;
q15.BackColor = Color.Gray;
q20.BackColor = Color.Gray;
q78.BackColor = Color.Gray;
q94.BackColor = Color.Gray;
q97.BackColor = Color.Gray;
}
}
}
متاسفانه قسمت کد اسکرول نخورد و طولانی شد شرمنده.

hsdnhd
جمعه 11 اردیبهشت 1394, 21:52 عصر
چطور 3 تا گروه 8 تایی عدد بصورت تصادفی و بدون تکرار بین 1 تا 100 پیدا کنم؟
ممنون

hamid_hr
شنبه 12 اردیبهشت 1394, 09:25 صبح
بجای



switch (ri)
{
case 1:
b1.Visible = true;
b2.Visible = false;
b3.Visible = false;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 2:
b1.Visible = true;
b2.Visible = true;
b3.Visible = false;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 3:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = false;
b5.Visible = false;
b6.Visible = false;
break;
case 4:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = false;
b6.Visible = false;
break;
case 5:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = true;
b6.Visible = false;
break;
case 6:
b1.Visible = true;
b2.Visible = true;
b3.Visible = true;
b4.Visible = true;
b5.Visible = true;
b6.Visible = true;
break;
}



بنویس

b1.Visible = ri >= 1;
b2.Visible = ri >= 2;
b3.Visible = ri >= 3;
b4.Visible = ri >= 4;
b5.Visible = ri >= 5;
b6.Visible = ri >= 6;

hamid_hr
شنبه 12 اردیبهشت 1394, 09:33 صبح
بجای




switch (a)
{
case 1:
q1.BackColor = Color.Red;
break;
case 2:
q2.BackColor = Color.Red;
break;
case 3:
q3.BackColor = Color.Red;
break;
case 4:
q4.BackColor = Color.Red;
break;
case 5:
q5.BackColor = Color.Red;
break;
case 6:
q6.BackColor = Color.Red;
break;
case 7:
q.BackColor = Color.Red;
break;
case 8:
q8.BackColor = Color.Red;
break;
case 9:
q9.BackColor = Color.Red;
break;
case 10:
q10.BackColor = Color.Red;
break;
case 11:
q11.BackColor = Color.Red;
break;
case 12:
q12.BackColor = Color.Red;
break;
case 13:
q13.BackColor = Color.Red;
break;
case 14:
q14.BackColor = Color.Red;
break;
case 15:
q15.BackColor = Color.Red;
break;
case 16:
q16.BackColor = Color.Red;
break;
case 17:
q17.BackColor = Color.Red;
break;
case 18:
q18.BackColor = Color.Red;
break;
case 19:
q19.BackColor = Color.Red;
break;
case 20:
q20.BackColor = Color.Red;
break;
case 21:
q21.BackColor = Color.Red;
break;
case 22:
q22.BackColor = Color.Red;
break;
case 23:
q23.BackColor = Color.Red;
break;
case 24:
q24.BackColor = Color.Red;
break;
case 25:
q25.BackColor = Color.Red;
break;
case 26:
q26.BackColor = Color.Red;
break;
case 27:
q27.BackColor = Color.Red;
break;
case 28:
q28.BackColor = Color.Red;
break;
case 29:
q29.BackColor = Color.Red;
break;
case 30:
q30.BackColor = Color.Red;
break;
case 31:
q31.BackColor = Color.Red;
break;
case 32:
q32.BackColor = Color.Red;
break;
case 33:
q33.BackColor = Color.Red;
break;
case 34:
q34.BackColor = Color.Red;
break;
case 35:
q35.BackColor = Color.Red;
break;
case 36:
q36.BackColor = Color.Red;
break;
case 37:
q37.BackColor = Color.Red;
break;
case 38:
q38.BackColor = Color.Red;
break;
case 39:
q39.BackColor = Color.Red;
break;
case 40:
q40.BackColor = Color.Red;
break;
case 41:
q41.BackColor = Color.Red;
break;
case 42:
q42.BackColor = Color.Red;
break;
case 43:
q43.BackColor = Color.Red;
break;
case 44:
q44.BackColor = Color.Red;
break;
case 45:
q45.BackColor = Color.Red;
break;
case 46:
q46.BackColor = Color.Red;
break;
case 47:
q47.BackColor = Color.Red;
break;
case 48:
q48.BackColor = Color.Red;
break;
case 49:
q49.BackColor = Color.Red;
break;
case 50:
q50.BackColor = Color.Red;
break;
case 51:
q51.BackColor = Color.Red;
break;
case 52:
q52.BackColor = Color.Red;
break;
case 53:
q53.BackColor = Color.Red;
break;
case 54:
q54.BackColor = Color.Red;
break;
case 55:
q55.BackColor = Color.Red;
break;
case 56:
q56.BackColor = Color.Red;
break;
case 57:
q57.BackColor = Color.Red;
break;
case 58:
q58.BackColor = Color.Red;
break;
case 59:
q59.BackColor = Color.Red;
break;
case 60:
q60.BackColor = Color.Red;
break;
case 61:
q61.BackColor = Color.Red;
break;
case 62:
q62.BackColor = Color.Red;
break;
case 63:
q63.BackColor = Color.Red;
break;
case 64:
q64.BackColor = Color.Red;
break;
case 65:
q65.BackColor = Color.Red;
break;
case 66:
q66.BackColor = Color.Red;
break;
case 67:
q67.BackColor = Color.Red;
break;
case 68:
q68.BackColor = Color.Red;
break;
case 69:
q69.BackColor = Color.Red;
break;
case 70:
q70.BackColor = Color.Red;
break;
case 71:
q71.BackColor = Color.Red;
break;
case 72:
q72.BackColor = Color.Red;
break;
case 73:
q73.BackColor = Color.Red;
break;
case 74:
q74.BackColor = Color.Red;
break;
case 75:
q75.BackColor = Color.Red;
break;
case 76:
q76.BackColor = Color.Red;
break;
case 77:
q77.BackColor = Color.Red;
break;
case 78:
q78.BackColor = Color.Red;
break;
case 79:
q79.BackColor = Color.Red;
break;
case 80:
q80.BackColor = Color.Red;
break;
case 81:
q81.BackColor = Color.Red;
break;
case 82:
q82.BackColor = Color.Red;
break;
case 83:
q83.BackColor = Color.Red;
break;
case 84:
q84.BackColor = Color.Red;
break;
case 85:
q85.BackColor = Color.Red;
break;
case 86:
q86.BackColor = Color.Red;
break;
case 87:
q87.BackColor = Color.Red;
break;
case 88:
q88.BackColor = Color.Red;
break;
case 89:
q89.BackColor = Color.Red;
break;
case 90:
q90.BackColor = Color.Red;
break;
case 91:
q91.BackColor = Color.Red;
break;
case 92:
q92.BackColor = Color.Red;
break;
case 93:
q93.BackColor = Color.Red;
break;
case 94:
q94.BackColor = Color.Red;
break;
case 95:
q95.BackColor = Color.Red;
break;
case 96:
q96.BackColor = Color.Red;
break;
case 97:
q97.BackColor = Color.Red;
break;
case 98:
q98.BackColor = Color.Red;
break;
case 99:
q99.BackColor = Color.Red;
break;
case 100:
q100.BackColor = Color.Red;
break;
}


بنویس



foreach (Control item in this.Controls)
if (item is Label)
if (item.Name.Equals("q" + a.ToString()))
{
item.BackColor = Color.Red;
break;
}

hsdnhd
شنبه 12 اردیبهشت 1394, 10:06 صبح
واقعا از لطفتون ممنون
ممکنه بگید چطوری میتونم 3 تا گروه 8 تایی بسازم که با اعداد تصادفی بین 1 تا 100 و بدون تکرار بسازم؟الان درکهای پایین من بصورت دستی اعداد رو مشخص کردم میخوام بصورت تصادفی انتخاب شن و توی این کد ها جایگزین بشن.

بجای این کد :

if (a == 3 || a == 12 || a == 18 || a == 35 || a == 35 || a == 64 || a == 68 || a == 98 || a == 75)
green();
else if (a == 5 || a == 17 || a == 26 || a == 22 || a == 43 || a == 53 || a == 83 || a == 92)
red();
else if (a == 8 || 1 == 15 || a == 20 || a == 78 || a == 94 || a == 97)
black();
else if (a==100)
{
go();
q4.Text = "شما به پایان بازی رسیدید";
}
و این کد میخوام که عددهاشون نیز یکی هستند برای مشخص کردن خانه های رنگی ازشون استفاده میکنم:

q3.BackColor = Color.ForestGreen; q12.BackColor = Color.ForestGreen;
q18.BackColor = Color.ForestGreen;
q35.BackColor = Color.ForestGreen;
q64.BackColor = Color.ForestGreen;
q68.BackColor = Color.ForestGreen;
q64.BackColor = Color.ForestGreen;
q98.BackColor = Color.ForestGreen;
q75.BackColor = Color.ForestGreen;
q5.BackColor = Color.Gold;
q17.BackColor = Color.Gold;
q26.BackColor = Color.Gold;
q22.BackColor = Color.Gold;
q43.BackColor = Color.Gold;
q53.BackColor = Color.Gold;
q83.BackColor = Color.Gold;
q92.BackColor = Color.Gold;
q8.BackColor = Color.Gray;
q15.BackColor = Color.Gray;
q20.BackColor = Color.Gray;
q78.BackColor = Color.Gray;
q94.BackColor = Color.Gray;
q97.BackColor = Color.Gray;

hsdnhd
یک شنبه 13 اردیبهشت 1394, 12:31 عصر
راه هست که بتونم توی پایگاه داده Sql خودم اعداد تصادفی رو تولید کنم و در هردفعه اجرا برنامه اون اعداد رو بخونم؟