Skip to content

Commit 3d41d96

Browse files
committed
reafactor: formatting and remove uselss libs
1 parent 8f454b4 commit 3d41d96

File tree

10 files changed

+764
-628
lines changed

10 files changed

+764
-628
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ __pycache__
22
Balatro
33
gamestate_cache
44
.envrc
5+
.luarc.json

balatrobot.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
---@type BalatrobotConfig
1616
BALATRO_BOT_CONFIG = {
1717
enabled = true,
18-
port = "12345",
18+
port = "12346",
1919
dt = 1.0 / 60.0,
2020
uncap_fps = false,
2121
instant_move = false,
@@ -59,4 +59,4 @@ sendDebugMessage("Logger loaded", "BALATROBOT")
5959
BalatrobotAPI.init()
6060
sendDebugMessage("API loaded", "BALATROBOT")
6161

62-
sendInfoMessage("BalatroBot loaded - version " .. SMODS.current_mod.version, "BALATROBOT")
62+
sendInfoMessage("BalatroBot loaded - version " .. SMODS.current_mod.version, "BALATROBOT")

bot.py

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
#!/usr/bin/python3
22

3-
import sys
43
import json
4+
import random
55
import socket
6+
import subprocess
7+
import sys
68
import time
79
from enum import Enum
10+
from weakref import proxy
11+
812
from gamestates import cache_state
9-
import subprocess
10-
import random
1113

1214

1315
class State(Enum):
@@ -72,7 +74,7 @@ def __init__(
7274

7375
self.bot_port = bot_port
7476

75-
self.addr = ("localhost", self.bot_port)
77+
self.addr = ("127.0.0.1", self.bot_port)
7678
self.running = False
7779
self.balatro_instance = None
7880

@@ -131,7 +133,7 @@ def stop_balatro_instance(self):
131133

132134
def sendcmd(self, cmd, **kwargs):
133135
msg = bytes(cmd, "utf-8")
134-
self.sock.sendto(msg, self.addr)
136+
self.sock.send(msg)
135137

136138
def actionToCmd(self, action):
137139
result = []
@@ -148,15 +150,15 @@ def actionToCmd(self, action):
148150

149151
def verifyimplemented(self):
150152
try:
151-
self.skip_or_select_blind(self, {})
152-
self.select_cards_from_hand(self, {})
153-
self.select_shop_action(self, {})
154-
self.select_booster_action(self, {})
155-
self.sell_jokers(self, {})
156-
self.rearrange_jokers(self, {})
157-
self.use_or_sell_consumables(self, {})
158-
self.rearrange_consumables(self, {})
159-
self.rearrange_hand(self, {})
153+
self.skip_or_select_blind({})
154+
self.select_cards_from_hand({})
155+
self.select_shop_action({})
156+
self.select_booster_action({})
157+
self.sell_jokers({})
158+
self.rearrange_jokers({})
159+
self.use_or_sell_consumables({})
160+
self.rearrange_consumables({})
161+
self.rearrange_hand({})
160162
except NotImplementedError as e:
161163
print(e)
162164
sys.exit(0)
@@ -168,11 +170,13 @@ def random_seed(self):
168170
return "".join(random.choices("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", k=7))
169171

170172
def chooseaction(self):
173+
print("Choosing action based on game state:", self.G["state"])
171174
if self.G["state"] == State.GAME_OVER:
172175
self.running = False
173176

174177
match self.G["waitingFor"]:
175178
case "start_run":
179+
print("Starting run with deck:", self.deck)
176180
seed = self.seed
177181
if seed is None:
178182
seed = self.random_seed()
@@ -184,23 +188,32 @@ def chooseaction(self):
184188
self.challenge,
185189
]
186190
case "skip_or_select_blind":
187-
return self.skip_or_select_blind(self, self.G)
191+
print("Choosing action: skip_or_select_blind")
192+
return self.skip_or_select_blind(self.G)
188193
case "select_cards_from_hand":
189-
return self.select_cards_from_hand(self, self.G)
194+
print("Choosing action: select_cards_from_hand")
195+
return self.select_cards_from_hand(self.G)
190196
case "select_shop_action":
191-
return self.select_shop_action(self, self.G)
197+
print("Choosing action: select_shop_action")
198+
return self.select_shop_action(self.G)
192199
case "select_booster_action":
193-
return self.select_booster_action(self, self.G)
200+
print("Choosing action: select_booster_action")
201+
return self.select_booster_action(self.G)
194202
case "sell_jokers":
195-
return self.sell_jokers(self, self.G)
203+
print("Choosing action: sell_jokers")
204+
return self.sell_jokers(self.G)
196205
case "rearrange_jokers":
197-
return self.rearrange_jokers(self, self.G)
206+
print("Choosing action: rearrange_jokers")
207+
return self.rearrange_jokers(self.G)
198208
case "use_or_sell_consumables":
199-
return self.use_or_sell_consumables(self, self.G)
209+
print("Choosing action: use_or_sell_consumables")
210+
return self.use_or_sell_consumables(self.G)
200211
case "rearrange_consumables":
201-
return self.rearrange_consumables(self, self.G)
212+
print("Choosing action: rearrange_consumables")
213+
return self.rearrange_consumables(self.G)
202214
case "rearrange_hand":
203-
return self.rearrange_hand(self, self.G)
215+
print("Choosing action: rearrange_hand")
216+
return self.rearrange_hand(self.G)
204217

205218
def run_step(self):
206219
if self.sock is None:

bot_example.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,5 @@ def rearrange_hand(self, G):
9494
mybot.rearrange_consumables = rearrange_consumables
9595
mybot.rearrange_hand = rearrange_hand
9696

97+
mybot.running = True
9798
mybot.run()

my_first_bot.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# my_first_bot.py
2+
from bot import Actions, Bot
3+
4+
5+
class MyFirstBot(Bot):
6+
def __init__(self, deck="Red Deck", stake=1):
7+
super().__init__(deck=deck, stake=stake, seed="EXAMPLE")
8+
self.round_count = 0
9+
10+
def skip_or_select_blind(self, G):
11+
"""Always select blinds to play them"""
12+
return [Actions.SELECT_BLIND]
13+
14+
def select_cards_from_hand(self, G):
15+
"""Simple strategy: play the first card"""
16+
return [Actions.PLAY_HAND, [1]]
17+
18+
def select_shop_action(self, G):
19+
"""Always leave the shop immediately"""
20+
return [Actions.END_SHOP]
21+
22+
def select_booster_action(self, G):
23+
"""Skip all booster packs"""
24+
return [Actions.SKIP_BOOSTER_PACK]
25+
26+
def sell_jokers(self, G):
27+
"""Don't sell any jokers"""
28+
return [Actions.SELL_JOKER, []]
29+
30+
def rearrange_jokers(self, G):
31+
"""Don't rearrange jokers"""
32+
return [Actions.REARRANGE_JOKERS, []]
33+
34+
def use_or_sell_consumables(self, G):
35+
"""Don't use consumables"""
36+
return [Actions.USE_CONSUMABLE, []]
37+
38+
def rearrange_consumables(self, G):
39+
"""Don't rearrange consumables"""
40+
return [Actions.REARRANGE_CONSUMABLES, []]
41+
42+
def rearrange_hand(self, G):
43+
"""Don't rearrange hand"""
44+
return [Actions.REARRANGE_HAND, []]
45+
46+
47+
# Run the bot
48+
if __name__ == "__main__":
49+
bot = MyFirstBot()
50+
bot.running = True
51+
print("Starting MyFirstBot...")
52+
print("Running: ", bot.running)
53+
while True:
54+
input("Press Enter to simulate a game step...")
55+
bot.run_step()

0 commit comments

Comments
 (0)