Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # How I created the Snake game
- import discord
- import asyncio
- import datetime
- import random
- from discord.ext import commands
- from discord import SelectOption
- from discord.ui import View, Button
- from discord.commands import slash_command
- date = datetime.datetime.utcnow()
- rdg_av = ''
- BLUE = 0x03b6fc
- RED = 0xff2626
- GREEN = 0x32ff2b
- class CommandCog(commands.Cog, name="Snek"):
- def __init__(self, bot):
- self.bot = bot
- @slash_command(guild_ids=[844279406087503892, 782698303568871474], name="snek", description="Summon the snek game")
- async def snek(self, ctx):
- moves = ['up', 'down', 'left', 'right', 'cancel']
- plr_pos = [0, 7, 14, 21, 28, 35, 42]
- bred_pos = [5, 6, 12, 13, 19, 20, 26, 27, 33, 34, 40, 41, 47, 48]
- board = ["⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜",
- "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", "⬜", ]
- visual = [[0, 1, 2, 3, 4, 5, 6],
- [7, 8, 9, 10, 11, 12, 13],
- [14, 15, 16, 17, 18, 19, 20],
- [21, 22, 23, 24, 25, 26, 27],
- [28, 29, 30, 31, 32, 33, 34],
- [35, 36, 37, 38, 39, 40, 41],
- [42, 43, 44, 45, 46, 47, 48]]
- # Add bombs, player and goal
- snek_pos = random.choice(plr_pos)
- goal_pos = random.choice(bred_pos)
- i = random.randint(3, 10)
- while True:
- i = i - 1
- if not i == 0:
- while True:
- bomb_pos = random.choice(range(len(board)))
- if not board[bomb_pos] == ':bomb:' or not board[bomb_pos] == '<:PartySquirt:895162279643987979>' \
- or not board[bomb_pos] == ':bread:':
- board[bomb_pos] = ':bomb:'
- break
- else:
- continue
- else:
- break
- board[snek_pos] = '<:PartySquirt:895162279643987979>'
- board[goal_pos] = ':bread:'
- # print the grid
- parts = []
- line = ""
- for x in range(len(board)):
- if x == 6 or x == 13 or x == 20 or x == 27 or x == 34 or x == 41 or x == 48:
- line += "" + board[x]
- parts.append(line)
- line = ""
- else:
- line += "" + board[x]
- view = View()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=False, row=1, label="ᐃ", custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=False, row=2, label="ᐊ", custom_id="left"))
- view.add_item(Button(style=discord.ButtonStyle.red, disabled=False, row=2, label="✕", custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=False, row=2, label="ᐅ", custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=False, row=3, label="ᐁ", custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- snek_game_msg = await ctx.respond('\n'.join(parts), view=view)
- while True:
- def check(c):
- return ctx.author == c.user and c.channel == ctx.channel
- try:
- res = await self.bot.wait_for("interaction", check=check, timeout=300)
- if not res.user.id == ctx.author.id:
- continue
- if res:
- if res.data['custom_id'] == "stop":
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ", custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕", custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply("Aw man, no bread today <:PensiveDuck:811010517048361042>")
- await res.edit_original_message(view=view)
- break
- # Move up
- if res.data['custom_id'] == 'up':
- snek = 0
- bred = 0
- for num in range(len(board)):
- if board[num] == '<:PartySquirt:895162279643987979>':
- snek = num
- for num in range(len(board)):
- if board[num] == ':bread:':
- bred = num
- if snek - 7 < 0:
- await ctx.send("You cannot move up!", delete_after=3)
- else:
- board[snek] = "🟨"
- snek = snek - 7
- bomb = board[snek]
- board[snek] = '<:PartySquirt:895162279643987979>'
- parts2 = []
- line2 = ""
- for x in range(len(board)):
- if x == 6 or x == 13 or x == 20 or x == 27 or x == 34 or x == 41 or x == 48:
- line2 += "" + board[x]
- parts2.append(line2)
- line2 = ""
- else:
- line2 += "" + board[x]
- if snek == bred:
- await res.message.reply("Yay bread!!")
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- elif bomb == ':bomb:':
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply("Come on man you made me explode <:angrycry:855432221052502026>")
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- else:
- await res.edit_original_message(content='\n'.join(
- parts2),view=view)
- # Move Down
- if res.data['custom_id'] == 'down':
- snek = 0
- bred = 0
- for num in range(len(board)):
- if board[num] == '<:PartySquirt:895162279643987979>':
- snek = num
- for num in range(len(board)):
- if board[num] == ':bread:':
- bred = num
- if snek + 7 > 48:
- await ctx.send("You cannot move down!", delete_after=3)
- else:
- board[snek] = "🟨"
- snek = snek + 7
- bomb = board[snek]
- board[snek] = '<:PartySquirt:895162279643987979>'
- parts2 = []
- line2 = ""
- for x in range(len(board)):
- if x == 6 or x == 13 or x == 20 or x == 27 or x == 34 or x == 41 or x == 48:
- line2 += "" + board[x]
- parts2.append(line2)
- line2 = ""
- else:
- line2 += "" + board[x]
- if snek == bred:
- await res.message.reply("Yay bread!!")
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- elif bomb == ':bomb:':
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply("Come on man you made me explode <:angrycry:855432221052502026>")
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- else:
- await res.edit_original_message(content='\n'.join(
- parts2), view=view)
- # Move Left
- if res.data['custom_id'] == 'left':
- snek = 0
- bred = 0
- for num in range(len(board)):
- if board[num] == '<:PartySquirt:895162279643987979>':
- snek = num
- for num in range(len(board)):
- if board[num] == ':bread:':
- bred = num
- if snek == 0 or snek == 7 or snek == 14 or snek == 21 or snek == 28 or snek == 35 or snek == 42:
- await ctx.send("You cannot move left!", delete_after=3)
- else:
- board[snek] = "🟨"
- snek = snek - 1
- bomb = board[snek]
- board[snek] = '<:PartySquirt:895162279643987979>'
- parts2 = []
- line2 = ""
- for x in range(len(board)):
- if x == 6 or x == 13 or x == 20 or x == 27 or x == 34 or x == 41 or x == 48:
- line2 += "" + board[x]
- parts2.append(line2)
- line2 = ""
- else:
- line2 += "" + board[x]
- if snek == bred:
- await ctx.send("Yay bread!!")
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- elif bomb == ':bomb:':
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply("Come on man you made me explode <:angrycry:855432221052502026>")
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- else:
- await res.edit_original_message(content='\n'.join(
- parts2), view=view)
- # Move Right
- if res.data['custom_id'] == 'right':
- snek = 0
- bred = 0
- for num in range(len(board)):
- if board[num] == '<:PartySquirt:895162279643987979>':
- snek = num
- for num in range(len(board)):
- if board[num] == ':bread:':
- bred = num
- if snek == 6 or snek == 13 or snek == 20 or snek == 27 or snek == 34 or snek == 41 or snek == 48:
- await ctx.send("You cannot move right!", delete_after=3)
- else:
- board[snek] = "🟨"
- snek = snek + 1
- bomb = board[snek]
- board[snek] = '<:PartySquirt:895162279643987979>'
- parts2 = []
- line2 = ""
- for x in range(len(board)):
- if x == 6 or x == 13 or x == 20 or x == 27 or x == 34 or x == 41 or x == 48:
- line2 += "" + board[x]
- parts2.append(line2)
- line2 = ""
- else:
- line2 += "" + board[x]
- if snek == bred:
- await res.message.reply("Yay bread!!")
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- elif bomb == ':bomb:':
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply("Come on man you made me explode <:angrycry:855432221052502026>")
- await res.edit_original_message(content='\n'.join(parts2),
- view=view)
- break
- else:
- await res.edit_original_message(content='\n'.join(
- parts2), view=view)
- except asyncio.TimeoutError:
- view.clear_items()
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(
- Button(style=discord.ButtonStyle.blurple, disabled=True, row=1, label="ᐃ",
- custom_id="up"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=1, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐊ",
- custom_id="left"))
- view.add_item(
- Button(style=discord.ButtonStyle.red, disabled=True, row=2, label="✕",
- custom_id="stop"))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=2, label="ᐅ",
- custom_id="right"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- view.add_item(Button(style=discord.ButtonStyle.blurple, disabled=True, row=3, label="ᐁ",
- custom_id="down"))
- view.add_item(Button(style=discord.ButtonStyle.grey, disabled=True, row=3, label=" "))
- await res.message.reply(f"{ctx.author.mention}, why you ghost me man <:angrycry:855432221052502026>")
- await res.edit_original_message(view=view)
- break
- def setup(bot):
- bot.add_cog(CommandCog(bot))
- print("Snake cog is loaded!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement