fix lobby error
This commit is contained in:
parent
b06d7efa40
commit
7936fdf649
@ -54,7 +54,7 @@ def disconnect(sid):
|
|||||||
@sio.event
|
@sio.event
|
||||||
def create_room(sid, room_name):
|
def create_room(sid, room_name):
|
||||||
while len([g for g in games if g.name == room_name]):
|
while len([g for g in games if g.name == room_name]):
|
||||||
room_name += '_1'
|
room_name += f'_{random.randint(0,100)}'
|
||||||
sio.leave_room(sid, 'lobby')
|
sio.leave_room(sid, 'lobby')
|
||||||
sio.enter_room(sid, room_name)
|
sio.enter_room(sid, room_name)
|
||||||
g = Game(room_name, sio)
|
g = Game(room_name, sio)
|
||||||
@ -79,7 +79,7 @@ def join_room(sid, room):
|
|||||||
sio.leave_room(sid, 'lobby')
|
sio.leave_room(sid, 'lobby')
|
||||||
sio.enter_room(sid, room_name)
|
sio.enter_room(sid, room_name)
|
||||||
while len([p for p in games[i].players if p.name == sio.get_session(sid).name]):
|
while len([p for p in games[i].players if p.name == sio.get_session(sid).name]):
|
||||||
sio.get_session(sid).name += '_1'
|
sio.get_session(sid).name += f'_{random.randint(0,100)}'
|
||||||
games[i].add_player(sio.get_session(sid))
|
games[i].add_player(sio.get_session(sid))
|
||||||
advertise_lobbies()
|
advertise_lobbies()
|
||||||
|
|
||||||
|
@ -41,7 +41,27 @@ class Card(ABC):
|
|||||||
return f'{self.name} {char}{self.number}'
|
return f'{self.name} {char}{self.number}'
|
||||||
return super().__str__()
|
return super().__str__()
|
||||||
|
|
||||||
def play_card(self, player, against):
|
def play_card(self, player, against):#self --> carta
|
||||||
|
if self.is_equipment:
|
||||||
|
if self.is_weapon:
|
||||||
|
has_weapon = False
|
||||||
|
for i in range(len(player.equipment)):
|
||||||
|
if player.equipment[i].is_weapon:
|
||||||
|
player.game.deck.scrap(player.equipment[i])
|
||||||
|
player.equipment[i] = self
|
||||||
|
has_weapon = True
|
||||||
|
break
|
||||||
|
if not has_weapon:
|
||||||
|
player.equipment.append(self)
|
||||||
|
elif self.name in [c.name for c in player.equipment if not isinstance(c, Dinamite)]:
|
||||||
|
for i in range(len(player.equipment)):
|
||||||
|
print('tipo',type(self))
|
||||||
|
if type(player.equipment[i]) == type(self):
|
||||||
|
player.game.deck.scrap(self.equipment[i])
|
||||||
|
player.equipment[i] = self
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
player.equipment.append(self)
|
||||||
contro = f' contro {against}' if against else ''
|
contro = f' contro {against}' if against else ''
|
||||||
player.sio.emit('chat_message', room=player.game.name,
|
player.sio.emit('chat_message', room=player.game.name,
|
||||||
data=f'{player.name} ha giocato {self.name}{contro}.')
|
data=f'{player.name} ha giocato {self.name}{contro}.')
|
||||||
@ -83,6 +103,13 @@ class Prigione(Card):
|
|||||||
self.desc = "Equipaggia questa carta a un altro giocatore, tranne lo Sceriffo. Il giocatore scelto all'inizio del suo turno, prima di pescare dovrà estrarre: se esce Cuori scarta questa carta e gioca normalmente il turno, altrimenti scarta questa carta e salta il turno"
|
self.desc = "Equipaggia questa carta a un altro giocatore, tranne lo Sceriffo. Il giocatore scelto all'inizio del suo turno, prima di pescare dovrà estrarre: se esce Cuori scarta questa carta e gioca normalmente il turno, altrimenti scarta questa carta e salta il turno"
|
||||||
self.need_target = True
|
self.need_target = True
|
||||||
|
|
||||||
|
def play_card(self, player, against):
|
||||||
|
if against != None and not isinstance(player.game.get_player_named(against).role, r.Sheriff):
|
||||||
|
player.sio.emit('chat_message', room=player.game.name,
|
||||||
|
data=f'{self.name} ha giocato {self.name} contro {against}.')
|
||||||
|
player.game.get_player_named(against).equipment.append(self)
|
||||||
|
player.game.get_player_named(against).notify_self()
|
||||||
|
return False
|
||||||
|
|
||||||
class Remington(Card):
|
class Remington(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
|
@ -251,32 +251,8 @@ class Player:
|
|||||||
return
|
return
|
||||||
card: cs.Card = self.hand.pop(hand_index)
|
card: cs.Card = self.hand.pop(hand_index)
|
||||||
print(self.name, 'is playing ', card, ' against:', against)
|
print(self.name, 'is playing ', card, ' against:', against)
|
||||||
if isinstance(card, cs.Prigione) and not isinstance(self.game.get_player_named(against).role, r.Sheriff):
|
did_play_card = card.play_card(self, against)
|
||||||
self.sio.emit('chat_message', room=self.game.name,
|
if not card.is_equipment:
|
||||||
data=f'{self.name} ha giocato {card.name} contro {against}.')
|
|
||||||
self.game.get_player_named(against).equipment.append(card)
|
|
||||||
self.game.get_player_named(against).notify_self()
|
|
||||||
elif card.is_equipment:
|
|
||||||
if card.is_weapon:
|
|
||||||
has_weapon = False
|
|
||||||
for i in range(len(self.equipment)):
|
|
||||||
if self.equipment[i].is_weapon:
|
|
||||||
self.game.deck.scrap(self.equipment[i])
|
|
||||||
self.equipment[i] = card
|
|
||||||
has_weapon = True
|
|
||||||
break
|
|
||||||
if not has_weapon:
|
|
||||||
self.equipment.append(card)
|
|
||||||
elif card.name in [c.name for c in self.equipment if not isinstance(c, cs.Dinamite)]:
|
|
||||||
for i in range(len(self.equipment)):
|
|
||||||
if type(self.equipment[i]) == type(card):
|
|
||||||
self.game.deck.scrap(self.equipment[i])
|
|
||||||
self.equipment[i] = card
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
self.equipment.append(card)
|
|
||||||
else:
|
|
||||||
did_play_card = card.play_card(self, against)
|
|
||||||
if did_play_card:
|
if did_play_card:
|
||||||
self.game.deck.scrap(card)
|
self.game.deck.scrap(card)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user