Merge branch 'main' of github.com:Kum1ta/PTME_Transcendence
This commit is contained in:
@ -126,7 +126,7 @@
|
||||
</div>
|
||||
<span class="line" id="tournament-line1"></span>
|
||||
<div style="display: flex; flex-direction: row; justify-content: space-between; padding-inline: 10px;">
|
||||
<p>With bot</p>
|
||||
<p>Against bot</p>
|
||||
<label class="switch">
|
||||
<input type="checkbox" id="checkBoxBot">
|
||||
<span class="slider round"></span>
|
||||
@ -202,9 +202,9 @@
|
||||
<span class="line"></span>
|
||||
<p style="text-align: center; margin-bottom: 20px;">Tournament code</p>
|
||||
<input id="tournamentCode" class="search-input" type="text" placeholder="Enter the tournament code (empty for create one)">
|
||||
<input type="number" id="nbBot" class="search-input" placeholder="Number of bots (1-7 | default 0)">
|
||||
<span class="line" id="tournament-line2"></span>
|
||||
|
||||
<input type="number" id="nbBot" class="search-input" placeholder="Number of bots (1-7 | default 0)">
|
||||
</div>
|
||||
<div class="skin-select">
|
||||
<div class="barSelection" id="bar2">
|
||||
|
@ -27,7 +27,7 @@ let score = {player1: 0, player2: 0};
|
||||
let onUpdate = false;
|
||||
let scoreElement = null;
|
||||
let initialSpeed = 0;
|
||||
let speed = 0;
|
||||
let speed = 1;
|
||||
let gameEndStatus = false;
|
||||
const scoreToWin = 2; //+1 for real score to win
|
||||
|
||||
@ -54,16 +54,16 @@ class Map
|
||||
wallTop = createWall(true);
|
||||
scene.add(wallTop);
|
||||
|
||||
speed = 0.2;
|
||||
initialSpeed = 0.2;
|
||||
if (Math.random() > 0.5)
|
||||
{
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * speed;
|
||||
vec2.x = Math.sqrt(speed * speed - vec2.z * vec2.z);
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * initialSpeed;
|
||||
vec2.x = Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
}
|
||||
else
|
||||
{
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * speed;
|
||||
vec2.x = Math.sqrt(speed * speed - vec2.z * vec2.z);
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * initialSpeed;
|
||||
vec2.x = Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
@ -98,42 +98,64 @@ class Map
|
||||
if (onUpdate)
|
||||
return ;
|
||||
|
||||
// collision wall top and bottom
|
||||
if (ball.position.z > 5.7 || ball.position.z < -5.7)
|
||||
vec2.z *= -1;
|
||||
|
||||
// collision player2 left
|
||||
if (ball.position.x > 11.45 && ball.position.x < 12.2)
|
||||
{
|
||||
if (ball.position.z < player2.position.z + 1.25 && ball.position.z > player2.position.z - 1.25)
|
||||
{
|
||||
Map.scalePlayer(player2);
|
||||
initialSpeed = Math.sqrt(vec2.x * vec2.x + vec2.z * vec2.z);
|
||||
vec2.z -= (player2.position.z - ball.position.z) / (10 / speed) * 4;
|
||||
vec2.x = -Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
vec2.x *= -1;
|
||||
// Ca bug donc je le laisse en commentaire
|
||||
// if (ball.position.z < player2.position.z + 0.5)
|
||||
// {
|
||||
// vec2.z -= 0.05;
|
||||
// vec2.x += 0.05;
|
||||
// }
|
||||
// else if (ball.position.z > player2.position.z + 0.5)
|
||||
// {
|
||||
// vec2.z += 0.05;
|
||||
// vec2.x -= 0.05;
|
||||
// }
|
||||
}
|
||||
}
|
||||
} // collision player1 right
|
||||
else if (ball.position.x < -11.45 && ball.position.x > -12.2)
|
||||
{
|
||||
if (ball.position.z < player1.position.z + 1.25 && ball.position.z > player1.position.z - 1.25)
|
||||
{
|
||||
{
|
||||
Map.scalePlayer(player1);
|
||||
initialSpeed = Math.sqrt(vec2.x * vec2.x + vec2.z * vec2.z);
|
||||
vec2.z -= (player1.position.z - ball.position.z) / (10 / speed) * 4;
|
||||
vec2.x = Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
vec2.x *= -1;
|
||||
// Ca bug donc je le laisse en commentaire
|
||||
// if (ball.position.z < player1.position.z + 0.5)
|
||||
// {
|
||||
// vec2.z -= 0.05;
|
||||
// vec2.x += 0.05;
|
||||
// }
|
||||
// else if (ball.position.z > player1.position.z + 0.5)
|
||||
// {
|
||||
// vec2.z += 0.05;
|
||||
// vec2.x -= 0.05;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
// velocity
|
||||
ball.position.x += vec2.x;
|
||||
ball.position.z += vec2.z;
|
||||
ball.position.x += vec2.x * speed;
|
||||
ball.position.z += vec2.z * speed;
|
||||
if (speed < 3)
|
||||
speed += 0.005;
|
||||
|
||||
// ball opacity
|
||||
if (ball.position.x > 12)
|
||||
if (ball.position.x > 12.3)
|
||||
{
|
||||
ball.material.opacity -= 0.1;
|
||||
if (ball.position.x > 14)
|
||||
return (Map.reCreate(false));
|
||||
}
|
||||
else if (ball.position.x < -12)
|
||||
else if (ball.position.x < -12.3)
|
||||
{
|
||||
ball.material.opacity -= 0.1;
|
||||
if (ball.position.x < -14)
|
||||
@ -184,13 +206,13 @@ class Map
|
||||
setTimeout(() => {
|
||||
if (player1Lose)
|
||||
{
|
||||
initialSpeed = Math.sqrt(vec2.x * vec2.x + vec2.z * vec2.z);
|
||||
initialSpeed = 0.2;
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * initialSpeed;
|
||||
vec2.x = -Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
}
|
||||
else
|
||||
{
|
||||
initialSpeed = Math.sqrt(vec2.x * vec2.x + vec2.z * vec2.z);
|
||||
initialSpeed = 0.2;
|
||||
vec2.z = (Math.random() * 0.8 - 0.4) * initialSpeed;
|
||||
vec2.x = Math.sqrt(initialSpeed * initialSpeed - vec2.z * vec2.z);
|
||||
}
|
||||
@ -201,7 +223,7 @@ class Map
|
||||
setTimeout(() => {
|
||||
ball.material.opacity = 1;
|
||||
ball.position.set(0, 0.3, 0);
|
||||
initialSpeed = 0.5;
|
||||
speed = 1;
|
||||
|
||||
scoreElement.style.animation = 'fadeOutGames 0.199s';
|
||||
document.getElementsByTagName('canvas')[0].style.filter = 'brightness(1)';
|
||||
|
@ -533,9 +533,9 @@ class Map
|
||||
meshProfileRightFront = new THREE.Mesh(geometryProfileRightFront, materialProfileRight);
|
||||
|
||||
geometryProfileLeftBack = new THREE.PlaneGeometry(width - 0.15, height - 0.15);
|
||||
meshProfileLeftBack = new THREE.Mesh(geometryProfileLeftBack, materialProfileLeft);
|
||||
meshProfileLeftBack = new THREE.Mesh(geometryProfileLeftBack, materialProfileRight);
|
||||
geometryProfileRightBack = new THREE.PlaneGeometry(width - 0.15, height - 0.15);
|
||||
meshProfileRightBack = new THREE.Mesh(geometryProfileRightBack, materialProfileRight);
|
||||
meshProfileRightBack = new THREE.Mesh(geometryProfileRightBack, materialProfileLeft);
|
||||
|
||||
meshProfileLeftFront.position.set(-spacing - width / 2 - 0.275, 1.6, - 8.15);
|
||||
meshProfileLeftFront.rotation.y = 0.4;
|
||||
@ -1025,6 +1025,9 @@ class Map
|
||||
|
||||
reCreate(name)
|
||||
{
|
||||
player.resetScaleplayers();
|
||||
player.reserCameraPlayer();
|
||||
|
||||
this.#clearAnimationGoal();
|
||||
animateGoalObjectUpdate = false;
|
||||
animationSpeed = 0.02;
|
||||
@ -1032,8 +1035,6 @@ class Map
|
||||
this.updateScore(name, this.score);
|
||||
ball.resetPosBall();
|
||||
this.resetPosWalls();
|
||||
player.resetScaleplayers();
|
||||
player.reserCameraPlayer();
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -442,6 +442,7 @@ class Player
|
||||
object.scale.x -= value * 2;
|
||||
}, i * 10);
|
||||
}
|
||||
object.scale.set(1, 1, 1);
|
||||
}
|
||||
|
||||
configureVrController()
|
||||
|
@ -409,6 +409,12 @@ body {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
#nbBot {
|
||||
margin-top: 15px;
|
||||
width: 94%;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
border-color: white;
|
||||
}
|
||||
@ -580,11 +586,11 @@ body {
|
||||
}
|
||||
|
||||
input:checked + .slider {
|
||||
background-color: #2196F3;
|
||||
background-color: #21f356;
|
||||
}
|
||||
|
||||
input:focus + .slider {
|
||||
box-shadow: 0 0 1px #2196F3;
|
||||
box-shadow: 0 0 1px #21f356;
|
||||
}
|
||||
|
||||
input:checked + .slider:before {
|
||||
|
Reference in New Issue
Block a user