チェス盤からタイルをチェックするために呼び出すコードが非常に長くなり、同じタイル名のピクチャボックスに適切なイメージが表示されます。コードを短縮する動的イメージ名
private void DisplayBoardDisplayTile(string xtile, string piece)
{
if (xtile == "a1")
{
if (piece == "0000") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0000; } //empty
if (piece == "0001") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0001; } //white pawn
if (piece == "0010") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0010; } //white rook
if (piece == "0011") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0011; } //white knight
if (piece == "0100") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0100; } //white bishop
if (piece == "0101") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0101; } //white queen
if (piece == "0110") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0110; } //white king
if (piece == "0111") { a1.Image = WindowsFormsApplication5.Properties.Resources.S0111; } //black pawn
if (piece == "1000") { a1.Image = WindowsFormsApplication5.Properties.Resources.S1000; } //black rook
if (piece == "1001") { a1.Image = WindowsFormsApplication5.Properties.Resources.S1001; } //black knight
if (piece == "1010") { a1.Image = WindowsFormsApplication5.Properties.Resources.S1010; } //black bishop
if (piece == "1011") { a1.Image = WindowsFormsApplication5.Properties.Resources.S1011; } //black queen
if (piece == "1100") { a1.Image = WindowsFormsApplication5.Properties.Resources.S1100; } //black king
}
完全なコードは、このリンクである:タイルが網掛けされhttps://pastebin.com/XLbEeZZH
場合は、私が「S」で始まるイメージ名を使用しない場合は「U」。 また、ピースの値がイメージ名とほとんど同じであるピースをチェックします。
私は
tiles[xtile].Image = ?????."S"+piece;
または似たような名前のイメージの辞書を利用する(可能な場合)、このような方法でコードを短くしたいです。
ここには私が使ったimage namesのサンプルがあります。
これは学校のプロジェクトのように見えますが、コードの構造をどの程度変更できますか? –
学校のプロジェクトではありません。クラス変数はそのまま維持してください(xtile&piece)。 –
'tiles [xtile] .Image =(Image)Resources.ResourceManager.GetObject(" S "+ piece); ' –