mirror of
https://github.com/AudebertAdrien/ft_transcendence.git
synced 2025-12-16 14:07:49 +01:00
180 lines
6.6 KiB
HTML
180 lines
6.6 KiB
HTML
{% load static %}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Pong Game</title>
|
|
<link rel="stylesheet" type="text/css" href="{% static 'styles.css' %}">
|
|
<div class="logo">
|
|
<img src="{% static 'logo-42-perpignan.png' %}" alt="Logo">
|
|
</div>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="background">
|
|
<div class="stars" id="stars"></div>
|
|
</div>
|
|
<div class="pong-elements">
|
|
<div class="paddle paddle-left"></div>
|
|
<div class="paddle paddle-right"></div>
|
|
<div class="ball_anim"></div>
|
|
</div>
|
|
|
|
<div class="container" id="block-form">
|
|
<h1>BIENVENUE DANS LE PONG 42</h1>
|
|
<div class="input-container">
|
|
<div id="auth-form">
|
|
<label for="nickname">Enter your nickname:</label>
|
|
<input type="text" id="nickname" name="nickname">
|
|
<button id="check-nickname">Check Nickname</button>
|
|
</div>
|
|
<div id="register-form" style="display: none;">
|
|
<label for="password">Enter your password:</label>
|
|
<input type="password" id="password" name="password">
|
|
<label for="confirm-password">Confirm your password:</label>
|
|
<input type="password" id="confirm-password" name="confirm-password">
|
|
<button id="register">Register</button>
|
|
</div>
|
|
<div id="login-form" style="display: none;">
|
|
<label for="login-password">Enter your password:</label>
|
|
<input type="password" id="login-password" name="login-password">
|
|
<button id="login">Login</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="navbar">
|
|
<button class="burger-menu">☰</button>
|
|
<div id="dropdown-menu" class="dropdown-content">
|
|
<a href="#" data-table="player-list">Players</a>
|
|
<a href="#" data-table="match-list">Matches</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="game1" style="display: none;">
|
|
<div id="gameCode" class="game-code">Game Code : </div>
|
|
<div id="player1-name" class="name">Player 1</div>
|
|
<div id="player2-name" class="name">Player 2</div>
|
|
<div id="game2">
|
|
<div id="player1-score" class="score">0</div>
|
|
<div id="player2-score" class="score">0</div>
|
|
<div id="player1-pad" class="pad"></div>
|
|
<div id="player2-pad" class="pad"></div>
|
|
<div id="ball"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="match-list" class="content-list" style="display: none;">
|
|
<h1>Matches</h1>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>ID</th>
|
|
<th>Player 1</th>
|
|
<th>Player 2</th>
|
|
<th>Score Player 1</th>
|
|
<th>Score Player 2</th>
|
|
<th>Winner</th>
|
|
<th>Ball Touches Player 1</th>
|
|
<th>Ball Touches Player 2</th>
|
|
<th>Duration</th>
|
|
<th>Date</th>
|
|
<th>Is Tournament</th>
|
|
<th>Tournament</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for match in matches %}
|
|
<tr>
|
|
<td>{{ match.id }}</td>
|
|
<td>{{ match.player1.name }}</td>
|
|
<td>{{ match.player2.name }}</td>
|
|
<td>{{ match.score_player1 }}</td>
|
|
<td>{{ match.score_player2 }}</td>
|
|
<td>{{ match.winner.name }}</td>
|
|
<td>{{ match.nbr_ball_touch_p1 }}</td>
|
|
<td>{{ match.nbr_ball_touch_p2 }}</td>
|
|
<td>{{ match.duration }}</td>
|
|
<td>{{ match.date }}</td>
|
|
<td>{{ match.is_tournoi }}</td>
|
|
<td>{{ match.tournoi.name }}</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="12">No matches found.</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="player-list" class="content-list" style="display:none;">
|
|
<h1>Players</h1>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>ID</th>
|
|
<th>Name</th>
|
|
<th>Total Matches</th>
|
|
<th>Total Wins</th>
|
|
<th>Win Percentage</th>
|
|
<th>Average Match Score</th>
|
|
<th>Average Opponent Score</th>
|
|
<th>Best Score</th>
|
|
<th>Average Ball Touches</th>
|
|
<th>Total Duration</th>
|
|
<th>Average Duration</th>
|
|
<th>Participated Tournaments</th>
|
|
<th>Won Tournaments</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for player in players %}
|
|
<tr>
|
|
<td>{{ player.id }}</td>
|
|
<td>{{ player.name }}</td>
|
|
<td>{{ player.total_match }}</td>
|
|
<td>{{ player.total_win }}</td>
|
|
<td>{{ player.p_win }}</td>
|
|
<td>{{ player.m_score_match }}</td>
|
|
<td>{{ player.m_score_adv_match }}</td>
|
|
<td>{{ player.best_score }}</td>
|
|
<td>{{ player.m_nbr_ball_touch }}</td>
|
|
<td>{{ player.total_duration }}</td>
|
|
<td>{{ player.m_duration }}</td>
|
|
<td>{{ player.num_participated_tournaments }}</td>
|
|
<td>{{ player.num_won_tournaments }}</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="13">No players found.</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<script src="{% static 'game.js' %}"></script>
|
|
<script>
|
|
const starsContainer = document.getElementById('stars');
|
|
for (let i = 0; i < 500; i++) {
|
|
const star = document.createElement('div');
|
|
star.className = 'star';
|
|
star.style.width = `${Math.random() * 3}px`;
|
|
star.style.height = star.style.width;
|
|
star.style.left = `${Math.random() * 100}%`;
|
|
star.style.top = `${Math.random() * 100}%`;
|
|
star.style.animationDuration = `${Math.random() * 2 + 1}s`;
|
|
starsContainer.appendChild(star);
|
|
}
|
|
|
|
setInterval(createTrail, 100);
|
|
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|