Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

disconnectednoteslist = []

class lobby:
def __init__(self,mode,player1):
self.gamemode = mode
self.player1 = player1
self.player2 = None
self.player3 = None
self.player4 = None
self.status = None

def reset(self):
self.gamemode = self.mode
self.player1 = None
self.player2 = None
self.player3 = None
self.player4 = None
self.status = None
def isfull(self):
if self.player1 == None or self.player2 == None or self.player3 == None
or self.player4 == None:
return False
return True

def hasuser(self,user):
if user in [self.player1,self.player2,self.player3,self.player4]:
return True
return False

def join(self,user,message):
if self.player1 == None:
self.player1 = user
return
if self.player2 == None:
self.player2 = user
return
if self.player3 == None:
self.player3 = user
return

if self.player4 == None:
self.player4 = user
return

def kick(self,user):
if self.player1 == user:
self.player1 = None
return
if self.player2 == user:
self.player2 = None
return
if self.player3 == user:
self.player3 = None
return

if self.player4 == user:
self.player4 = None
return

async def start(self):


while self.player1 == None or self.player2 == None or self.player3 ==
None and self.player4 == None:
await asyncio.sleep(10)

user1= client.get_user(self.player1)
message1 = await user1.send('Your game starts in 3 minutes')

try:
user2 = client.get_user(self.player2)
message2 = await user2.send('Your game starts in 3 minutes')
except:
message2 = await self.message2.channel.send('Your game starts in 3
minutes')
try:
user3 = client.get_user(self.player3)
message3 = await user3.send('Your game starts in 3 minutes')
except:
message3 = await self.message3.channel.send('Your game starts in 3
minutes')
try:
user4 = client.get_user(self.player4)
message4 = await user4.send('Your game starts in 3 minutes')
except:
message4 = await self.message4.channel.send('Your game starts in 3
minutes')

await asyncio.sleep(180)

async def monopoly(self):


sequence = []
pb1 = client.get_user(self.player1)
if pb1 != None:
sequence.append(pb1)
else:
disconnectednoteslist.append([self.player1,'you were disconnected
from your last monopoly game'])
self.kick(self.player1)
pb2 = client.get_user(self.player2)
if pb2 != None:
sequence.append(pb2)
else:
disconnectednoteslist.append([self.player2,'you were disconnected
from your last monopoly game'])
self.kick(self.player2)
pb3 = client.get_user(self.player3)
if pb3 != None:
sequence.append(pb3)
else:
disconnectednoteslist.append([self.player3,'you were disconnected
from your last monopoly game'])
self.kick(self.player3)
pb4 = client.get_user(self.player4)
if pb4 != None:
sequence.append(pb4)
else:
disconnectednoteslist.append([self.player4,'you were disconnected
from your last monopoly game'])
self.kick(self.player4)
if len(sequence) == 0:
self.reset()

random.shuffle(sequence)
monochoices = self.monopolyview(sequence[0])
while len(sequence) != 0:
biggerbreak = False
for player in sequence:
if len(sequence) == 1:
biggerbreak = True
break
try:
await player

class monopolyview(discord.ui.View):
def __init__(self,id):
super().__init__(timeout=10)
self.user=id
self.value = None

@discord.ui.button(label="Roll",style=

discord.ButtonStyle.green,emoji='🎲')
async def confirm(self,interaction: discord.Interaction, button:
discord.ui.Button):
await interaction.response.defer()
if self.user == interaction.user.id:
self.rolled = False

@discord.ui.button(label= 'Pick it
up',style=discord.ButtonStyle.red,emoji='🖐️')
async def cancel(self,interaction: discord.Interaction, button:
discord.ui.Button):
await interaction.response.defer()
if self.user == interaction.user.id:
self.picked = False

def update(self,lay1,lay2):
for i in self.children:

if i.label == 'Confirm':
i.label=lay1[0]
i.emoji=lay1[1]
i.style=lay1[2]
else:
i.label=lay2[0]
i.emoji=lay2[1]
i.style=lay2[2]

class startview(discord.ui.View):
def __init__(self,id):
super().__init__(timeout=10)
self.user = id
self.value = None

@discord.ui.button(label="Monopoly",style= discord.ButtonStyle.green)
async def confirm(self,interaction: discord.Interaction, button:
discord.ui.Button):
await interaction.response.defer()
if self.user == interaction.user.id:
self.value = 'monopoly'
self.stop()
lobbylist = []
@client.command()
async def start(msg):
playerinlobby = False
for i in lobbylist:
if lobby.hasuser(msg.author.id):
playerinlobby=True
break
if playerinlobby == True:

await msg.reply(embed=discord.Embed('You are already in a lobby, try


again next time',color=discord.Colour.blue()))
return
view = startview(msg.author.id)
embed=discord.Embed(description='**Select a gamemode**',color=
discord.Colour.blue())
message = await msg.reply(view=view)
await view.wait()
if view.value == None:

await msg.reply(embed=discord.Embed(description='You did not respond on


time, try again next time',color=discord.Colour.blue()) )
return

mode = view.value
action=None
specloblist = [x for x in lobbylist if x.gamemode == mode]
join = False
index = False
for i in range(len(specloblist)):
if i.isfull():
continue
index = i
join = True
action='join'
break
if join == False and index == False:
action='create'
if action == 'join':
targetlobby=specloblist[index]
targetlobby.join(msg.author.id,msg)
await message.edit(content='you joined a lobby')
return
if action == 'create':
targetlobby = lobby(mode=mode,player1 = msg.author.id)
lobbylist.append(targetlobby)
targetlobby.start()

try:
await message.edit(content='you created a lobby, make sure our dms
are turned on, so that i can inform you when your game is ready')
except:
await msg.reply('i cannot dm you, please enable dms')
#make selectgamemode

You might also like