1

キー入力を取得する必要があります。それがテンキー1〜9のいずれかである場合は、int値を取得します。

たとえば、NumPad9が押された場合、値9を取得する必要があります。

私は1時間取り組んできましたが、解決できないようです。

これが私がこれまでにしたことです:

class Input
{
    private int[] Key = { 7, 8, 9, 4, 5, 6, 1, 2, 3 };
    private Position[] Values;
    public Input()
    {
        Values = new Position[9];
        int index = 0;
        for (int i = 0; i < 3; i++)
            for (int j = 0; j < 3; j++)
                Values[index++] = new Position(i, j);

    }
    public Position GetPos(int Key)
    {
        return Values[Key];
    }
    /*public Position ReadInput(KeyboardState Keyboard)
    {
     * Here is the function that I need to call, how can I check efficiently if one of the
     * Numpads 1-9 is pressed?
     * return GetPos(IntegerValue);
    }*/
}

Positionタイプには、RowとColのint値のみが含まれます。

また、キーが1つだけ押されているかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

1

何が必要かわかりませんが、これに似たものにする必要があります...

bool TryReadInput(out int Value)
{
    int Min = (int) Keys.D0;
    int Max = (int) Keys.D9;
    for (int k = Min; k<=Max; k++)
    {
         if (current_kb_state.IsKeyDown( (Keys) k) 
           && previous_kb_state.IsKeyUp( (Keys) k))
         { 
             value = k - Min;
             return true;
         }   
    }
    value = -1;
    return false;
}

列と行の値が必要な場合:

col = (key+1) / 3;
row = (key+1) % 3;
于 2012-04-08T19:32:06.083 に答える