From d789d8a1f66f54ad282ecff2a8b62e5d13fc6df6 Mon Sep 17 00:00:00 2001 From: DeaDvey Date: Mon, 7 Jul 2025 22:48:13 +0100 Subject: [PATCH] intial --- .gitignore | 1 + .main.py.swp | Bin 0 -> 20480 bytes __pycache__/data.cpython-312.pyc | Bin 0 -> 4510 bytes __pycache__/save.cpython-312.pyc | Bin 0 -> 1010 bytes data.py | 100 +++++++++++++++++ main.py | 180 +++++++++++++++++++++++++++++++ 6 files changed, 281 insertions(+) create mode 100644 .gitignore create mode 100644 .main.py.swp create mode 100644 __pycache__/data.cpython-312.pyc create mode 100644 __pycache__/save.cpython-312.pyc create mode 100644 data.py create mode 100644 main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c6b68c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +save.py diff --git a/.main.py.swp b/.main.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..72b9182464eb468d8c1d10aa79311106ed226cb2 GIT binary patch literal 20480 zcmYc?2=nw+u+%eTU|?VnU|m*N2$>e7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fdL4C#1saG3v3JwTi7A<|FHi57JdeXY5WWfUHl9Tt^5oO zk^Bq{f&2^%TKo(Qd-xa_Hu5nrOyOf-aO7iPkm6%t_{Yn@aEX_JVIMC8!(LtnhK0Ng z3`)EV3}7#PCX7#Kp?7#Pgh7#QBM zGBBKGWnh@e%D}LPg@Iu<3j;$J3j;$a3j>1=3j+f`3j@PUW(EdlW(J1uObiTbnHU(R zGchn^GchoPGchn|FflNwGcho*FflOPW@KR4!N|bS#>l|%gi!$rq~#YWWGZClDHJ8< zrKf7-q~>W9Czhq^C6yLu=A{-Frxt5!S}`DLP$($M%q!7Q0tp#dDI_Q6C8y>nX~LCc zrYV#brxwL$<`tBd=;h>>rxs~wD%jd8C>5vXqHZ`X>6}t)Gu*uEOORZGUwN*$-EJ;KPsc3}9<1_P0Vx!fQ^NUN=V==q~vIA@q z%*Uz4dWi)Esd*_H1dK$4Gsp}WhWIN@$*Ht5GcR4Cnt&nE>IFrqB_);dd5O8H>an$G zAqX-xH3uagLEcfYQ2?b5G_y4o67y0Nz@C8wiyhIyf<1(j^YcnF^GZ`O0u9qawzdko zhM14Bu1S{((~#G<^+ymaDpr9u>|$JXj+Abr6!iZ zG$RsQG{}w;u%voyttwjlV<{5QBb{1BLQ-j^l0tqF&JrUdzW}Yoa4M|?<^0rg9Hm8i zVs2`DPJVuYf~|sEVoot?Is&EBc#smL_(VxpC_lhRjR@)#WMiN%{FX8jwtmBn$F6L=Y57Ntsm`l@uuZ zCuLTF+63T$MHCy5l#!VRs`nsiDy=9#7nGWcOA>PnG(hDnSPLxqX`-aJ6eUdsMOy_( zG?&DuBvyj5K1{71NoM7unw6WMSCT=#X_2U=Ri-8uLHr7HD@X)yUW$a~C71??gYf0P zTr?e^;J~LoMM;w(B{fZa;Q9z2q>}SCYEIArRC)37ikzM zWTq+Pf!c`%3ZR?`DmpXta`Mv+4KxyyiZ${yHT8`(F^z%e9gqvaZqd{=)IrHVxtVzy zC;|o$d616GlnMn~h1|pnh>AP~TZOcoe2}*xp$%4(R;iJvX~m$dkWo@nP;8~IUtE%y zoSk2mT9lTPU#^#&pQ~S3np#|vnV(mzZ)|94Vq#_hU2v?MQJR~Wr(2Yon39;3ld7AO zSd^Zs3u(9(GcYKFA}2R7FEy_OoX3k9l);%dKR2gRAw9K3p%^4nk`HEsGJ1+aQetsx zib8�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 T@bWisKH|`5WG!-GU|;|M=oYW# literal 0 HcmV?d00001 diff --git a/__pycache__/save.cpython-312.pyc b/__pycache__/save.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d04e3f9009bd3faa07a074a26e6a984d84533b8f GIT binary patch literal 1010 zcmX@j%ge>Uz`(HAJ}2WTGXuk85C?_@pp4H;7#J9)Go&!2Fs3l2FsHE0VM$?4VM}38 z;Q+HaQ@B#Nq2kDFo)q2`z7&428i5qS6d|a3;S`Y+(G)STxOj?03Ui7i(QG6$(|Mv8 zQlz37Q>3GqQkbKdD`hlgtN46UbMx~OQ&JUzOA_-^UfM7)Fr;h7^dI`FvB&-;$U~Ye zx3~+6QcFrI{#1_l;~mn;kn3{_k{iRF0;zWL>;MK6yrFfhDi2Z{1{x6r$Zc&=_1C! z@G<}-$pn(*a84{z2v01|$lSrr!0=K7B*y8Sn4PK+oRMFUIm3#9;pKIZYDSQZpmRoI zQD#Y{0z^e(PHLtNKLbPhteGHibALMb_BB@xGgmugf+EmQljRmyQfYB!UTSf1YVj@B z-2A-M%3B;Mi6yBenYpRAxY9E7Qsa~JOY=%rGJFR4<(IC0Mt*LpeoAU$N?B^9esX?F zs(wLbNk)F2eo|&mPG){yVrEgQesN-1s$N0mEe@O9{FKt1RJ$Sx1_lO@8;h4QGBA8# zW@Kc%A*Z*4=|IVa@Q90ikr%RSJ}@x2GkGz6U|+zW%>c;(4%! zv3_7+NMKC?QH89= len(data.fines): + save.money -= data.fines[len(data.fines)-1] + print(f"You've been fined {data.currency}{data.fines[len(data.fines)-1]}") + else: + save.money -= data.fines[save.fine_count] + print(f"You've been fined {data.currency}{data.fines[save.fine_count]}") + save.fine_count += 1 + save_game() + +def add_new_money(): + current_time = datetime.now().strftime("%s") + time_difference = int(current_time) - int(save.datetime) + time_passed = time_difference * data.time_rate + for biz in save.businesses: + earning = biz['earning'] + save.money += (earning / 3600) * time_passed + +def display_leaderboard(): + leaderboard = data.leaderboard + networth = save.money + for biz in save.businesses: + networth += biz['cost'] + leaderboard.append(["Yourself", round(networth,2)]) + leaderboard = sorted(leaderboard, key=lambda leaderboard: leaderboard[1], reverse=True) + for index in range(len(leaderboard)): + print(f"#{index+1}: {leaderboard[index][0]} {data.currency}{millify(leaderboard[index][1])}") + +def save_game(): + with open("save.py", "w") as file: + content = f'''businesses = {save.businesses}\nmoney = {save.money}\ndatetime = {save.datetime}\nfine_count = {save.fine_count}''' + file.write(content) + +def main(): + add_new_money() + print("Welcome, entrepeneur") + game_loop = True + while game_loop: + save.datetime = datetime.now().strftime("%s") + print(f"{data.currency}{round(save.money,2)} > ", end="") + user_input = input() + # TODO make this a match case? + if user_input.lower() == "quit" or user_input.lower() == "exit": + save.datetime = datetime.now().strftime("%s") + add_new_money() + save_game() + game_loop = False + + ### Buy a new business + elif user_input.lower() == "buy" or user_input.lower() == "shop": + print(" 0: cancel") + for i in range(len(data.businesses)): + if data.businesses[i]['cost'] <= save.money: + print(f" {i+1}: {data.businesses[i]['pretty_name']}: {data.currency}{data.businesses[i]['cost']}, Earning: {data.currency}{data.businesses[i]['earning']}/hour, Threat: {data.businesses[i]['threat']}%") + user_input = input() + try: + user_input_int = int(user_input) - 1 + if user_input_int == -1: + continue + elif user_input_int < len(data.businesses) and save.money >= data.businesses[user_input_int]['cost']: + print(f"Buying {data.businesses[user_input_int]['pretty_name']}") + save.businesses.append(data.businesses[user_input_int]) + save.money -= data.businesses[user_input_int]['cost'] + else: + print("Invalid number") + except: + print("Didn't input a number") + + ### Sell an owned business + elif user_input.lower() == "sell": + print(" 0: cancel") + for i in range(len(save.businesses)): + print(f" {i+1}: {save.businesses[i]['pretty_name']}: {data.currency}{save.businesses[i]['cost']}") + user_input = input() + try: + user_input_int = int(user_input) - 1 + if user_input_int == -1: + continue + elif user_input_int < len(data.businesses): + print(f"Selling {data.businesses[user_input_int]['pretty_name']}") + save.businesses.pop(user_input_int) + save.money += data.businesses[user_input_int]['cost'] + else: + print("Invalid number") + except: + print("Didn't input a number") + + ### Display info relavent to your enterprise + elif user_input.lower() == "status": + print("------------- STATUS -------------") + print(f"Money Available: {data.currency}{round(save.money,2)}") + print("Your businesses:") + total_earning = 0 + networth = save.money + threat = 0 + for biz in save.businesses: + print(f" {biz['pretty_name']}: {data.currency}{biz['earning']}/hour") + total_earning += biz['earning'] + networth += biz['cost'] + threat += biz['threat'] + + if threat < 100: + print(f"Threat Level: {threat}%") + else: + print("Threat Level: MIDNIGHT") + print(f"Total earning: {data.currency}{total_earning}/hour") + print(f"Networth: {data.currency}{round(networth,2)}") + print("----------------------------------") + + ### Display leaderboard + elif user_input.lower() == "leaderboard": + display_leaderboard() + + elif user_input.lower() == "help": + print(''' +Commands + help: help's the user + status: output's networth, available money, threat level, your businesses and earning/hour + shop/buy: lists available businesses + sell: sells that business + leaderboard: shows the wealth leaderboard + quit: exit's game + +Additional functionality: + randomly get fined based on threat level + permanent saves + ''') + elif user_input == "" or user_input == undefined: + print("",end="") + else: + print("Error: Invalid command") + + ### End of loop + add_new_money() + try_arrest() + save_game() + +main()