random-stuff/CookieEnterKeyPresser.py

113 lines
4.7 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""Lets you collect cookies"""
import multiprocessing as mp
import collections
import pickle
big_cookie = """
WNXXXXXNWW
WNNXK0OkkOO0OOO000KXXNNW
WN0O0O0kOOOO000OOkOOkOKK0OkO0N
N0kkOkdxxkkOOOOkkxkxddxkkkOK0kxk0KKXXNW
XkOOkxddkxkkOOkkkloddoodl;.;x0koOkdodxdddxk0XW
WK0O0OkdokkkOkdddl:ooodxdkxoloc:lkx000kdo;..,,,dON
Xxx:l0OkdkO0Okkxxdc::dkO0000OxxxdxoodOkdO00o';cd. :xk0N
XkOd'cxxkO0kdc.. .. .:llkOkxdolododdxkOOkkOOOOo:' coodx0NW
WXKOO00OkkkxkOd' .cko:;':cdxdddoolllooooocclloooddkklxxoodxkO0X
WKkOOkkoddxxkkkOko...lkk,.;ooooolllcc;::lllc:cclc:lloddxxkkkxooxddK
XOOkkxdokddoddxxxkOo;'...,dOkxxkdc,..;ooccccclc,..ll:;:;:ookOOkdxxxxK
NOkOOxdolodoodddoddlxxdo:dOkOxkko....';ldxxdoxxOk.:kc:lxdc:oxdcddl::xk0W
Nkkxkkxdll:cocc:ool::l;;lxkkxkkdll:'.'oxx:k000Kkkk. ...;.cdxkkxxx:. 'dx0
NkkxdddoolcooddxocdxxkodO00kxkOk'..lol,..:;;kkkkOdO; . 'lxko,. .lddX
KxxxxdddddxxdoxkxdkOOOOOO0Odlxkk;.. 'lc:;,::xkxoxxkO. .''.;dkxo,.. ..,lodk
Oxxxxxxxolc'. ckcdxkkOOOOxl'cOkx:. ;oolcdkxoldk0000x'oxol:dkkllol'';odddddX
Nxxxdxxxdoc:;,. .l:ooxdxkxxxkkk00kdc:c:odxkkk0Ooxkkkxkkk0Okkxxdxkxl:odxdddddK 1
KxdxxxxkkkkckkxkkOOx:dddxxddxo:,cldxxxdodxxkOOOl:clllodxxdkxddxdooccodxdooodxW
Xdoloxxoxkkdlc:;,oxx:cddddddoccllxxxdddlxkkkxdddo:cllloodxldkOOOolxxdooolloolX
kddoddodxdxxxkkocxkx:,loododxcc:;,,ldlcxxxdooooclcllloddxkxokOO;.'lxdxxxolclK
0dddxxx:dkxxokkkkkkOk::xdddll:. .:. .okxdoooooooooolloloddOOxxl. 'ooddddollN
Nxdolddl;OOxlxxxxdxxd:cxxkxlc;. .. . .lllo:cll;.:xkxdlcooxxxxdd,. ;dodoloolk
XddoldocxOklldddoddlclddxolkOx' :cloc;: .';'oxdddododooooc..cddxlloolX
Oddlololxkklcddddo;ccc:::.oxo:. .;lcoxxl .dxxoooodooll;;;;:ooooooo
XOdclxxdxooloolollkkkoddc:ooc:okkxdloxk; ..odooodoodxxdcllll:clooo0
0odxdlo:odddllcxOkocllclxkOOkkxkxdodxxl' .'ldoooo:;;,:lc;ddddoooolO
Nxodddddddxxldlokxc;;,xkxdddxxxkxxxdddkko,:::cclodo.... . ;dddlcllcX
Nlloxol;llc::;,;.',cooddodooddxkxxdo:clllcloc;coodo. ..,ldxollolcx
K......:;,ld,.. 'ooododoooodddoc,;coooodxl:;;:cllcclooooooolollW
0' ...;.;okxxxlcdOkdl:clooooolddddoooddlclodl::ccllccodoolooll,k
Wxlddxoxxdolldddxxxdlcclllol:l,. . .;ccllll::cc:;::ccoddooo;x
Wdoxxdool::::ccccclodxddxd; ,olllcclcccclooxdoolccdW
W0oloddodooclodxxxooddxxxd;. . .:c:;::cooooooccoollox0W
0occlolcloodxddxdooooddkkc,,.okdlclooodlcddlccclxX
Xkocc::::cllodoooolcc:ccllcccoooooddxo,,':coON
XOdclclcc:llcllolc:;;cllooooddldooooxk0X
NK0kdlcc:::ccc:clcllllcooooclx0XW
WNXXKOxoc;:cccccccldOKW
NOOddkOXW
"""
little_cookie = """
╱───╲
╱○ ○ ╲
│ ○ ○ │
╲ ○ ○
╲───╱
"""
def say_cookies(num):
if num == 1:
return "cookie"
else:
return "cookies"
def save(obj, name):
with open(name, "wb") as f:
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
def load(name):
with open(name, "rb") as f:
return pickle.load(f)
if __name__ == "__main__":
state = {
"cookies": 0
}
dispatch = {
"": lambda st: {"cookies": st["cookies"] + 1},
"help": lambda _: print("""
Available commands:
save [save name] - save current game state
load [save name] - load previous save
help - get this message
cookie - see a minicookie
<ENTER> - get cookies
"""),
"save": lambda st, save_name: save(st, save_name),
"load": lambda _, save_name: load(save_name),
"cookie": lambda _: print(little_cookie)
}
print(big_cookie)
while True:
print("You have %d %s." % (state["cookies"], say_cookies(state["cookies"])))
result_tokens = input(u"|||> ").split(" ")
try:
selected_func = dispatch[result_tokens[0]]
except:
print("Command not found.")
dispatch["help"](state)
continue
change = selected_func(state, *result_tokens[1:])
try: # An operation might return nothing instead of changing state.
for k, v in change.items():
state[k] = v
except:
pass