回答編集履歴
1
更新
test
CHANGED
@@ -30,32 +30,57 @@
|
|
30
30
|
{
|
31
31
|
public partial class Form1 : Form
|
32
32
|
{
|
33
|
+
private DataGridView dataGridView1;
|
34
|
+
private Timer timer1;
|
35
|
+
private object handle;
|
36
|
+
|
33
37
|
public Form1()
|
34
38
|
{
|
35
39
|
InitializeComponent();
|
36
40
|
|
41
|
+
dataGridView1 = new DataGridView
|
42
|
+
{
|
43
|
+
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
|
44
|
+
Dock = DockStyle.Fill,
|
45
|
+
Parent = this,
|
46
|
+
};
|
47
|
+
|
48
|
+
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Board", });
|
49
|
+
|
50
|
+
for (int i = 1; i <= 8; i++)
|
51
|
+
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = $"in {i}", });
|
52
|
+
|
37
53
|
dataGridView1.Rows.Add("hoge");
|
38
54
|
dataGridView1.Rows.Add("fuga");
|
55
|
+
dataGridView1.Rows.Add("piyo");
|
39
56
|
|
57
|
+
|
58
|
+
timer1 = new Timer { Interval = 1000, };
|
59
|
+
timer1.Tick += Timer1_Tick;
|
40
60
|
timer1.Start();
|
41
61
|
}
|
42
62
|
|
43
|
-
private object handle;
|
44
63
|
private void Timer1_Tick(object sender, EventArgs e)
|
45
64
|
{
|
46
65
|
int xInput = Top16.GetInputs(handle);
|
47
66
|
|
48
67
|
// 0埋めで8桁取得(上位桁の0を取り逃さないように)
|
49
68
|
string binaryStr = Convert.ToString(xInput, 2).PadLeft(8, '0');
|
50
|
-
Debug.WriteLine(binaryStr);
|
51
69
|
|
70
|
+
// 確認用(出力ウィンドウ)
|
71
|
+
Debug.Write($"\n{binaryStr}");
|
72
|
+
Debug.Write($" →逆順 {string.Join("", binaryStr.Reverse())}");
|
73
|
+
Debug.WriteLine($" →反転 {string.Join("", binaryStr.Reverse().Select(x => x == '0' ? '1' : '0'))}");
|
74
|
+
|
75
|
+
|
76
|
+
// hoge行の処理
|
52
77
|
int count = 0;
|
53
78
|
foreach (char inputBinaryNum in binaryStr.Reverse()) // 右が1なのでひっくり返す
|
54
79
|
{
|
55
80
|
count++;
|
56
|
-
if (inputBinaryNum == '0')
|
81
|
+
if (inputBinaryNum == '0') // 0だったら入力有
|
57
82
|
{
|
58
|
-
Debug.Write
|
83
|
+
Debug.Write($"Input{count}, ");
|
59
84
|
dataGridView1.Rows[0].Cells[count].Style.BackColor = Color.Blue;
|
60
85
|
}
|
61
86
|
else
|
@@ -63,27 +88,68 @@
|
|
63
88
|
dataGridView1.Rows[0].Cells[count].Style.BackColor = Color.White;
|
64
89
|
}
|
65
90
|
}
|
91
|
+
Debug.WriteLine("");
|
66
92
|
|
67
93
|
|
68
|
-
|
94
|
+
// fuga行の処理
|
69
95
|
Flag flag = (Flag)~xInput; // 各ビット反転してenumにキャスト
|
70
96
|
Debug.WriteLine(flag);
|
71
97
|
|
72
|
-
var row = dataGridView1.Rows[1];
|
98
|
+
var row1 = dataGridView1.Rows[1];
|
73
99
|
|
74
100
|
// ループにしずらいのでこういうのは向かないかなw
|
101
|
+
if (flag.HasFlag(Flag.Input1)) row1.Cells[1].Style.BackColor = Color.Blue;
|
75
|
-
row.Cells[1].Style.BackColor =
|
102
|
+
else row1.Cells[1].Style.BackColor = Color.White;
|
103
|
+
// 以下同じ意味
|
76
|
-
row.Cells[2].Style.BackColor = flag.HasFlag(Flag.Input2) ? Color.Blue : Color.White;
|
104
|
+
row1.Cells[2].Style.BackColor = flag.HasFlag(Flag.Input2) ? Color.Blue : Color.White;
|
77
|
-
row.Cells[3].Style.BackColor = flag.HasFlag(Flag.Input3) ? Color.Blue : Color.White;
|
105
|
+
row1.Cells[3].Style.BackColor = flag.HasFlag(Flag.Input3) ? Color.Blue : Color.White;
|
78
|
-
row.Cells[4].Style.BackColor = flag.HasFlag(Flag.Input4) ? Color.Blue : Color.White;
|
106
|
+
row1.Cells[4].Style.BackColor = flag.HasFlag(Flag.Input4) ? Color.Blue : Color.White;
|
79
|
-
row.Cells[5].Style.BackColor = flag.HasFlag(Flag.Input5) ? Color.Blue : Color.White;
|
107
|
+
row1.Cells[5].Style.BackColor = flag.HasFlag(Flag.Input5) ? Color.Blue : Color.White;
|
80
|
-
row.Cells[6].Style.BackColor = flag.HasFlag(Flag.Input6) ? Color.Blue : Color.White;
|
108
|
+
row1.Cells[6].Style.BackColor = flag.HasFlag(Flag.Input6) ? Color.Blue : Color.White;
|
81
|
-
row.Cells[7].Style.BackColor = flag.HasFlag(Flag.Input7) ? Color.Blue : Color.White;
|
109
|
+
row1.Cells[7].Style.BackColor = flag.HasFlag(Flag.Input7) ? Color.Blue : Color.White;
|
82
|
-
row.Cells[8].Style.BackColor = flag.HasFlag(Flag.Input8) ? Color.Blue : Color.White;
|
110
|
+
row1.Cells[8].Style.BackColor = flag.HasFlag(Flag.Input8) ? Color.Blue : Color.White;
|
111
|
+
|
83
112
|
|
84
113
|
// 複数条件はわかりやすい
|
85
|
-
if (flag.HasFlag(Flag.Input1) && flag.HasFlag(Flag.Input3))
|
114
|
+
//if (flag.HasFlag(Flag.Input1) && flag.HasFlag(Flag.Input3)) row.Cells[3].Style.BackColor = Color.Red;
|
115
|
+
// ↑↓意味は同じ
|
116
|
+
if (flag.HasFlag(Flag.Input1 | Flag.Input3)) row1.Cells[3].Style.BackColor = Color.Red;
|
117
|
+
|
118
|
+
// 意味のある名前を付けたければこうでもいい
|
119
|
+
//if (flag.HasFlag(Flag.Input1_and_3)) row.Cells[3].Style.BackColor = Color.Red;
|
120
|
+
|
121
|
+
|
122
|
+
//// piyo行の処理
|
123
|
+
//var row2 = dataGridView1.Rows[2];
|
124
|
+
|
125
|
+
//for (var i = 1; i <= 8; i++)
|
126
|
+
//{
|
86
|
-
row.Cells[
|
127
|
+
// row2.Cells[i].Style.BackColor = Color.White;
|
128
|
+
|
129
|
+
// // インデックス(C# 8.0以上)
|
130
|
+
// // [インデックス/範囲処理 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C](https://ufcpp.net/study/csharp/data/dataranges/)
|
131
|
+
// if (binaryStr[^i] == '0') row2.Cells[i].Style.BackColor = Color.Blue;
|
132
|
+
//}
|
133
|
+
|
134
|
+
//// リスト パターン(C# 11以上)
|
135
|
+
//// [パターン マッチング - C# によるプログラミング入門 | ++C++; // 未確認飛行 C](https://ufcpp.net/study/csharp/datatype/patterns/?p=2#list)
|
136
|
+
//row2.Cells[3].Style.BackColor = binaryStr switch
|
137
|
+
//{
|
138
|
+
// // Input1・Input3の入力があり、Input8の入力がなければ。。。
|
139
|
+
// ['1', .., '0', _, '0'] => Color.Green,
|
140
|
+
|
141
|
+
// // Input1・Input3(・Input8)の入力があれば。。。
|
142
|
+
// // ↑に当てはまらない時なのでここに入るのはInput8もONなことになる
|
143
|
+
// [.., '0', _, '0'] => Color.Red,
|
144
|
+
|
145
|
+
// [.., '0', _, _] => Color.Blue, // Input3の入力があれば。。。
|
146
|
+
|
147
|
+
// _ => Color.White, // default
|
148
|
+
//};
|
149
|
+
|
150
|
+
//// ifを並べたほうがわかりやすい場合も?
|
151
|
+
////if (binaryStr is [.., '0', _, '0']) row2.Cells[3].Style.BackColor = Color.Red;
|
152
|
+
////if (binaryStr is ['1', .., '0', _, '0']) row2.Cells[3].Style.BackColor = Color.Green;
|
87
153
|
}
|
88
154
|
|
89
155
|
[Flags]
|
@@ -100,14 +166,16 @@
|
|
100
166
|
Input6 = 32,
|
101
167
|
Input7 = 64,
|
102
168
|
Input8 = 128,
|
169
|
+
|
170
|
+
Input1_and_3 = Input1 | Input3, // 複数条件に意味のある名前を付けたければ
|
103
171
|
}
|
104
172
|
|
105
173
|
private class Top16 // 雑いw
|
106
174
|
{
|
107
175
|
private static Random random = new Random();
|
108
|
-
i
|
176
|
+
public static int GetInputs(object handle) => random.Next(256);
|
109
177
|
}
|
110
178
|
}
|
111
179
|
}
|
112
180
|
```
|
113
|
-
![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2023-11
|
181
|
+
![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2023-12-15/73ca81f8-46fb-419e-a6ba-81c65ee520de.gif)
|