reformat pep8

pull/5/head
Bobloy 7 years ago
parent 601c362308
commit d88e8040d7

@ -4,4 +4,4 @@ from .hangman import Hangman
def setup(bot): def setup(bot):
n = Hangman(bot) n = Hangman(bot)
bot.add_cog(n) bot.add_cog(n)
bot.add_listener(n._on_react, "on_reaction_add") bot.add_listener(n._on_react, "on_reaction_add")

@ -1,11 +1,9 @@
import discord
import os
from collections import defaultdict from collections import defaultdict
from discord.ext import commands
from random import randint from random import randint
from redbot.core import Config, checks, RedContext import discord
from discord.ext import commands
from redbot.core import Config, checks
class Hangman: class Hangman:
@ -20,7 +18,8 @@ class Hangman:
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
self.the_data = defaultdict(lambda:{"running": False, "hangman": 0, "guesses": [], "trackmessage": False, "answer": ''}) self.the_data = defaultdict(
lambda: {"running": False, "hangman": 0, "guesses": [], "trackmessage": False, "answer": ''})
self.answer_path = "hangman/data/hanganswers.txt" self.answer_path = "hangman/data/hanganswers.txt"
self.winbool = defaultdict(lambda: False) self.winbool = defaultdict(lambda: False)
@ -58,7 +57,7 @@ class Hangman:
"""> """>
\_________ \_________
|/ | |/ |
| """+theface+""" | """ + theface + """
| |
| |
| |
@ -69,7 +68,7 @@ class Hangman:
"""> """>
\________ \________
|/ | |/ |
| """+theface+""" | """ + theface + """
| | | |
| | | |
| |
@ -77,11 +76,10 @@ class Hangman:
|\___ |\___
HAN""", HAN""",
"""> """>
\_________ \_________
|/ | |/ |
| """+theface+""" | """ + theface + """
| /| | /|
| | | |
| |
@ -89,11 +87,10 @@ class Hangman:
|\___ |\___
HANG""", HANG""",
"""> """>
\_________ \_________
|/ | |/ |
| """+theface+""" | """ + theface + """
| /|\ | /|\
| | | |
| |
@ -101,12 +98,10 @@ class Hangman:
|\___ |\___
HANGM""", HANGM""",
"""> """>
\________ \________
|/ | |/ |
| """+theface+""" | """ + theface + """
| /|\ | /|\
| | | |
| / | /
@ -114,11 +109,10 @@ class Hangman:
|\___ |\___
HANGMA""", HANGMA""",
"""> """>
\________ \________
|/ | |/ |
| """+theface+""" | """ + theface + """
| /|\ | /|\
| | | |
| / \ | / \
@ -136,7 +130,7 @@ class Hangman:
@hangset.command(pass_context=True) @hangset.command(pass_context=True)
async def face(self, ctx: commands.Context, theface): async def face(self, ctx: commands.Context, theface):
message = ctx.message message = ctx.message
#Borrowing FlapJack's emoji validation (https://github.com/flapjax/FlapJack-Cogs/blob/master/smartreact/smartreact.py) # Borrowing FlapJack's emoji validation (https://github.com/flapjax/FlapJack-Cogs/blob/master/smartreact/smartreact.py)
if theface[:2] == "<:": if theface[:2] == "<:":
theface = [r for r in self.bot.emojis if r.id == theface.split(':')[2][:-1]][0] theface = [r for r in self.bot.emojis if r.id == theface.split(':')[2][:-1]][0]
@ -150,9 +144,9 @@ class Hangman:
await self.config.guild(ctx.guild).theface.set(theface) await self.config.guild(ctx.guild).theface.set(theface)
await self._update_hanglist() await self._update_hanglist()
await ctx.send("Face has been updated!") await ctx.send("Face has been updated!")
@commands.command(aliases=['hang'], pass_context=True) @commands.command(aliases=['hang'], pass_context=True)
async def hangman(self, ctx, guess: str=None): async def hangman(self, ctx, guess: str = None):
"""Play a game of hangman against the bot!""" """Play a game of hangman against the bot!"""
if guess is None: if guess is None:
if self.the_data[ctx.guild]["running"]: if self.the_data[ctx.guild]["running"]:
@ -167,10 +161,9 @@ class Hangman:
await ctx.send("Game of hangman is not yet running!\nStarting a game of hangman!") await ctx.send("Game of hangman is not yet running!\nStarting a game of hangman!")
self._startgame(ctx.guild) self._startgame(ctx.guild)
await self._printgame(ctx.channel) await self._printgame(ctx.channel)
else: else:
await self._guessletter(guess, ctx.channel) await self._guessletter(guess, ctx.channel)
def _startgame(self, guild): def _startgame(self, guild):
"""Starts a new game of hangman""" """Starts a new game of hangman"""
self.the_data[guild]["answer"] = self._getphrase().upper() self.the_data[guild]["answer"] = self._getphrase().upper()
@ -179,7 +172,7 @@ class Hangman:
self.winbool[guild] = False self.winbool[guild] = False
self.the_data[guild]["running"] = True self.the_data[guild]["running"] = True
self.the_data[guild]["trackmessage"] = False self.the_data[guild]["trackmessage"] = False
def _stopgame(self, guild): def _stopgame(self, guild):
"""Stops the game in current state""" """Stops the game in current state"""
self.the_data[guild]["running"] = False self.the_data[guild]["running"] = False
@ -189,47 +182,47 @@ class Hangman:
await channel.send("You Win!") await channel.send("You Win!")
self._stopgame(channel.guild) self._stopgame(channel.guild)
return return
if self.the_data[channel.guild]["hangman"] >= 7: if self.the_data[channel.guild]["hangman"] >= 7:
await channel.send("You Lose!\nThe Answer was: **"+self.the_data[channel.guild]["answer"]+"**") await channel.send("You Lose!\nThe Answer was: **" + self.the_data[channel.guild]["answer"] + "**")
self._stopgame(channel.guild) self._stopgame(channel.guild)
def _getphrase(self): def _getphrase(self):
"""Get a new phrase for the game and returns it""" """Get a new phrase for the game and returns it"""
phrasefile = open(self.answer_path, 'r') phrasefile = open(self.answer_path, 'r')
phrases = phrasefile.readlines() phrases = phrasefile.readlines()
outphrase = "" outphrase = ""
while outphrase == "": while outphrase == "":
outphrase = phrases[randint(0, len(phrases)-1)].partition(" (")[0] outphrase = phrases[randint(0, len(phrases) - 1)].partition(" (")[0]
return outphrase return outphrase
def _hideanswer(self): def _hideanswer(self):
"""Returns the obscured answer""" """Returns the obscured answer"""
out_str = "" out_str = ""
self.winbool = True self.winbool = True
for i in self.the_data["answer"]: for i in self.the_data["answer"]:
if i == " " or i == "-": if i == " " or i == "-":
out_str += i*2 out_str += i * 2
elif i in self.the_data["guesses"] or i not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": elif i in self.the_data["guesses"] or i not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
out_str += "__"+i+"__ " out_str += "__" + i + "__ "
else: else:
out_str += "**\_** " out_str += "**\_** "
self.winbool = False self.winbool = False
return out_str return out_str
def _guesslist(self): def _guesslist(self):
"""Returns the current letter list""" """Returns the current letter list"""
out_str = "" out_str = ""
for i in self.the_data["guesses"]: for i in self.the_data["guesses"]:
out_str += str(i) + "," out_str += str(i) + ","
out_str = out_str[:-1] out_str = out_str[:-1]
return out_str return out_str
async def _guessletter(self, guess, channel): async def _guessletter(self, guess, channel):
"""Checks the guess on a letter and prints game if acceptable guess""" """Checks the guess on a letter and prints game if acceptable guess"""
if guess.upper() not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or len(guess) != 1: if guess.upper() not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or len(guess) != 1:
@ -241,73 +234,68 @@ class Hangman:
return return
if guess.upper() not in self.the_data[channel.guild]["answer"]: if guess.upper() not in self.the_data[channel.guild]["answer"]:
self.the_data["hangman"] += 1 self.the_data["hangman"] += 1
self.the_data[channel.guild]["guesses"].append(guess.upper()) self.the_data[channel.guild]["guesses"].append(guess.upper())
await self._printgame(channel) await self._printgame(channel)
async def _on_react(self, reaction, user): async def _on_react(self, reaction, user):
""" Thanks to flapjack reactpoll for guidelines """ Thanks to flapjack reactpoll for guidelines
https://github.com/flapjax/FlapJack-Cogs/blob/master/reactpoll/reactpoll.py""" https://github.com/flapjax/FlapJack-Cogs/blob/master/reactpoll/reactpoll.py"""
if not self.the_data["trackmessage"]: if not self.the_data["trackmessage"]:
return return
if user == self.bot.user: if user == self.bot.user:
return # Don't remove bot's own reactions return # Don't remove bot's own reactions
message = reaction.message message = reaction.message
emoji = reaction.emoji emoji = reaction.emoji
if not message.id == self.the_data["trackmessage"]: if not message.id == self.the_data["trackmessage"]:
return return
if str(emoji) in self.letters: if str(emoji) in self.letters:
letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[self.letters.index(str(emoji))] letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[self.letters.index(str(emoji))]
await self._guessletter(letter, message.channel) await self._guessletter(letter, message.channel)
if str(emoji) in self.navigate: if str(emoji) in self.navigate:
if str(emoji) == self.navigate[0]: if str(emoji) == self.navigate[0]:
await self._reactmessage_am(message) await self._reactmessage_am(message)
if str(emoji) == self.navigate[-1]: if str(emoji) == self.navigate[-1]:
await self._reactmessage_nz(message) await self._reactmessage_nz(message)
async def _reactmessage_menu(self, message): async def _reactmessage_menu(self, message):
"""React with menu options""" """React with menu options"""
await message.clear_reactions() await message.clear_reactions()
await message.add_reaction(self.navigate[0]) await message.add_reaction(self.navigate[0])
await message.add_reaction(self.navigate[-1]) await message.add_reaction(self.navigate[-1])
async def _reactmessage_am(self, message): async def _reactmessage_am(self, message):
await message.clear_reactions() await message.clear_reactions()
for x in range(len(self.letters)): for x in range(len(self.letters)):
if x in [i for i,b in enumerate("ABCDEFGHIJKLM") if b not in self._guesslist()]: if x in [i for i, b in enumerate("ABCDEFGHIJKLM") if b not in self._guesslist()]:
await message.add_reaction(self.letters[x]) await message.add_reaction(self.letters[x])
await message.add_reaction(self.navigate[-1]) await message.add_reaction(self.navigate[-1])
async def _reactmessage_nz(self, message): async def _reactmessage_nz(self, message):
await self.bot.clear_reactions(message) await self.bot.clear_reactions(message)
for x in range(len(self.letters)): for x in range(len(self.letters)):
if x in [i for i,b in enumerate("NOPQRSTUVWXYZ") if b not in self._guesslist()]: if x in [i for i, b in enumerate("NOPQRSTUVWXYZ") if b not in self._guesslist()]:
await message.add_reaction(self.letters[x+13]) await message.add_reaction(self.letters[x + 13])
await message.add_reaction(self.navigate[0])
await message.add_reaction(self.navigate[0])
async def _printgame(self, channel): async def _printgame(self, channel):
"""Print the current state of game""" """Print the current state of game"""
cSay = ("Guess this: " + str(self._hideanswer()) + "\n" cSay = ("Guess this: " + str(self._hideanswer()) + "\n"
+ "Used Letters: " + str(self._guesslist()) + "\n" + "Used Letters: " + str(self._guesslist()) + "\n"
+ self.hanglist[self.the_data["hangman"]] + "\n" + self.hanglist[self.the_data["hangman"]] + "\n"
+ self.navigate[0]+" for A-M, "+self.navigate[-1]+" for N-Z") + self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z")
message = await channel.send(cSay) message = await channel.send(cSay)
@ -315,10 +303,9 @@ class Hangman:
await self._reactmessage_menu(message) await self._reactmessage_menu(message)
await self._checkdone(channel) await self._checkdone(channel)
def setup(bot): def setup(bot):
n = Hangman(bot) n = Hangman(bot)
bot.add_cog(n) bot.add_cog(n)
bot.add_listener(n._on_react, "on_reaction_add") bot.add_listener(n._on_react, "on_reaction_add")

@ -14,7 +14,7 @@
"short": "Play Hangman", "short": "Play Hangman",
"tags": [ "tags": [
"game", "game",
"fun", "fun",
"bobloy" "bobloy"
] ]
} }
Loading…
Cancel
Save