bar works somewhat if black goes on there. Still can't get off it

This commit is contained in:
Alexander Munch-Hansen 2018-04-14 22:51:41 +02:00
parent 7993da0db7
commit 716413e2b6

View File

@ -82,7 +82,7 @@ class Board_painter:
self.clock = pygame.time.Clock() self.clock = pygame.time.Clock()
self.buckets = [[5,-1],[0,0],[0,0],[0,0],[3,1],[0,0],[5,1],[0,0],[0,0],[0,0],[0,0],[2,-1],[5,1],[0,0],[0,0],[0,0],[3,-1],[0,0],[5,-1],[0,0],[0,0],[0,0],[0,0],[2,1]] self.buckets = [[0,0],[5,-1],[0,0],[0,0],[0,0],[3,1],[0,0],[5,1],[0,0],[0,0],[0,0],[0,0],[2,-1],[5,1],[0,0],[0,0],[0,0],[3,-1],[0,0],[5,-1],[0,0],[0,0],[0,0],[0,0],[2,1],[0,0]]
self.running = True self.running = True
self.player = -1 self.player = -1
@ -114,12 +114,12 @@ class Board_painter:
def gen_board_from_buckets(self, buckets): def gen_board_from_buckets(self, buckets):
board = [] board = []
board.append([0,0]) board.append(buckets[0])
for i in range(-1,-13,-1): for i in range(-2,-14,-1):
board.append(buckets[i]) board.append(buckets[i])
for i in range(0,12): for i in range(1,13):
board.append(buckets[i]) board.append(buckets[i])
board.append([0,0]) board.append(buckets[25])
board = [x*y for x,y in board] board = [x*y for x,y in board]
return board return board
@ -138,25 +138,33 @@ class Board_painter:
x -= 50 if x > 550 else 0 x -= 50 if x > 550 else 0
if y < 175: if y < 175:
pin = (13 + int(x / SPACING)) pin = (13 + int(x / SPACING))
idx = int(x / SPACING) idx = 1+int(x / SPACING)
elif y > 225: elif y > 225:
pin = (12 - int(x / SPACING)) pin = (12 - int(x / SPACING))
idx = 12+ int(x / SPACING) idx = 13+ int(x / SPACING)
return pin, idx return pin, idx
# Find the y position based on the chosen pin # Find the y position based on the chosen pin
def calc_pos(self, buckets, chosen): def calc_pos(self, buckets, chosen):
amount = buckets[chosen][0] amount = buckets[chosen][0]
print(chosen)
SPACING = self.SPACING SPACING = self.SPACING
if chosen > 11: if chosen == 0:
x = 525
y = 350
elif chosen == 26:
x = 525
y = 50
else:
if chosen > 12:
# print("Amount at pin:", amount) # print("Amount at pin:", amount)
y = 378 - (30 * amount) y = 378 - (30 * amount)
chosen -= 11 chosen -= 12
x = (SPACING*(chosen-1))+(SPACING/2) x = (SPACING*(chosen-1))+(SPACING/2)
x += 50 if x > 500 else 0 x += 50 if x > 500 else 0
else: else:
chosen += 1
y = 30 * amount y = 30 * amount
x = (SPACING*(chosen-1))+(SPACING/2) x = (SPACING*(chosen-1))+(SPACING/2)
x += 50 if x > 500 else 0 x += 50 if x > 500 else 0
@ -167,6 +175,7 @@ class Board_painter:
board = from_board board = from_board
sets = [] sets = []
total = 0 total = 0
print("board!:",board)
for r in roll: for r in roll:
# print("Value of r:",r) # print("Value of r:",r)
sets.append([Board.calculate_legal_states(board, player, [r,0]), r]) sets.append([Board.calculate_legal_states(board, player, [r,0]), r])
@ -256,6 +265,39 @@ class Board_painter:
if any(meh): if any(meh):
is_true = np.where(meh)[0][0] is_true = np.where(meh)[0][0]
pin, idx = self.find_pin(event.pos)
x, y = self.calc_pos(buckets,idx)
# Need to take care of bar stuff :<
if (buckets[idx][1] == player*-1) and buckets[idx][0] == 1:
to_idx = 0 if buckets[idx][1] == 1 else 25
enemy_rects = self.all_rects[player*-1]
# Have some check if we're looking for either rects in the bottom or top,
# instead of having both here
neg_tester = [rect.collidepoint(x,y-30) for rect in enemy_rects]
pos_tester = [rect.collidepoint(x,y+40) for rect in enemy_rects]
print("Neg tester:",neg_tester)
print("Pos tester:",pos_tester)
if any(neg_tester):
enemy = np.where(neg_tester)[0][0]
elif any(pos_tester):
enemy = np.where(pos_tester)[0][0]
buckets[to_idx][0] += 1
buckets[to_idx][1] = buckets[idx][1]
bar_x, bar_y = self.calc_pos(buckets, to_idx)
enemy_rects[enemy].x = bar_x
enemy_rects[enemy].y = bar_y
buckets[idx][0] = 0
print("In here"*20)
pin, idx = self.find_pin(event.pos) pin, idx = self.find_pin(event.pos)
x, y = self.calc_pos(buckets,idx) x, y = self.calc_pos(buckets,idx)
buckets[idx][0] += 1 buckets[idx][0] += 1
@ -267,11 +309,12 @@ class Board_painter:
# print(move_legal(from_board, buckets, [1,2])) # print(move_legal(from_board, buckets, [1,2]))
print("from board:",self.from_board)
# if self.move_legal(self.from_board, buckets, self.roll): # if self.move_legal(self.from_board, buckets, self.roll):
sets = self.calc_move_sets(self.from_board, self.roll, player)
pot_board = self.gen_board_from_buckets(buckets) pot_board = self.gen_board_from_buckets(buckets)
sets = self.calc_move_sets(self.from_board, self.roll, player)
print("potential board:",pot_board)
# print("board:",pot_board) # print("board:",pot_board)
truth_values = [] truth_values = []
for t in sets: for t in sets: