reformat pep8

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

@ -4,4 +4,4 @@ from .hangman import Hangman
def setup(bot):
n = Hangman(bot)
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 discord.ext import commands
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:
@ -20,7 +18,8 @@ class Hangman:
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.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""",
""">
\_________
|/ |
| """+theface+"""
| """ + theface + """
| /|
| |
|
@ -89,11 +87,10 @@ class Hangman:
|\___
HANG""",
""">
\_________
|/ |
| """+theface+"""
| """ + theface + """
| /|\
| |
|
@ -101,12 +98,10 @@ class Hangman:
|\___
HANGM""",
""">
\________
|/ |
| """+theface+"""
| """ + theface + """
| /|\
| |
| /
@ -114,11 +109,10 @@ class Hangman:
|\___
HANGMA""",
""">
\________
|/ |
| """+theface+"""
| """ + theface + """
| /|\
| |
| / \
@ -136,7 +130,7 @@ class Hangman:
@hangset.command(pass_context=True)
async def face(self, ctx: commands.Context, theface):
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] == "<:":
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._update_hanglist()
await ctx.send("Face has been updated!")
@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!"""
if guess is None:
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!")
self._startgame(ctx.guild)
await self._printgame(ctx.channel)
else:
else:
await self._guessletter(guess, ctx.channel)
def _startgame(self, guild):
"""Starts a new game of hangman"""
self.the_data[guild]["answer"] = self._getphrase().upper()
@ -179,7 +172,7 @@ class Hangman:
self.winbool[guild] = False
self.the_data[guild]["running"] = True
self.the_data[guild]["trackmessage"] = False
def _stopgame(self, guild):
"""Stops the game in current state"""
self.the_data[guild]["running"] = False
@ -189,47 +182,47 @@ class Hangman:
await channel.send("You Win!")
self._stopgame(channel.guild)
return
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)
def _getphrase(self):
"""Get a new phrase for the game and returns it"""
phrasefile = open(self.answer_path, 'r')
phrases = phrasefile.readlines()
outphrase = ""
while outphrase == "":
outphrase = phrases[randint(0, len(phrases)-1)].partition(" (")[0]
outphrase = phrases[randint(0, len(phrases) - 1)].partition(" (")[0]
return outphrase
def _hideanswer(self):
"""Returns the obscured answer"""
out_str = ""
self.winbool = True
for i in self.the_data["answer"]:
if i == " " or i == "-":
out_str += i*2
out_str += i * 2
elif i in self.the_data["guesses"] or i not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
out_str += "__"+i+"__ "
out_str += "__" + i + "__ "
else:
out_str += "**\_** "
self.winbool = False
return out_str
def _guesslist(self):
"""Returns the current letter list"""
out_str = ""
for i in self.the_data["guesses"]:
out_str += str(i) + ","
out_str = out_str[:-1]
return out_str
async def _guessletter(self, guess, channel):
"""Checks the guess on a letter and prints game if acceptable guess"""
if guess.upper() not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or len(guess) != 1:
@ -241,73 +234,68 @@ class Hangman:
return
if guess.upper() not in self.the_data[channel.guild]["answer"]:
self.the_data["hangman"] += 1
self.the_data[channel.guild]["guesses"].append(guess.upper())
await self._printgame(channel)
async def _on_react(self, reaction, user):
""" Thanks to flapjack reactpoll for guidelines
https://github.com/flapjax/FlapJack-Cogs/blob/master/reactpoll/reactpoll.py"""
if not self.the_data["trackmessage"]:
return
if user == self.bot.user:
return # Don't remove bot's own reactions
message = reaction.message
emoji = reaction.emoji
if not message.id == self.the_data["trackmessage"]:
return
if str(emoji) in self.letters:
letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[self.letters.index(str(emoji))]
await self._guessletter(letter, message.channel)
if str(emoji) in self.navigate:
if str(emoji) == self.navigate[0]:
await self._reactmessage_am(message)
if str(emoji) == self.navigate[-1]:
await self._reactmessage_nz(message)
async def _reactmessage_menu(self, message):
"""React with menu options"""
await message.clear_reactions()
await message.add_reaction(self.navigate[0])
await message.add_reaction(self.navigate[-1])
async def _reactmessage_am(self, message):
await message.clear_reactions()
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.navigate[-1])
async def _reactmessage_nz(self, message):
await self.bot.clear_reactions(message)
for x in range(len(self.letters)):
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.navigate[0])
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.navigate[0])
async def _printgame(self, channel):
"""Print the current state of game"""
cSay = ("Guess this: " + str(self._hideanswer()) + "\n"
+ "Used Letters: " + str(self._guesslist()) + "\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)
@ -315,10 +303,9 @@ class Hangman:
await self._reactmessage_menu(message)
await self._checkdone(channel)
def setup(bot):
n = Hangman(bot)
bot.add_cog(n)
bot.add_listener(n._on_react, "on_reaction_add")

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