changing eddy's changes (because it's fun), tournaments now detect when it ended
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/10/05 03:54:20 by tomoron #+# #+# #
|
# Created: 2024/10/05 03:54:20 by tomoron #+# #+# #
|
||||||
# Updated: 2024/10/16 01:25:20 by edbernar ### ########.fr #
|
# Updated: 2024/10/16 14:10:20 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -18,7 +18,6 @@ import random
|
|||||||
import asyncio
|
import asyncio
|
||||||
import time
|
import time
|
||||||
|
|
||||||
DISABLE_BOT_MOVEMENT = False
|
|
||||||
|
|
||||||
class Bot(Player):
|
class Bot(Player):
|
||||||
def __init__(self, game=None, tournament=None):
|
def __init__(self, game=None, tournament=None):
|
||||||
@ -31,8 +30,9 @@ class Bot(Player):
|
|||||||
self.objective = {"pos":0, "up": False}
|
self.objective = {"pos":0, "up": False}
|
||||||
self.skin = 0
|
self.skin = 0
|
||||||
self.goal = 0
|
self.goal = 0
|
||||||
asyncio.create_task(self.updateLoop())
|
if(gameSettings.noBotMovement):
|
||||||
asyncio.create_task(self.goToObjectiveLoop())
|
asyncio.create_task(self.updateLoop())
|
||||||
|
asyncio.create_task(self.goToObjectiveLoop())
|
||||||
print("I am a bot, boop boop beep boop")
|
print("I am a bot, boop boop beep boop")
|
||||||
|
|
||||||
def createTempBall(self):
|
def createTempBall(self):
|
||||||
@ -86,19 +86,18 @@ class Bot(Player):
|
|||||||
async def goToObjectiveLoop(self):
|
async def goToObjectiveLoop(self):
|
||||||
lastUpdate = time.time()
|
lastUpdate = time.time()
|
||||||
while not self.isEnd():
|
while not self.isEnd():
|
||||||
if (not DISABLE_BOT_MOVEMENT):
|
if(self.pos["pos"] != self.objective["pos"] or self.pos["up"] != self.objective["up"]):
|
||||||
if(self.pos["pos"] != self.objective["pos"] or self.pos["up"] != self.objective["up"]):
|
self.pos["up"] = self.objective["up"]
|
||||||
self.pos["up"] = self.objective["up"]
|
|
||||||
|
|
||||||
maxDistance = GameSettings.maxPlayerSpeed * (time.time() - lastUpdate)
|
maxDistance = GameSettings.maxPlayerSpeed * (time.time() - lastUpdate)
|
||||||
print("maxDistance :", maxDistance)
|
print("maxDistance :", maxDistance)
|
||||||
travel = self.objective["pos"] - self.pos["pos"]
|
travel = self.objective["pos"] - self.pos["pos"]
|
||||||
if(travel >= 0):
|
if(travel >= 0):
|
||||||
travel = min(self.objective["pos"] - self.pos["pos"], maxDistance)
|
travel = min(self.objective["pos"] - self.pos["pos"], maxDistance)
|
||||||
else:
|
else:
|
||||||
travel = max(self.objective["pos"] - self.pos["pos"], -maxDistance)
|
travel = max(self.objective["pos"] - self.pos["pos"], -maxDistance)
|
||||||
print("travel :", travel)
|
print("travel :", travel)
|
||||||
self.game.move(self.socket, self.pos["pos"] + travel, self.pos["up"])
|
self.game.move(self.socket, self.pos["pos"] + travel, self.pos["up"])
|
||||||
lastUpdate = time.time()
|
lastUpdate = time.time()
|
||||||
await asyncio.sleep(1 / 20)
|
await asyncio.sleep(1 / 20)
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/10/06 16:33:56 by tomoron #+# #+# #
|
# Created: 2024/10/06 16:33:56 by tomoron #+# #+# #
|
||||||
# Updated: 2024/10/16 01:24:44 by edbernar ### ########.fr #
|
# Updated: 2024/10/16 14:12:50 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -43,6 +43,7 @@ class GameSettings:
|
|||||||
wallLength = 1
|
wallLength = 1
|
||||||
wallWidth = 0.05
|
wallWidth = 0.05
|
||||||
bounceSpeedIncrease = 0.2
|
bounceSpeedIncrease = 0.2
|
||||||
maxScore = 5
|
maxScore = 2
|
||||||
|
|
||||||
maxPlayerSpeed = 6
|
maxPlayerSpeed = 6
|
||||||
|
noBotMovement = False
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/10/04 17:17:07 by tomoron #+# #+# #
|
# Created: 2024/10/04 17:17:07 by tomoron #+# #+# #
|
||||||
# Updated: 2024/10/15 13:37:13 by tomoron ### ########.fr #
|
# Updated: 2024/10/15 19:01:39 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -48,12 +48,12 @@ class Tournament:
|
|||||||
|
|
||||||
def sendAllInfo(self, socket):
|
def sendAllInfo(self, socket):
|
||||||
players = []
|
players = []
|
||||||
for x in self.players:
|
for x in range(len(self.players)):
|
||||||
players.append({"id":x.socket.id,"username":x.socket.username, "pfp":x.socket.pfp})
|
players.append({"id":x,"username":self.players[x].socket.username, "pfp":self.players[x].socket.pfp})
|
||||||
socket.sync_send("tournament",{"action":5, "players":players, "messages" : self.messages})
|
socket.sync_send("tournament",{"action":5, "players":players, "messages" : self.messages})
|
||||||
|
|
||||||
def sendMessage(self, socket, message):
|
def sendMessage(self, socket, message):
|
||||||
self.messages.append({"username":socket.username, "message":message})
|
self.messages.append({"username":socket.username, "message":message})
|
||||||
if(len(self.messages) > 20):
|
if(len(self.messages) > 20):
|
||||||
self.messages.pop(0)
|
self.messages.pop(0)
|
||||||
self.broadcast({"action":3, "username":socket.username, "message":message})
|
self.broadcast({"action":3, "username":socket.username, "message":message})
|
||||||
@ -70,7 +70,7 @@ class Tournament:
|
|||||||
return;
|
return;
|
||||||
self.players.pop(index)
|
self.players.pop(index)
|
||||||
socket.tournament = None
|
socket.tournament = None
|
||||||
self.broadcast({"action":2,"id":socket.id})
|
self.broadcast({"action":2,"id":index})
|
||||||
|
|
||||||
def join(self, socket, skin=0, goal=0, isBot=False):
|
def join(self, socket, skin=0, goal=0, isBot=False):
|
||||||
if(not isBot and socket.tournament != None):
|
if(not isBot and socket.tournament != None):
|
||||||
@ -89,7 +89,7 @@ class Tournament:
|
|||||||
socket.tournament = self
|
socket.tournament = self
|
||||||
self.players.append(player)
|
self.players.append(player)
|
||||||
socket.sync_send("tournament",{"action":0, "code":self.code})
|
socket.sync_send("tournament",{"action":0, "code":self.code})
|
||||||
self.broadcast({"action":1, "id":socket.id, "username": socket.username,"pfp":socket.pfp})
|
self.broadcast({"action":1, "id":len(self.players) - 1, "username": socket.username,"pfp":socket.pfp})
|
||||||
if(len(self.players) == Tournament.playerLimit):
|
if(len(self.players) == Tournament.playerLimit):
|
||||||
self.start()
|
self.start()
|
||||||
if(len(self.players) == Tournament.playerLimit - self.nbBot):
|
if(len(self.players) == Tournament.playerLimit - self.nbBot):
|
||||||
@ -112,4 +112,13 @@ class Tournament:
|
|||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.started = True
|
self.started = True
|
||||||
self.createGames(self.players.copy())
|
self.finalGame = self.createGames(self.players.copy())
|
||||||
|
asyncio.create_task(self.tournamentLoop())
|
||||||
|
|
||||||
|
async def tournamentLoop(self):
|
||||||
|
while self.finalGame.winner == None:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
print("tournament done, winner is ", self.finalGame.winner.socket.username)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user