Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Массив состояний выходов, изначально все выходы выключены
- int output[] = {0, 0, 0, 0, 0, 0, 0, 0};
- // максимальное кол-во одновременно нажатых кнопок
- int maxButtonOnQty = 4;
- // кол-во уже нажатых кнопок на данный момент
- int buttonOnQty = 0;
- // Список нажатых кнопок. buttonOnList[i] содержит номер нажатой кнопки (0 для 1-й кнопки, 1 для 2-й ... 7 для 8-й)
- // 1-я нажатая кнопка находится на 0-й позиции в массиве, 2-я на 1-й и т. д.
- int buttonOnList[] = new int[maxButtonOnQty];
- /**
- * Отработка нажатия кнопки.
- *
- * @param buttonNumber номер нажатой кнопки (0 для 1-й ... 7 для 8-й)
- */
- void pressButton(int buttonNumber) {
- if (output[buttonNumber] == 0) { // если выход отключен, его надо включить
- if (buttonOnQty < maxButtonOnQty) { // если кол-во нажатых кнопок меньше максимального
- buttonOnList[buttonOnQty] = buttonNumber; // добавляем кнопку в список нажатых
- buttonOnQty++; // увеличиваем кол-во нажатых кнопок
- output[buttonNumber] = 1; //и включаем выход
- } else { // если нажато макс. кол-во кнопок
- output[buttonOnList[0]] = 0; // отключаем первую нажатую кнопку
- for (int i = 0; i < maxButtonOnQty - 1; i++) { // сдвигаем кнопки в списке на 1 поз. влево
- buttonOnList[i] = buttonOnList[i + 1];
- }
- buttonOnList[maxButtonOnQty - 1] = buttonNumber; // добавляем кнопку в список нажатых на последнюю позицию
- output[buttonNumber] = 1; //и включаем выход
- }
- } else { // если выход включен, его надо выключить
- int posInList = 0;
- for (int i = 0; i < buttonOnQty; i++) { // отыскиваем на какой позиции в списке находится отключаемый выход
- if (buttonNumber == buttonOnList[i]) {
- posInList = i;
- break;
- }
- }
- for (int i = posInList; i < buttonOnQty - 1; i++) { // сдвигаем кнопки в списке влево, начиная с posInList
- buttonOnList[i] = buttonOnList[i + 1];
- }
- buttonOnQty--; // уменьшаем кол-во нажатых кнопок
- output[buttonNumber] = 0; //и выключаем выход
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement