나는 플레이어가 폼에서 차를 운전할 수있는 간단한 WinForms 게임을 가지고있다. 각기 다른 플레이어가 운전하는 차량이 더 많을 수 있습니다.간단한 게임에서 멀티 플레이어 키 설정을 저장하는 방법은 무엇입니까?
키를 누르면 Form1_KeyDown이 발생합니다. 지금은 결정해야합니다 :의 키 스탠드를 무엇을 키
- (예를 들어, 왼쪽으로 가서 .. 내려 가서, 가서) 내가 온
유일한 해결책을 와는 각각 인덱스가 다른 명령을 의미 모든 플레이어를위한 키 배열을 생성 한 후, I는해야
public Keys[] keyControls = new Keys[5]; // up, down, left, right and fire key codes!
(예 어레이 [0] = 배열 [1] = 등을 내려 가서) 모든 플레이어를 반복하다 모든 키는 같은 오른쪽에 하나, 이렇게 뭔가를 찾을 수 있습니다 :
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
foreach (Car car in cars)
{
for (int i = 0; i < car.keyControls.length; i++)
{
if (car.keyControls[i] == e.KeyData)
{
// save car, index (for movement type) and double break the loops with flags
}
}
}
// do something with found car and movement index (movement type)
}
을하지만 "좋은"가능한 최적화 된 코드로하고 싶은, 그래서 같은 일부 Linq를 사용에 대한 생각 :
Cars car = cars.First(t => t.keyControls.Any(m => m == e.KeyData));
그러나 그 경우 나는 운동의 색인을 얻을 수 없으므로 나는 차를 가지고 무엇을 해야할지 결정할 수 없을 것이다.
키 데이터를 다른 "객체"에 저장해야합니까? 또는 인덱스를 나타내는 루프를 한 번 더 들여다 보지 않고 Linq에서 인덱스를 가져올 수 있습니까?