Очередь, в которой можно удалить значения, которые не находятся наверху

Я создаю компьютеризированную версию карточной игры «плевок», используя pygame для проекта, над которым я работаю. В Spit у игрока есть 5 стопок рук, в которых может храниться до 5 карт, при этом верхняя карта находится лицом вверх, а остальные - лицевой стороной вниз. Когда карта удаляется из стопки карт и помещается в игровую стопку, я хочу, чтобы оставшиеся значения стопки рук «перемещались вверх», чтобы второе значение в списке стало первым.

Для этого я планировал использовать очередь, но с этим есть проблема. В игре, когда стопка рук пуста, вы можете взять закрытую карту из другой стопки, перевернуть ее и поместить в пустую стопку рук, чтобы больше не было пустых стопок. Это называется накоплением.

И вот моя проблема, это невозможно в очереди. Есть ли способ обойти это? Или другой стек форм, который я могу использовать для его замены? Спасибо за ваше время, и я с нетерпением жду ваших ответов.


person HuntingForIrish    schedule 12.04.2016    source источник


Ответы (1)


Похоже, здесь могут помочь списки. Вы можете представить каждую стопку рук списком, где индекс 0 означает самую нижнюю карту. Затем вы можете использовать метод list.pop (), чтобы получить и удалить последнюю карту (видимую) в списке, когда она разыгрывается на доске.

Для накопления, если я правильно понимаю, вы можете взять любую карту в любой стопке (кроме самой верхней, которая видна), вынуть ее и положить поверх пустой стопки (это будет пустой список). Вы можете сделать это с помощью:

firstList[0] = chosenCard    #Get the chosen card from the first pile
del firstList[0]             #Delete the downmost card. The new list will have element 
                             #firstList[0] equal to the old firstList[1], like a stack
secondList.append(chosenCard) #Add the card to the end of the list (top of the stack)
person Bobsleigh    schedule 12.04.2016