5年前に作ったプログラムを添削する
こんにちは!ねずみとりです。成長を確認するためにプログラミングを始めて1年目に作成したプログラムを自分で添削します。
作ったもの
以下の画像のようなリバーシのアプリを作成していたようです。右に石の数と今がどちらの番かを表示させています。パスは実装できなかったのか手動でするようですね。石の白黒はボタンの上にテキストで表示しているようです。石が左下に寄ってしまっているのが気になります。プログラミング言語はC#、フレームワークはフォームアプリケーションです。
プログラムの改善できる点
変数名がてきとう
taやaは何に使う変数なのかわかりません。kauntはcountのことでしょうか?kuro、siroとローマ字の変数名も良くないですね。
たぶん必要ないstatic
これを作っているときはよくわからずにpublic staticをつけていたのだと考えられます。
public static int ta = 2;
public static int[] ou = new int[]{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ,2,2,2,2 };
// int kaunt=0;
public static int a = 0;
public static int b = 0;
int kuro = 0;
int siro = 0;
public class Pr
{
恐ろしいコピペコード
石を表示させるコードが長いです。具体的にどのようにして処理をしているのかは覚えていませんが、配列や関数を使って効率化できることは分かります。
if (ou[73] == 1)
{
button64.Text = "●";
}
if (ou[72] == 1)
{
button63.Text = "●";
}
if (ou[71] == 1)
{
button62.Text = "●";
}
if (ou[70] == 1)
{
button61.Text = "●";
}
if (ou[69] == 1)
{
button60.Text = "●";
}
if (ou[68] == 1)
{
button59.Text = "●";
}
if (ou[67] == 1)
{
button58.Text = "●";
}
if (ou[66] == 1)
{
button57.Text = "●";
}
if (ou[65] == 1)
{
button56.Text = "●";
}
if (ou[64] == 1)
{
button55.Text = "●";
}
if (ou[63] == 1)
{
button54.Text = "●";
}
if (ou[62] == 1)
{
button53.Text = "●";
}
if (ou[61] == 1)
{
button52.Text = "●";
}
if (ou[60] == 1)
{
button51.Text = "●";
}
if (ou[59] == 1)
{
button50.Text = "●";
}
if (ou[58] == 1)
{
button49.Text = "●";
}
if (ou[57] == 1)
{
button48.Text = "●";
}
if (ou[56] == 1)
{
button47.Text = "●";
}
if (ou[55] == 1)
{
button46.Text = "●";
}
if (ou[54] == 1)
{
button45.Text = "●";
}
if (ou[53] == 1)
{
button44.Text = "●";
}
if (ou[52] == 1)
{
button43.Text = "●";
}
if (ou[51] == 1)
{
button42.Text = "●";
}
if (ou[50] == 1)
{
button41.Text = "●";
}
if (ou[49] == 1)
{
button40.Text = "●";
}
if (ou[48] == 1)
{
button39.Text = "●";
}
if (ou[47] == 1)
{
button38.Text = "●";
}
if (ou[46] == 1)
{
button37.Text = "●";
}
if (ou[45] == 1)
{
button36.Text = "●";
}
if (ou[44] == 1)
{
button35.Text = "●";
}
if (ou[43] == 1)
{
button34.Text = "●";
}
if (ou[42] == 1)
{
button33.Text = "●";
}
if (ou[41] == 1)
{
button32.Text = "●";
}
if (ou[40] == 1)
{
button31.Text = "●";
}
if (ou[39] == 1)
{
button30.Text = "●";
}
if (ou[38] == 1)
{
button29.Text = "●";
}
if (ou[37] == 1)
{
button28.Text = "●";
}
if (ou[36] == 1)
{
button27.Text = "●";
}
if (ou[35] == 1)
{
button26.Text = "●";
}
if (ou[34] == 1)
{
button25.Text = "●";
}
if (ou[33] == 1)
{
button24.Text = "●";
}
if (ou[32] == 1)
{
button23.Text = "●";
}
if (ou[31] == 1)
{
button22.Text = "●";
}
if (ou[30] == 1)
{
button21.Text = "●";
}
if (ou[29] == 1)
{
button20.Text = "●";
}
if (ou[28] == 1)
{
button19.Text = "●";
}
if (ou[27] == 1)
{
button18.Text = "●";
}
if (ou[26] == 1)
{
button17.Text = "●";
}
if (ou[25] == 1)
{
button16.Text = "●";
}
if (ou[24] == 1)
{
button15.Text = "●";
}
if (ou[23] == 1)
{
button14.Text = "●";
}
if (ou[22] == 1)
{
button13.Text = "●";
}
if (ou[21] == 1)
{
button12.Text = "●";
}
if (ou[20] == 1)
{
button11.Text = "●";
}
if (ou[19] == 1)
{
button10.Text = "●";
}
if (ou[18] == 1)
{
button9.Text = "●";
}
if (ou[17] == 1)
{
button8.Text = "●";
}
if (ou[16] == 1)
{
button7.Text = "●";
}
if (ou[15] == 1)
{
button6.Text = "●";
}
if (ou[14] == 1)
{
button5.Text = "●";
}
if (ou[13] == 1)
{
button4.Text = "●";
}
if (ou[12] == 1)
{
button3.Text = "●";
}
if (ou[11] == 1)
{
button2.Text = "●";
}
if (ou[10] == 1)
{
button1.Text = "●";
}
if (ou[73] == 0)
{
button64.Text = "〇";
}
if (ou[72] == 0)
{
button63.Text = "〇";
}
if (ou[71] == 0)
{
button62.Text = "〇";
}
if (ou[70] == 0)
{
button61.Text = "〇";
}
if (ou[69] == 0)
{
button60.Text = "〇";
}
if (ou[68] == 0)
{
button59.Text = "〇";
}
if (ou[67] == 0)
{
button58.Text = "〇";
}
if (ou[66] == 0)
{
button57.Text = "〇";
}
if (ou[65] == 0)
{
button56.Text = "〇";
}
if (ou[64] == 0)
{
button55.Text = "〇";
}
if (ou[63] == 0)
{
button54.Text = "〇";
}
if (ou[62] == 0)
{
button53.Text = "〇";
}
if (ou[61] == 0)
{
button52.Text = "〇";
}
if (ou[60] == 0)
{
button51.Text = "〇";
}
if (ou[59] == 0)
{
button50.Text = "〇";
}
if (ou[58] == 0)
{
button49.Text = "〇";
}
if (ou[57] == 0)
{
button48.Text = "〇";
}
if (ou[56] == 0)
{
button47.Text = "〇";
}
if (ou[55] == 0)
{
button46.Text = "〇";
}
if (ou[54] == 0)
{
button45.Text = "〇";
}
if (ou[53] == 0)
{
button44.Text = "〇";
}
if (ou[52] == 0)
{
button43.Text = "〇";
}
if (ou[51] == 0)
{
button42.Text = "〇";
}
if (ou[50] == 0)
{
button41.Text = "〇";
}
if (ou[49] == 0)
{
button40.Text = "〇";
}
if (ou[48] == 0)
{
button39.Text = "〇";
}
if (ou[47] == 0)
{
button38.Text = "〇";
}
if (ou[46] == 0)
{
button37.Text = "〇";
}
if (ou[45] == 0)
{
button36.Text = "〇";
}
if (ou[44] == 0)
{
button35.Text = "〇";
}
if (ou[43] == 0)
{
button34.Text = "〇";
}
if (ou[42] == 0)
{
button33.Text = "〇";
}
if (ou[41] == 0)
{
button32.Text = "〇";
}
if (ou[40] == 0)
{
button31.Text = "〇";
}
if (ou[39] == 0)
{
button30.Text = "〇";
}
if (ou[38] == 0)
{
button29.Text = "〇";
}
if (ou[37] == 0)
{
button28.Text = "〇";
}
if (ou[36] == 0)
{
button27.Text = "〇";
}
if (ou[35] == 0)
{
button26.Text = "〇";
}
if (ou[34] == 0)
{
button25.Text = "〇";
}
if (ou[33] == 0)
{
button24.Text = "〇";
}
if (ou[32] == 0)
{
button23.Text = "〇";
}
if (ou[31] == 0)
{
button22.Text = "〇";
}
if (ou[30] == 0)
{
button21.Text = "〇";
}
if (ou[29] == 0)
{
button20.Text = "〇";
}
if (ou[28] == 0)
{
button19.Text = "〇";
}
if (ou[27] == 0)
{
button18.Text = "〇";
}
if (ou[26] == 0)
{
button17.Text = "〇";
}
if (ou[25] == 0)
{
button16.Text = "〇";
}
if (ou[24] == 0)
{
button15.Text = "〇";
}
if (ou[23] == 0)
{
button14.Text = "〇";
}
if (ou[22] == 0)
{
button13.Text = "〇";
}
if (ou[21] == 0)
{
button12.Text = "〇";
}
if (ou[20] == 0)
{
button11.Text = "〇";
}
if (ou[19] == 0)
{
button10.Text = "〇";
}
if (ou[18] == 0)
{
button9.Text = "〇";
}
if (ou[17] == 0)
{
button8.Text = "〇";
}
if (ou[16] == 0)
{
button7.Text = "〇";
}
if (ou[15] == 0)
{
button6.Text = "〇";
}
if (ou[14] == 0)
{
button5.Text = "〇";
}
if (ou[13] == 0)
{
button4.Text = "〇";
}
if (ou[12] == 0)
{
button3.Text = "〇";
}
if (ou[11] == 0)
{
button2.Text = "〇";
}
if (ou[10] == 0)
{
button1.Text = "〇";
}
何をやっているのか分からない関数
まず関数名がppと何をやる関数なのかわかりません。関数の中身も長く、何をやっているのか分かりにくくなっています。関数の中身は長くても数100行程度にするべきですね。逆にこのコードでそれっぽく動くのが不思議です。
public void pp()
{
if (ou[a] == 2 && ta % 2 == 0 && (ou[a - 1] == 0 || ou[a + 1] == 0 || ou[a - 8] == 0 || ou[a + 8] == 0 || ou[a - 7] == 0 || ou[a + 7] == 0 || ou[a - 9] == 0 || ou[a + 9] == 0))
{
//ここから左
// MessageBox.Show("出た");
a -= 1;
while ( ou[a]==0)
{
if (a==10|| a == 18 || a == 26 || a == 34 || a == 42 || a == 50 || a == 58 || a == 66 || a == 17 || a == 25 || a == 33 || a == 41 || a == 49 || a == 57 || a == 65 || a == 73)
{
a = b;
break;
}
a -= 1;
}
if ( ou[a]==1 && ou[a+1] == 0)
{
while(a!=b )///////////////////////////////////////////////////
{
a++;
ou[a] = 1; //MessageBox.Show("出た");
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a + 1] == 2) || (ou[a] == 1 && ou[a + 1] == 1))
{
a=b;
}
//ここから下
//MessageBox.Show("黒左"+a.ToString());
a += 8;
while (ou[a] == 0)
{
if (a == 66 || a == 67 || a == 68 || a == 69 || a == 70 || a == 71 || a == 72 || a == 73 || a == 75 || a == 76 || a == 77 || a == 78 || a == 79 || a == 80 || a == 81 || a == 82)
{
a = b;
break;
}
a += 8;
}
if (ou[a] == 1 && ou[a -8] == 0)
{
while (a != b)
{
a-= 8;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a - 8] == 2) || (ou[a] == 1 && ou[a - 8] == 1))
{
a =b;
}
//MessageBox.Show("黒下"+a.ToString());
//ここから右上
a -= 7;
while (ou[a] == 0)
{
if (a==9||a == 1 || a == 0 || a == 2 || a == 3 || a ==11||a==10||a == 12 || a == 4 || a == 13 || a == 5 || a == 14 || a == 6 || a == 15 || a == 7 || a == 16 || a == 8 || a == 17 || a == 10 || a == 25 || a == 18 || a == 33 || a == 26 || a == 41 || a == 34 || a == 49 || a == 42 || a == 57 || a == 50 || a == 65 || a == 58 || a == 73 || a == 66 )
{
a = b;
break;
}
a -= 7;
}
if (ou[a] == 1 && ou[a + 7] == 0)
{
while (a != b)
{
a += 7;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a + 7] == 2) || (ou[a] == 1 && ou[a +7] == 1))
{
a =b;
}
// MessageBox.Show("黒右上"+a.ToString());
//ここから右下
a += 9;
while (ou[a] == 0)
{
if (a == 33 || a == 42 || a == 41 || a == 50 || a == 49 || a == 58 || a == 57 || a == 66 || a == 65 || a == 74 || a == 73 || a == 82 || a == 68 || a == 77 || a == 69 || a == 78 || a == 70 || a == 79 || a == 71 || a == 80 || a == 72 || a == 81 || a == 17 || a == 26 || a == 25 || a == 34 || a == 66 || a == 75 || a == 67 || a == 76)
{
a = b;
break;
}
a += 9;
}
if (ou[a] == 1 && ou[a -9] == 0)
{
while (a != b)
{
a -= 9;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a - 9] == 2) || (ou[a] == 1 && ou[a - 9] == 1))
{
a =b;
}
//ここから右
//MessageBox.Show("黒右下"+a.ToString());
a += 1;
while (ou[a] == 0)
{
if (a == 17 || a == 18 || a == 25 || a == 26 || a == 33 || a == 34 || a == 41 || a == 42 || a == 49 || a == 50 || a == 57 || a == 58 || a == 65 || a == 66 || a == 73 || a == 74)
{
a = b;
break;
}
a += 1;
}
if (ou[a] == 1 && ou[a - 1] == 0)
{
while (a != b )
{
a--;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a -1] == 2) || (ou[a] == 1 && ou[a -1] == 1))
{
a=b;
}
//ここから上
// MessageBox.Show("黒右"+a.ToString());
a -= 8;
while (ou[a] == 0)
{
if (a == 10 || a == 2 || a == 11 || a == 3 || a == 12 || a == 4 || a == 13 || a == 5 || a == 14 || a == 6 || a == 15 || a == 7 || a == 16 || a == 8 || a == 17 || a == 9)
{
a = b;
break;
}
a -= 8;
}
if (ou[a] == 1 && ou[a + 8] == 0)
{
while (a != b)
{
a += 8;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a + 8] == 2) || (ou[a] == 1 && ou[a + 8] == 1))
{
a =b;
}
//ここから左上
// MessageBox.Show("黒上"+a.ToString());
a -= 9;
while (ou[a] == 0)
{
if (a == 15 || a == 6 || a == 14 || a == 5 || a == 13 || a == 4 || a == 12 || a == 3 || a == 11 || a == 2 || a == 10 || a == 1 || a == 18 || a == 9 || a == 26 || a == 17 || a == 34 || a == 25 || a == 42 || a == 33 || a == 50 || a == 41 || a == 16 || a == 7 || a == 17 || a == 8 || a == 58 || a == 49 || a == 66 || a == 57)
{
a = b;
break;
}
a -= 9;
}
if (ou[a] == 1 && ou[a + 9] == 0)
{
while (a != b)
{
a += 9;
ou[a] = 1;
}
}
else if (ou[a] == 2||(ou[a] == 1 && ou[a + 9] == 2) || (ou[a] == 1 && ou[a + 9] == 1))//||以降いらないかも
{
a =b; //MessageBox.Show("出た");
}
//ここから左下
// MessageBox.Show("黒左上"+a.ToString());
a += 7;
while (ou[a] == 0)
{
if (a==17||a==18||a==25||a == 26 || a == 33 || a == 34 || a == 41 || a == 42 || a == 49 || a == 50 || a == 57 || a == 58 || a == 65 || a == 66 || a == 73 || a == 67 || a == 74 || a == 68 || a == 75 || a == 69 || a == 76 || a == 70 || a == 77 || a == 71 || a == 78 || a == 10 || a == 72 || a == 73 || a == 79 || a == 80)
{
a = b;
break;
}
a += 7;
}
if (ou[a] == 1 && ou[a -7] == 0)
{
while (a != b)
{
a -= 7;
ou[a] = 1;
}
}
else if (ou[a] == 2 || (ou[a] == 1 && ou[a - 7] == 2) || (ou[a] == 1 && ou[a - 7] == 1))
{
a =b;
}
if (ou[a]==1)
{
ta++;
}
//MessageBox.Show("黒左下"+a.ToString());
}//最初のいふ
else if (ou[a] == 2 && ta % 2 == 1 && (ou[a - 1] == 1 || ou[a + 1] == 1 || ou[a - 8] == 1 || ou[a + 8] == 1 || ou[a - 7] == 1 || ou[a + 7] == 1 || ou[a - 9] == 1 || ou[a + 9] == 1))
{
//ここから左
// MessageBox.Show("出た");
a -= 1;
while (ou[a] == 1)
{
if (a == 10 || a == 18 || a == 26 || a == 34 || a == 42 || a == 50 || a == 58 || a == 66 || a == 17 || a == 25 || a == 33 || a == 41 || a == 49 || a == 57 || a == 65 || a == 73)
{
a = b;
break;
}
a -= 1;
}
if (ou[a] == 0 && ou[a + 1] == 1)
{
while (a != b)
{
a++;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a + 1] == 2) || (ou[a] == 0 && ou[a + 1] == 0))
{
a=b;
}
//ここから下
// MessageBox.Show("白左"+a.ToString());
a += 8;
while (ou[a] == 1)
{
if (a == 66 || a == 67 || a == 68 || a == 69 || a == 70 || a == 71 || a == 72 || a == 73 || a == 75 || a == 76 || a == 77 || a == 78 || a == 79 || a == 80 || a == 81 || a == 82)
{
a = b;
break;
}
a += 8;
}
if (ou[a] == 0 && ou[a -8] == 1)
{
while (a != b)
{
a -= 8;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a - 8] == 2) || (ou[a] == 0 && ou[a - 8] == 0))
{
a =b;
}
// MessageBox.Show("白下" + a.ToString());
//ここから右上
a -= 7;
while (ou[a] == 1)
{
if (a == 9 || a == 1 || a == 0 || a == 2 || a == 3 || a == 11 || a == 10 || a == 12 || a == 4 || a == 13 || a == 5 || a == 14 || a == 6 || a == 15 || a == 7 || a == 16 || a == 8 || a == 17 || a == 10 || a == 25 || a == 18 || a == 33 || a == 26 || a == 41 || a == 34 || a == 49 || a == 42 || a == 57 || a == 50 || a == 65 || a == 58 || a == 73 || a == 66)
{
a = b;
break;
}
a -= 7;
}
if (ou[a] == 0 && ou[a + 7] == 1)
{
while (a != b)
{
a += 7;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a + 7] == 2) || (ou[a] == 0 && ou[a +7] == 0))
{
a =b;
}
//MessageBox.Show("白右上" + a.ToString());
//ここから右下
a += 9;
while (ou[a] == 1)
{
if (a == 33 || a == 42 || a == 41 || a == 50 || a == 49 || a == 58 || a == 57 || a == 66 || a == 65 || a == 74 || a == 73 || a == 82 || a == 68 || a == 77 || a == 69 || a == 78 || a == 70 || a == 79 || a == 71 || a == 80 || a == 72 || a == 81 || a == 17 || a == 26 || a == 25 || a == 34 || a == 66 || a == 75 || a == 67 || a == 76)
{
a = b;
break;
}
a += 9;
}
if (ou[a] == 0 && ou[a -9] == 1)
{
while (a != b)
{
a -= 9;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a -9] == 2) || (ou[a] == 0 && ou[a - 9] == 0))
{
a =b;
}
// MessageBox.Show("白右下" + a.ToString());
//ここから右
a += 1;
while (ou[a] == 1)
{
if (a == 17 || a == 18 || a == 25 || a == 26 || a == 33 || a == 34 || a == 41 || a == 42 || a == 49 || a == 50 || a == 57 || a == 58 || a == 65 || a == 66 || a == 73 || a == 74)
{
a = b;
break;
}
a += 1;
}
if (ou[a] == 0 && ou[a - 1] == 1)
{
while (a != b)
{
a--;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a - 1] == 2) || (ou[a] == 0 && ou[a - 1] == 0))
{
a=b;
}
//ここから上
//MessageBox.Show("白右" + a.ToString());
a -= 8;
while (ou[a] == 1)
{
if (a == 10 || a == 2 || a == 11 || a == 3 || a == 12 || a == 4 || a == 13 || a == 5 || a == 14 || a == 6 || a == 15 || a == 7 || a == 16 || a == 8 || a == 17 || a == 9)
{
a = b;
break;
}
a -= 8;
}
if (ou[a] == 0 && ou[a + 8] == 1)
{
while (a != b)
{
a += 8;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a + 8] == 2) || (ou[a] == 0 && ou[a +8] == 0))
{
a =b;
}
//ここから左上
//MessageBox.Show("白上" + a.ToString());
a -= 9;
while (ou[a] == 1)
{
if (a == 15 || a == 6 || a == 14 || a == 5 || a == 13 || a == 4 || a == 12 || a == 3 || a == 11 || a == 2 || a == 10 || a == 1 || a == 18 || a == 9 || a == 26 || a == 17 || a == 34 || a == 25 || a == 42 || a == 33 || a == 50 || a == 41 || a == 58 || a == 49 || a == 66 || a == 57 || a == 16 || a == 7 || a == 17 || a == 8)
{
a = b;
break;
}
a -= 9;
}
if (ou[a] == 0 && ou[a + 9] == 1)
{
while (a != b)
{
a += 9;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a + 9] == 2) || (ou[a] == 0 && ou[a +9] == 0))
{
a =b;
}
//ここから左下
//MessageBox.Show("白左上" + a.ToString());
a += 7;
while (ou[a] == 1)
{
if (a == 17 || a == 18 || a == 25 || a == 26 || a == 33 || a == 34 || a == 41 || a == 42 || a == 49 || a == 50 || a == 57 || a == 58 || a == 65 || a == 66 || a == 73 || a == 67 || a == 74 || a == 68 || a == 75 || a == 69 || a == 76 || a == 70 || a == 77 || a == 71 || a == 78 || a == 10 || a == 72 || a == 79 || a == 73 || a == 80)
{
a = b;
break;
}
a += 7;
}
if (ou[a] == 0 && ou[a -7] == 1)
{
while (a != b)
{
a -= 7;
ou[a] = 0;
}
}
else if (ou[a] == 2 || (ou[a] == 0 && ou[a -7] == 2) || (ou[a] == 0 && ou[a - 7] == 0))
{
a =b;
}
//MessageBox.Show("白左下" + a.ToString());
if (ou[a] == 0)
{ ta++; }
}//最初のいふ
else
{
// MessageBox.Show(a.ToString());
// MessageBox.Show("リターン");
return;
}
}
}
おわり
張り付けたコードが非常に長いためここまで見ている人はいないのではないでしょうか。見て頂けたのであればありがとうございます。
この記事が気に入ったらサポートをしてみませんか?