import pandas as pd from math import floor class AttackerWeaponClassMatrix: def __init__(self): # Define the range for X-axis (column) and Y-axis (row). x_range = list(range(1, 17)) # attacker weapon class y_range = list(range(1, 11)) # defender armour class # Provide your static values here as per the intersection values = [ # Attacker Weapon class # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [19, 19, 18, 15, 13, 16, 14, 18, 18, 16, 16, 16, 12, 14, 14, 12], # DAC 1 [17, 18, 17, 14, 12, 15, 13, 17, 16, 15, 15, 15, 11, 13, 13, 11], # DAC 2 [16, 16, 16, 12, 10, 15, 12, 16, 15, 14, 15, 15, 8, 12, 13, 11], # DAC 3 [15, 14, 15, 12, 10, 15, 11, 15, 14, 13, 15, 15, 8, 11, 13, 18], # DAC 4 [14, 13, 14, 12, 10, 15, 10, 14, 13, 12, 14, 15, 8, 11, 13, 11], # DAC 5 [13, 12, 13, 12, 10, 15, 9, 13, 12, 11, 11, 15, 8, 10, 13, 11], # DAC 6 [12, 11, 12, 12, 10, 13, 8, 12, 11, 10, 10, 11, 8, 10, 13, 11], # DAC 7 [11, 10, 11, 12, 10, 13, 7, 11, 10, 9, 9, 9, 8, 9, 13, 11], # DAC 8 [10, 9, 10, 12, 10, 7, 6, 10, 9, 8, 7, 6, 8, 8, 8, 11], # DAC 9 [9, 8, 9, 11, 9, 6, 5, 9, 8, 7, 6, 5, 8, 8, 8, 10] # DAC 10 ] # Create the DataFrame. self.table = pd.DataFrame(values, columns=x_range, index=y_range) def get_attack_score(self, awc, dac): # pandas uses a 'column-major' order # So, (X,Y) method arguments become (Y,X) # for pandas locators. return int(self.table.loc[dac, awc]) def get_matrix(self): return self.table def dump_matrix(self): print(self.table) class AttackerHitDiceMatrix: def __init__(self): # Define the range for X-axis (column) and Y-axis (row). x_range = list(range(1, 17)) # attacker weapon class y_range = list(range(1, 11)) # defender armour class values = [ # Attacker Hit Dice # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 15, 14, 14], # DAC 1 [19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 14, 13, 13], # DAC 2 [18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 13, 12, 12], # DAC 3 [17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 12, 11, 11], # DAC 4 [16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 11, 10, 10], # DAC 5 [14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 9, 8, 8], # DAC 6 [13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 8, 7, 7], # DAC 7 [12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 7, 6, 6], # DAC 8 [11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 6, 5, 5], # DAC 9 [10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4] # DAC 10 ] # Create the DataFrame. self.table = pd.DataFrame(values, columns=x_range, index=y_range) def get_attack_score(self, ahd, dac): # pandas uses a 'column-major' order # So, (X,Y) method arguments become (Y,X) # for pandas locators. return int(self.table.loc[dac, ahd]) def get_matrix(self): return self.table def dump_matrix(self): print(self.table)