Skip to content

Commit d4a8c71

Browse files
committed
Massive Work done to progress the Online portion of the game.
1 parent ff31ffe commit d4a8c71

File tree

14 files changed

+256
-73
lines changed

14 files changed

+256
-73
lines changed

Big2.py

+6-21
Original file line numberDiff line numberDiff line change
@@ -295,33 +295,18 @@ def easy_difficulty(self, num_player):
295295
self.reset_drawn_stat_rect()
296296
self.clock.tick(self.settings.FPS)
297297

298+
self.game.game_status()
299+
298300
# Watch for keyboard and mouse events.
299301
for event in pygame.event.get():
300302
if event.type == pygame.QUIT:
301303
sys.exit()
302304
if event.type == pygame.MOUSEBUTTONDOWN:
303305
if event.button == 1:
304-
if self.game.get_turn() == "player":
305-
mouse_x, mouse_y = pygame.mouse.get_pos()
306-
deck_selected = self.game.select(mouse_x, mouse_y)
307-
308-
if deck_selected == "player":
309-
self.game.update(o=False, c=True, d=True, s=False, l=False, r=False, gu=False)
310-
elif self.game.get_turn() == "opposite":
311-
mouse_x, mouse_y = pygame.mouse.get_pos()
312-
deck_selected = self.game.select(mouse_x, mouse_y)
313-
if deck_selected == "opposite":
314-
self.game.update(p=False, c=False, d=False, s=False, l=False, r=False, gu=False)
315-
elif self.game.get_turn() == "left":
316-
mouse_x, mouse_y = pygame.mouse.get_pos()
317-
deck_selected = self.game.select(mouse_x, mouse_y)
318-
if deck_selected == "left":
319-
self.game.update(o=False, r=False, p=False, c=False, d=False, s=False, gu=False)
320-
elif self.game.get_turn() == "right":
321-
mouse_x, mouse_y = pygame.mouse.get_pos()
322-
deck_selected = self.game.select(mouse_x, mouse_y)
323-
if deck_selected == "right":
324-
self.game.update(o=False, l=False, p=False, c=False, d=False, s=False, gu=False)
306+
mouse_x, mouse_y = pygame.mouse.get_pos()
307+
deck_selected = self.game.select(mouse_x, mouse_y)
308+
309+
self.game.update(c=True, d=True, s=False, l=False, r=False, gu=False)
325310
if event.button == 3:
326311
self.dragging = True
327312
if event.type == pygame.MOUSEBUTTONUP:

Board/AbstractBoard.py

+3
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ def shuffle_deck(self):
193193
def deal(self, last_winner):
194194
pass
195195

196+
def check_winner(self):
197+
pass
198+
196199
def move_chosen_to_current(self, pile_from):
197200
pass
198201

Board/Board2/Board2.py

+42-17
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,10 @@ def select_deck(self, mouse_x, mouse_y):
206206
# and then go through every card in that deck to find the card. Move that card to the chosen
207207
# If a chosen card is selected, then it is "unchosen" i.e. removed from the chosen pile
208208
def choose_card(self, mouse_x, mouse_y, cur_player, dragging):
209-
if self.select_deck(mouse_x, mouse_y) == "player" and cur_player == "player":
209+
if self.select_deck(mouse_x, mouse_y) == "player":
210210
return self.player_deck.handle_selected(mouse_x, mouse_y, dragging)
211-
elif self.select_deck(mouse_x, mouse_y) == "opposite" and cur_player == "opposite":
211+
if self.select_deck(mouse_x, mouse_y) == "opposite":
212212
return self.opposite_deck.handle_selected(mouse_x, mouse_y, dragging)
213-
else:
214-
return "Not Selected " + cur_player
215213

216214
def rotate_deck(self, order):
217215
if order == [2, 1]:
@@ -224,6 +222,34 @@ def move_to_discard(self):
224222
self.discard_deck.transfer_all_cards_to_deck(current_deck)
225223
self.current_deck.remove_card(current_deck)
226224

225+
def check_winner(self):
226+
player = self.player_deck.get_deck()
227+
opposite = self.opposite_deck.get_deck()
228+
229+
if len(player) == 0:
230+
return "player"
231+
232+
if len(opposite) == 0:
233+
return "opposite"
234+
235+
player_2_count = 0
236+
for card in player:
237+
if card.get_value() == "2":
238+
player_2_count += 1
239+
240+
if player_2_count == 4:
241+
return "player"
242+
243+
opposite_2_count = 0
244+
for card in opposite:
245+
if card.get_value() == "2":
246+
opposite_2_count += 1
247+
248+
if opposite_2_count == 4:
249+
return "opposite"
250+
251+
return "none"
252+
227253
def play(self, player, turn):
228254
operating_deck = None
229255
if player == "player":
@@ -232,11 +258,10 @@ def play(self, player, turn):
232258
operating_deck = self.opposite_deck.get_chosen()
233259

234260
if self.valid_move(operating_deck, player, turn):
235-
pass
236261
# If valid move, then move old cards in current to discard
237262
self.move_to_discard()
238263
# move chosen to current
239-
self.move_chosen_to_current("player")
264+
self.move_chosen_to_current(player)
240265

241266
return True
242267
# return "success" / true
@@ -319,30 +344,30 @@ def valid_move(self, operating_deck, player, turn):
319344
if self.current_deck.get_length() == 1:
320345
if current_deck[0].get_value() == "2":
321346
if len(operating_deck) == 1:
322-
if operating_deck[0] != "2":
347+
if operating_deck[0].get_value() != "2":
323348
if self.quad_beat_two(operating_deck) or self.triple_beat_two(operating_deck) or \
324349
self.special_beat_two(operating_deck):
325350
return True
326351

327352
return False
328353
else:
329-
if compare_suits(operating_deck[0], current_deck[0]) == "player":
354+
if compare(operating_deck[0], current_deck[0]) == "player":
330355
return True
331356
else:
332357
return False
333-
elif len(operating_deck) == 2 or len(operating_deck) == 4:
334-
if operating_deck[0] != "2" or not is_same(operating_deck):
358+
elif len(operating_deck) == 4:
359+
if not is_same(operating_deck):
335360
return False
336361
else:
337362
return True
338363
elif len(operating_deck) == 3:
339364
return False
340365
elif len(operating_deck) % 2 == 0 and len(operating_deck) > 5:
341-
return operating_deck[0] == "2" and self.is_double_consecutive(operating_deck)
366+
return self.is_double_consecutive(operating_deck)
342367
else:
343368
return False
344369
else:
345-
if compare_suits(operating_deck[0], current_deck[0]) == "player":
370+
if compare(operating_deck[0], current_deck[0]) == "player":
346371
return True
347372
else:
348373
return False
@@ -352,7 +377,7 @@ def valid_move(self, operating_deck, player, turn):
352377
if len(operating_deck) == 1:
353378
return False
354379
elif len(operating_deck) == 2:
355-
if operating_deck[0] != "2":
380+
if operating_deck[0].get_value() != "2":
356381
if self.quad_beat_two(operating_deck) or self.special_beat_two(operating_deck):
357382
return True
358383
else:
@@ -366,12 +391,12 @@ def valid_move(self, operating_deck, player, turn):
366391
else:
367392
return False
368393
elif len(operating_deck) == 4:
369-
if operating_deck[0] != "2" or not is_same(operating_deck):
394+
if operating_deck[0].get_value() != "2" or not is_same(operating_deck):
370395
return False
371396
else:
372397
return True
373398
elif len(operating_deck) % 2 == 0 and len(operating_deck) > 5:
374-
return operating_deck[0] == "2" and self.is_double_consecutive(operating_deck)
399+
return operating_deck[0].get_value() == "2" and self.is_double_consecutive(operating_deck)
375400
else:
376401
return False
377402
else:
@@ -479,12 +504,12 @@ def special_beat_two(self, current_deck):
479504
return False
480505

481506
def is_consecutive(self, operating_deck):
482-
if operating_deck[0] == "2":
507+
if operating_deck[-1].get_value() == "2":
483508
return False
484509

485510
i = 1
486511
while i < len(operating_deck):
487-
if int(operating_deck[i - 1].get_value()) >= int(operating_deck[i].get_value()) + 1:
512+
if to_int_value(operating_deck[i - 1].get_value()) >= to_int_value(operating_deck[i].get_value()):
488513
return False
489514

490515
i += 1

Bots/EasyBot.py

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
import pygame
2+
3+
from Game.Player import Player
4+
from Utils.Settings import Settings
5+
6+
17
class EasyBot:
2-
def __init__(self):
3-
pass
8+
def __init__(self, surface, name, deck):
9+
self.board = None
10+
self.deck = deck
11+
self.surface = surface
12+
self.name = Player(self.surface, player_type=self.deck)
13+
self.name.enter_name(name)
14+
self.score = 0
15+
self.settings = Settings()
16+
17+
def add_board(self, board):
18+
self.board = board
19+
20+
def draw_name(self):
21+
self.name.draw_name()
22+
23+
def enter_score(self, score):
24+
self.name.enter_score(score)
25+
26+
def get_score(self):
27+
return self.name.get_score()
28+
29+
def enter_surface(self, surface):
30+
self.name.enter_surface(surface)

Cards/Cards.py

+4
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ def __init__(self, display, surface, value, suit, front_image, back_image):
5858
# rect used to calculate the area that is blocked by the card above
5959
self.rect_blocked = pygame.Rect(0, 0, 0, 0)
6060

61+
def scale(self, x , y):
62+
self.front_image = pygame.transform.scale(self.front_image, (x, y))
63+
self.back_image = pygame.transform.scale(self.back_image, (x, y))
64+
6165
# Move the card to a different location
6266
# If we are moving the card to the shuffle position, we will make it appear
6367
# instantly. If shuffle is true, then we are moving it to the shuffle

Cards/Deck/Current/CurrentDeck.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(self, x, y, width, display, surface):
2020
self.full_card = pygame.Surface((self.card_width, self.card_height))
2121
self.full_card.fill(self.settings.bg_color)
2222

23-
self.background = pygame.Surface((self.width, self.card_height))
23+
self.background = pygame.Surface((self.width + 20, self.card_height))
2424
self.background.fill(self.settings.bg_color)
2525

2626
def change_pos(self, x, y):

Cards/Deck/Discard/DiscardDeck.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ def __init__(self, x, y, display, surface):
1010

1111
self.x = x
1212
self.y = y
13+
self.discard_x_size = 60
14+
self.discard_y_size = 100
1315
self.settings = Settings()
1416

1517
def change_pos(self, x, y):
@@ -19,7 +21,8 @@ def change_pos(self, x, y):
1921
def draw_deck(self, move_from_shuffle=False, game_update=False, draw=True):
2022
if len(self.deck) != 0:
2123
for x in self.deck:
22-
x.move(self.x, self.y, False)
24+
x.scale(self.discard_x_size, self.discard_y_size)
25+
x.move(self.x, self.y, True)
2326
x.update_vis(False)
2427

2528
card = self.deck[len(self.deck) - 1]

Cards/Deck/PlayDeck/Opposite/OppositeDeck.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def handle_selected(self, mouse_x, mouse_y, dragging):
126126
self.mouse_y_offset = card_y - mouse_y
127127

128128
cx, cy = card.cur_pos()
129-
self.surface.blit(self.full_card, (cx + 2, cy))
129+
self.surface.blit(self.full_card, (cx, cy))
130130

131131
self.draw_previous(i)
132132
self.draw_rest_deck(self.deck[max(i - 1, 0)], for_drag=True)

Cards/Deck/PlayDeck/TopBottomDeck.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ def to_int_value(value):
2929
return 12
3030
if value == "K":
3131
return 13
32-
else:
32+
elif value == "A":
3333
return 14
34+
else:
35+
# Represents 2
36+
return 15
3437

3538

3639
def compare_suits(player, current):

Cards/Deck/Shuffle/ShuffleDeck.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import random
2+
13
import pygame
24

35
from Cards.Deck.AbstractDeck import AbstractDeck
@@ -42,7 +44,7 @@ def update(self, game_update):
4244
pygame.display.flip()
4345

4446
def shuffle(self):
45-
pass
47+
random.shuffle(self.deck)
4648

4749
def card_change_in_play(self, index, boolean):
4850
self.deck[index].change_in_play(boolean)

Game/Player.py

+3
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,6 @@ def draw_name(self):
3838
pass
3939
elif self.player_type == "right":
4040
pass
41+
42+
def enter_surface(self, surface):
43+
self.surface = surface

0 commit comments

Comments
 (0)