Initial commit

This commit is contained in:
2026-04-23 16:58:11 +08:00
commit 267eba1eca
2582 changed files with 273338 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
import random
import unittest
from SugarRush1000 import SugarRush1000
def no_cluster_grid():
return [
(
["B" if col % 2 == 0 else "E" for col in range(7)]
if row % 2 == 0
else ["E" if col % 2 == 0 else "B" for col in range(7)]
)
for row in range(7)
]
def print_mid_result(tag, res):
print(f"\n======={tag}=========")
for index, grid in enumerate(res["middle_grids"]):
print(f"step{index+1}---")
print(f"倍数点数")
print(" ",end="")
for i in range(7):
print(f"{i} ",end=" ")
print()
for i,row in enumerate(res["middle_multipliers"][index]):
print(f"{i} {row}")
print(f"消除符号")
for symbol in res["middle_grid_remove_symbols"][index]:
print(symbol)
print(f"score:{res['middle_score'][index]}")
for row in grid:
print(row)
class TestSugarRushLogic(unittest.TestCase):
def setUp(self):
self.bet = 1.0
def test_normal_free_spin_s3(self):
# 0. 准备数据:构造一个即将消除的场景
custom_grid = no_cluster_grid()
custom_grid[0][0] = "S"
custom_grid[1][1] = "S"
custom_grid[2][2] = "S"
game = SugarRush1000(balance=1000, bet=self.bet, mock_grid=custom_grid)
drop_symbol = []
for i in range(20):
grids = no_cluster_grid()
[drop_symbol.append(grids[r][c]) for c in range(7) for r in range(7)]
game.drop_sequence = drop_symbol
# 1. 触发freeSpin
result = game.doSpin()
game.mock_grid = None
self.assertEqual(result["balance"], 999)
self.assertEqual(result["free_spins_remaining"], 10)
# 2. 使用freeSpin
free_spins = result["free_spins_remaining"]
for i in range(free_spins):
result = game.doSpin()
self.assertEqual(result["balance"], 999)
self.assertEqual(result["free_spins_remaining"], free_spins - i - 1)
# 3. 回归正常spin
result = game.doSpin()
self.assertEqual(result["balance"], 998)
self.assertEqual(result["free_spins_remaining"], 0)
print("✅ 测试通过普通freeSpin正常")
def test_buy_standard_free_spin(self):
custom_grid = no_cluster_grid()
balance = 1000
game = SugarRush1000(balance=balance, bet=self.bet, mock_grid=custom_grid)
# 1. 购买
result = game.buy_free_spins("standard")
self.assertEqual(result["balance"], balance - 100 * game.bet)
self.assertEqual(result["is_buy_free"], True)
self.assertEqual(result["is_super_free"], False)
self.assertEqual(game.free_spins, 0)
# 2. 使用
result = game.doSpin()
self.assertGreaterEqual(game.free_spins, 10)
self.assertEqual(game.is_buy_free, False)
self.assertEqual(game.is_super_free, False)
self.assertEqual(game.multipliers[0][0], 0)
print("✅ 测试通过:购买普通免费旋转正常")
def test_buy_super_free_spin(self):
custom_grid = no_cluster_grid()
balance = 1000
game = SugarRush1000(balance=balance, bet=self.bet, mock_grid=custom_grid)
# 1. 购买
result = game.buy_free_spins("super")
self.assertEqual(result["balance"], balance - 500 * game.bet)
self.assertEqual(result["is_buy_free"], True)
self.assertEqual(result["is_super_free"], True)
self.assertEqual(game.free_spins, 0)
# 2. 使用
result = game.doSpin()
self.assertGreater(game.free_spins, 10)
self.assertEqual(game.is_buy_free, False)
self.assertEqual(game.is_super_free, True)
self.assertEqual(game.multipliers[0][0], 0)
# 进入super free spin
result = game.doSpin()
self.assertGreater(game.free_spins, 9)
self.assertEqual(game.is_buy_free, False)
self.assertEqual(game.is_super_free, False)
self.assertEqual(result["steps"][0]["multipler"][1], 2)
print("✅ 测试通过:购买超级免费旋转正常")
if __name__ == "__main__":
unittest.main(argv=["first-arg-is-ignored"], exit=False)