+# Display card output and retreive input
+# Armaan Bhojwani 2021
+
+import os
+
+class Status():
+ index = 0
+ side = 0
+
+ def forward(self, stack):
+ if not self.index == len(stack) - 1:
+ self.index += 1
+
+ def back(self):
+ if not self.index < 1:
+ self.index -= 1
+
+ def flip(self):
+ if self.side == 0:
+ self.side = 1
+ else:
+ self.side = 0
+
+ def setSide(self, inp):
+ self.side = inp
+
+ def getSide(self):
+ return self.side
+
+ def getIdx(self):
+ return self.index
+
+
+def disp_card(stdscr, stack, obj):
+ stdscr.clear()
+ stdscr.addstr(str(stack[obj.getIdx()][obj.getSide()]))
+
+def get_key(stdscr, stack):
+ idx = Status()
+ disp_card(stdscr, stack, idx)
+
+ while True:
+ key = stdscr.getkey()
+ try:
+ if key == "q" or key == os.linesep:
+ exit(0)
+ if key == "j":
+ idx.forward(stack)
+ idx.setSide(0)
+ disp_card(stdscr, stack, idx)
+ if key == "k":
+ idx.back()
+ idx.setSide(0)
+ disp_card(stdscr, stack, idx)
+ if key == "l" or key == "h":
+ idx.flip()
+ disp_card(stdscr, stack, idx)
+ except Exception:
+ pass