mirror of
https://github.com/osmarks/random-stuff
synced 2024-12-26 18:10:34 +00:00
113 lines
4.7 KiB
Python
Executable File
113 lines
4.7 KiB
Python
Executable File
#!/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 |