0% found this document useful (0 votes)
16 views6 pages

Disconnected Notes List

The document describes code for a multiplayer game lobby system. It includes: - A Lobby class that tracks game mode, players, and status and allows joining/leaving games. - Methods for resetting lobbies, checking if full, checking for a user, joining/kicking users. - Views for game selection, confirmation, and in-game choices. - Code to handle creating/joining lobbies when a user starts a game, and notifying players when ready. The system allows users to create or join open lobbies for a given game mode, tracks lobby status, and sends messages to coordinate starting the game once full.

Uploaded by

Chua Wei Jack
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views6 pages

Disconnected Notes List

The document describes code for a multiplayer game lobby system. It includes: - A Lobby class that tracks game mode, players, and status and allows joining/leaving games. - Methods for resetting lobbies, checking if full, checking for a user, joining/kicking users. - Views for game selection, confirmation, and in-game choices. - Code to handle creating/joining lobbies when a user starts a game, and notifying players when ready. The system allows users to create or join open lobbies for a given game mode, tracks lobby status, and sends messages to coordinate starting the game once full.

Uploaded by

Chua Wei Jack
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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