aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Shivansh-007 <[email protected]>2021-01-31 04:55:57 +0530
committerGravatar Shivansh-007 <[email protected]>2021-01-31 04:55:57 +0530
commit46ca17d5fe41e704e40e22839e9d8b21c9a7b659 (patch)
tree848f274ec5c1edd5e415b932e6b3bcdc87f9ba14
parentError while sending surrender message as it was taking .user instead of .mention (diff)
Let game_over function handle all gane over instances
-rw-r--r--bot/exts/evergreen/connect_four.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/bot/exts/evergreen/connect_four.py b/bot/exts/evergreen/connect_four.py
index 7ad0d723..31b85bbe 100644
--- a/bot/exts/evergreen/connect_four.py
+++ b/bot/exts/evergreen/connect_four.py
@@ -88,9 +88,14 @@ class Game:
await self.message.add_reaction(CROSS_EMOJI)
await self.message.edit(content=None, embed=embed)
- async def game_over(self, winner: discord.user, loser: discord.user) -> None:
+ async def game_over(self, action: str, player1: discord.user, player2: discord.user) -> None:
"""Announces to public chat."""
- await self.channel.send(f"Game Over! {winner.mention} won against {loser.mention}")
+ if action == "win":
+ await self.channel.send(f"Game Over! {player1.mention} won against {player2.mention}")
+ elif action == "draw":
+ await self.channel.send(f"Game Over! {player1.mention} {player2.mention} It's A Draw :tada:")
+ elif action == "quit":
+ await self.channel.send(f"{self.player1.mention} surrendered. Game over!")
await self.print_grid()
async def start_game(self) -> None:
@@ -103,8 +108,11 @@ class Game:
if isinstance(self.player_active, AI):
coords = self.player_active.play()
if not coords:
- await self.channel.send("Game Over! It's A Draw :tada:")
- await self.print_grid()
+ await self.game_over(
+ "draw",
+ self.bot.user if isinstance(self.player_active, AI) else self.player_active,
+ self.bot.user if isinstance(self.player_inactive, AI) else self.player_inactive,
+ )
else:
coords = await self.player_turn()
@@ -113,6 +121,7 @@ class Game:
if self.check_win(coords, 1 if self.player_active == self.player1 else 2):
await self.game_over(
+ "win",
self.bot.user if isinstance(self.player_active, AI) else self.player_active,
self.bot.user if isinstance(self.player_inactive, AI) else self.player_inactive,
)
@@ -143,9 +152,9 @@ class Game:
else:
await message.delete()
if str(reaction.emoji) == CROSS_EMOJI:
- await self.channel.send(f"{self.player_active.mention} surrendered. Game over!")
+ await self.game_over("quit", self.player_active, self.player_inactive)
return
-
+
await self.message.remove_reaction(reaction, user)
column_num = self.unicode_numbers.index(str(reaction.emoji))