quit branch

This commit is contained in:
Elisee ADJIGUIDI 2023-06-26 00:31:20 +02:00
commit 2bc21b6950
14 changed files with 239 additions and 126 deletions

View File

@ -6,7 +6,7 @@
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:00 by apommier #+# #+# */
/* Updated: 2023/06/24 16:01:35 by sadjigui ### ########.fr */
/* Updated: 2023/06/24 20:37:12 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */
@ -177,17 +177,16 @@ export class AppController {
@UseGuards(JwtAuthGuard)
@Post('/nickname')
async setNickname(@Request() req, @Body() data: any) {
// let user = req.user
// user.nickname = data.nickname
// console.log(user= ${req.user.username})
const taken = await this.userService.findNickname(data.nickname)
console.log("taken =", taken)
// let user = req.user
// user.nickname = data.nickname
console.log(`user= ${req.user.username}`)
const taken = await this.userService.findNickname(data.nickname)
if (taken)
return (0);
let user = await this.userService.findOne(req.user.username)
user.nickname = data.nickname;
// return await this.userService.getFriends(req.user.username);
return await this.userService.save(user);
return (0);
let user = await this.userService.findOne(req.user.username)
user.nickname = data.nickname;
// return await this.userService.getFriends(req.user.username);
return await this.userService.save(user);
}
@UseGuards(JwtAuthGuard)
@ -361,6 +360,7 @@ export class AppController {
// import { prisma } from "../server";
@Redirect('http://' + process.env.BASE_URL + '/token', 302)
@Get('auth/login')
async login2(@Req() request: Request) {
@ -483,8 +483,6 @@ export class AppController {
// res.json(messages);
}
@UseGuards(JwtAuthGuard)
@Get('/conv')
async getConv(@Request() req) {

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:25 by apommier #+# #+# */
/* Updated: 2023/06/23 19:37:41 by apommier ### ########.fr */
/* Updated: 2023/06/24 18:47:59 by apommier ### ########.fr */
/* */
/* ************************************************************************** */

View File

@ -82,7 +82,7 @@ export class User {
}
@Entity()
@Entity({name: 'MatchLog' })
export class MatchLog {
@PrimaryGeneratedColumn()
id: number;

View File

@ -6,7 +6,7 @@
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:07 by apommier #+# #+# */
/* Updated: 2023/06/24 00:28:33 by sadjigui ### ########.fr */
/* Updated: 2023/06/24 19:45:28 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */
@ -38,17 +38,21 @@ export class UsersService {
return await this.userRepository.find();
}
async findNickname(username: string): Promise<User> {
console.log("nick in find =", username)
const ret= await this.userRepository.findOneBy({nickname: username});
console.log("ret noick=", ret )
return ret;
}
// async findNickname(username: string): Promise<User> {
// console.log("nick in find =", username)
// const ret= await this.userRepository.findOneBy({nickname: username});
// console.log("ret noick=", ret )
// return ret;
// }
async findOne(username: string): Promise<User> {
return await this.userRepository.findOneBy({username: username});
}
async findNickname(username: string): Promise<User> {
return await this.userRepository.findOneBy({nickname: username});
}
async save(user: User): Promise<User> {
return await this.userRepository.save(user);
}
@ -79,8 +83,10 @@ export class UsersService {
user.friendRequest = user.friendRequest || [];
if (user.friendRequest.find(item => item === username))
return (1);
if (user.friends.find(item => item === username))
return (1);
user.friendRequest.push(username);
this.save(user);
this.save(user);
return (1);
}
@ -103,28 +109,39 @@ export class UsersService {
async getHistory(username: string) {
const user = await this.findOne(username);
if (user) {
const children = user.children;
console.log(user);
console.log(user.children); // or perform any operations with the children
return children;
if (user)
{
// const ret = await this.matchRepository.query("SELECT * FROM \"MatchLog\" WHERE id = ($1);", [user.id]);
const ret = await this.matchRepository.query("SELECT * FROM \"MatchLog\"");
console.log("all match= ", ret);
}
// const children = user.children;
// console.log(user);
// console.log(user.children); // or perform any operations with the children
// return children;
// }
}
async addFriend(user: User, username: string) {
if (!(await this.findOne(username)))
const user2 = await this.findOne(username)
if (!user)
return (0);
// user.friendRequest = user.friendRequest || [];
user.friends = user.friends || [];
if (user.friends.find(item => item === username))
{
{
user.friendRequest = user.friendRequest.filter((item) => item !== username);
this.save(user);
return (1);
}
user.friends.push(username);
user.friendRequest = user.friendRequest.filter((item) => item !== username);
user2.friends = user2.friends || [];
user2.friends.push(user.username);
this.save(user2);
this.save(user);
return (1);
}

View File

@ -6,10 +6,12 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/19 15:18:38 by apommier #+# #+# */
/* Updated: 2023/06/23 15:19:12 by apommier ### ########.fr */
/* Updated: 2023/06/24 17:20:24 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
//0.0001
import { SubscribeMessage, WebSocketGateway, OnGatewayInit, WebSocketServer, OnGatewayConnection, OnGatewayDisconnect } from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
import { v4 as uuidv4 } from 'uuid';
@ -165,8 +167,9 @@ addMatchmaking(client: Socket, payload: any): void {
player.join(gameId);
console.log(`Player ${player.id} joined game ${gameId}`);
});
payload.gameId = gameId;
players.forEach((player) => {
player.emit('pong:gameId', gameId);
player.emit('pong:gameId', payload);
});
}
@ -200,8 +203,8 @@ joinPrivateParty(client: Socket, payload: any): void {
{
game.push(client);
const playersIds = game.map(socket => socket.id);
this.clients[playersIds[0]].emit('pong:gameId', payload.gameId);
this.clients[playersIds[1]].emit('pong:gameId', payload.gameId);
this.clients[playersIds[0]].emit('pong:gameId', payload);
this.clients[playersIds[1]].emit('pong:gameId', payload);
}
else
{
@ -337,6 +340,24 @@ addPrivateParty(client: Socket, payload: any): void {
}
}
@SubscribeMessage('pong:myPoint')
handleMyPoint(client: Socket, payload: any): void
{
const game = this.games.get(payload.gameId);
const playersIds = game.map(socket => socket.id);
console.log(`id of 0 mypoint= ${playersIds[0]}`);
if (playersIds[0] === payload.id)
{
this.clients[playersIds[1]].emit('pong:hisPoint', payload);
}
else if (playersIds[1] === payload.id)
{
this.clients[playersIds[0]].emit('pong:hisPoint', payload);
}
}
@SubscribeMessage('pong:name')
getName(client: Socket, payload: any): void
{
@ -345,13 +366,13 @@ addPrivateParty(client: Socket, payload: any): void {
console.log(`name of client= ${payload.name}`);
if (playersIds[0] === payload.id)
if (playersIds[0] === payload.id)
{
this.clients[playersIds[1]].emit('pong:name', payload.name);
this.clients[playersIds[1]].emit('pong:name', payload);
}
if (playersIds[1] === payload.id)
{
this.clients[playersIds[0]].emit('pong:name', payload.name);
this.clients[playersIds[0]].emit('pong:name', payload);
}
}

View File

@ -1,5 +1,7 @@
REACT_APP_BASE_URL=localhost:8080
REACT_APP_API_SECRET=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
REACT_APP_CLIENT_UID=u-s4t2ud-6d29dfa49ba7146577ffd8bf595ae8d9e5aaa3e0a9615df18777171ebf836a41
REACT_APP_BASE_URL=bess-f2r2s14:8080
REACT_APP_SOCKET_URL=bess-f2r2s14:8080
REACT_APP_API_SECRET=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
REACT_APP_CLIENT_UID=u-s4t2ud-a58c0bac83e6a599129ff519650335526c634890b80bd360bce3a8007db4897e
# REACT_APP_BASE_URL=92.143.191.152
# REACT_APP_BASE_URL=192.168.1.19

View File

@ -21,18 +21,15 @@ function Ranking(){
// setFriends(tmpFriends.data);
// return tmpUser;
// console.log(`user= ${tmpUser.data.username}`);
setIsLoading(false)
setIsLoading(false);
}
catch(err){
console.log(err);
}
};
getRanking();
}, [])
console.log(`ranking after= ${ranking}`)
}, []);
console.log(`ranking after= ${ranking}`);
return (
<div>

View File

@ -17,11 +17,7 @@ import { ImBlocked } from 'react-icons/im';
import { MdOutlineGroupAdd } from 'react-icons/md';
import { GrAdd } from 'react-icons/gr';
import { RiListSettingsLine } from 'react-icons/ri'
<<<<<<< Updated upstream
import { HiChatBubbleLeft } from 'react-icons/hi2'
=======
import { LuCat } from 'react-icons/lu'
>>>>>>> Stashed changes
// import { HiChatBubbleLeft } from 'react-icons/hi2'
// import { Rank } from "../../DataBase/DataRank";
import GreenAlert from "../Alert/GreenAlert.tsx";
@ -89,7 +85,7 @@ interface MessageProps {
}
function Chats(){
const [isLoading, setIsLoading] = useState<boolean>(true);
const [conversations, setConversation] = useState([]);
const [partyInvite, setPartyInvite] = useState([]);
@ -125,7 +121,7 @@ function Chats(){
setUsers(tmpUsers.data);
// console.log(`connection....`);
socket.current = io('http://localhost:4001', { transports: ['polling'] });
socket.current = io('http://' + process.env.REACT_APP_SOCKET_URL + ':4001', { transports: ['polling'] });
// console.log(`connection done`);
socket.current.emit('connection', {username: tmpUser.data.username})
socket.current.on('message', (data) => { //data should be a message ?)
@ -211,11 +207,12 @@ function Chats(){
getMessage();
}, [currentChat]);
const handleSubmit = async (e: { preventDefault: () => void; })=>{
const handleSubmit = async (e: { key?: any; preventDefault: any; })=>{
e.preventDefault();
// console.log(`e= ${e.key}`)
// console.log(`name= ${user.username}`)
// let message;
console.log("in handle");
if (!user || !currentChat)
return ;
const message = {
@ -248,33 +245,11 @@ function Chats(){
}
}
const handleKeyPress = async (e: { key: string; })=> {
const handleKeyPress = async (e: { key?: any; preventDefault: () => void; })=> {
// console.log(`e in press= ${e.key}`)
if (e.key !== "Enter")
return ;
// console.log(`name= ${user.username}`)
if (!user || !currentChat)
return ;
const message = {
sender: user.username,
text: newMessages,
convId: currentChat.id,
members: null,
id: null,
};
try{
const res = await api.post('/message', message);
const convMember = await api.post('/member', message);
message.members = convMember.data.members;
message.id = res.data.id
setMessage([...messages, res.data]);
setNewMessage("");
if (socket.current)
socket.current.emit('sendMessage', message);
}
catch(err){
console.log(err)
}
handleSubmit(e);
}
@ -329,6 +304,7 @@ function Chats(){
const handleAddFriend = async () => {
try{
console.log("friend= ", friend);
const res = await api.post("/invite", {username: friend})
// if (res.data === 1)
// console.log("res in friend= ", res)
@ -377,6 +353,7 @@ function Chats(){
const handleOptionChange = (selectId: number, selectedOption: string) => {
console.log("selected Option=", selectedOption)
setFriend(selectedOption);
setSelectTag((prevTags) =>
prevTags.map((tag) =>
tag.id === selectId ? { ...tag, selectedOption } : tag
@ -551,7 +528,7 @@ function Chats(){
onClick={() => setCurrentChat(c)}>
<UserChat>
{/* <img className="pic-user" src={DefaultPic} alt="User" /> */}
<HiChatBubbleLeft className="catchat"/>
{/* <HiChatBubbleLeft className="catchat"/> */}
<div className="infoSideBar">
<span>{c.name}</span>
{/* <SideP>Desc?</SideP> */}
@ -579,7 +556,7 @@ function Chats(){
placeholder="What do you want to say"
onChange={(e) => setNewMessage(e.target.value)}
value={newMessages}
/>
/>
<div className="send">
<TbSend onClick={handleSubmit}></TbSend>
</div>

View File

@ -3,10 +3,10 @@
/* ::: :::::::: */
/* Message.tsx :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/01 18:24:46 by apommier #+# #+# */
/* Updated: 2023/06/24 15:10:21 by sadjigui ### ########.fr */
/* Updated: 2023/06/24 16:00:48 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -34,11 +34,11 @@ interface MessageMeProps {
}
function MessageMe({message, own}: MessageMeProps){
const [profilePicture, setProfilePicture] = useState('');
const [sender, setSender] = useState<User>();
const [conv, setConv] = useState<Conv>();
const [user, setUser] = useState<User>();
const scrollRef = useRef<HTMLDivElement>(null);
@ -51,6 +51,7 @@ function MessageMe({message, own}: MessageMeProps){
useEffect(() => {
const fetchProfilePicture = async () => {
try {
console.log("useEffect message")
// const user = await api.get("/profile");
const tmpSender = await api.post("/user", {username: message.sender})
const tmpConv = await api.post("/convId", {convId: message.convId})
@ -81,16 +82,37 @@ function MessageMe({message, own}: MessageMeProps){
window.location.reload();
};
// const isAllowed = async () => {
// const ret = await api.post("/allowed", {convId: message.convId});
// return ret.data;
// }
if (!user || !sender || !conv)
return (<></>);
// console.log("result includes=", conv.banned.includes(user.username))
// console.log("result includes=", conv.blocked.includes(user.username))
// const conv2: Conv = getConv();
// if (!conv)
// isAllowed().then((ret: number) => {
// if (!ret)
// {
// console.log("return not allowed");
// return ;
// }
// // Use the resolved currentConv here
// });
if (user.blocked && user.blocked.includes(message.sender))
return (<></>);
else if (conv.banned && conv.banned.includes(user.username))
return (<></>);
else if (conv.muted && conv.muted.includes(user.username))
{
// console.log("muted00")
return (<></>);
}
// if (user.blocked.includes(message.sender))/
console.log("no return message good");
return (
<div className={own ? "meMessage" : "youMessage"} ref={scrollRef}>
<div>
@ -108,8 +130,8 @@ function MessageMe({message, own}: MessageMeProps){
<MeStyleP>{message.text}</MeStyleP>
</div>
</div>
)
}
export default MessageMe
export default MessageMe

View File

@ -7,6 +7,7 @@ import { GrAdd } from "react-icons/gr";
import { Link } from "react-router-dom";
import api from "../../script/axiosApi.tsx";
import React from "react";
import {User, Conv} from "../../../interfaces.tsx"
const dropIn = {
hidden:{y:"-100vh",
@ -23,13 +24,17 @@ const dropIn = {
opacity: 0,},
};
const Modal = ({handleClose}) => {
interface ModalProps {
handleClose: Function,
}
const Modal = ({handleClose}: ModalProps) => {
// const [multi, setMulti] = useState(false);
const [selectTags, setSelectTag] = useState([{ id: 1, selectedOption: ''}]);
const [selectedOptionArray, setSelectedOptionArray] = useState([]);
const [users, setUsers] = useState([]);
const [user, setUser] = useState();
const [convs, setConvs] = useState([]);
const [selectedOptionArray, setSelectedOptionArray] = useState<string[]>([]);
const [users, setUsers] = useState<User[]>([]);
const [user, setUser] = useState<User>();
const [convs, setConvs] = useState<Conv[]>([]);
const [channel, setChannel] = useState('');
@ -52,7 +57,7 @@ const Modal = ({handleClose}) => {
getConv();
}, []);
const handleOptionChange = (selectId, selectedOption) => {
const handleOptionChange = (selectId: number, selectedOption: string) => {
console.log("selected Option=", selectedOption)
setSelectTag((prevTags) =>
prevTags.map((tag) =>
@ -99,11 +104,11 @@ const Modal = ({handleClose}) => {
// let new_name;
return (
<Backdrop>
<Backdrop onClick={handleClose}>
<motion.div
onClick={(e) => e.stopPropagation()}
className="modalSetting"
variant={dropIn}
// variant={dropIn}
initial="hidden"
animate="visible"
exit="exit"
@ -120,9 +125,9 @@ const Modal = ({handleClose}) => {
<option value="">{
selectTag.selectedOption ? selectTag.selectedOption : "Select an option"
}</option>
{users.filter((item) => !selectTags.some((tag) => tag.selectedOption === item.name)).map((item, index) => (
{users.filter((item) => !selectTags.some((tag) => tag.selectedOption === item.nickname)).map((item, index) => (
<option key={index} value={item.username}>
{item.username}
{item.nickname}
</option>
))}
</select>
@ -134,7 +139,7 @@ const Modal = ({handleClose}) => {
<div className="div_submit">
<Link to='#' className="submit" onClick={ saveSelectedOptions}>Submit</Link>
<Link to="#" className="submit" onClick={handleClose}>Cancel</Link>
<Link to="#" className="submit" onClick={() => handleClose}>Cancel</Link>
</div>
</div>
@ -149,7 +154,7 @@ const Modal = ({handleClose}) => {
>
<option value="">Select an option</option>
{convs.map((conv) => (
!(!conv.group || conv.private || (conv.banned && conv.banned.includes(user.username)) || (conv.members && conv.members.includes(user.username))) && (
!(!conv.group || conv.private || (conv.banned && user && conv.banned.includes(user.username)) || (conv.members && user && conv.members.includes(user.username))) && (
<option key={conv.id} value={conv.id}>
{conv.name}
</option>
@ -157,9 +162,9 @@ const Modal = ({handleClose}) => {
))}
</select>
)}
{channel.private ? (
<input className="mdp" placeholder="password" type="text" />
):("")}
{/* {channel.private ? (
<input className="mdp" placeholder="passdddddword" type="text" />
):("")} */}
<div className="div_submit">

View File

@ -83,7 +83,7 @@ function WinLoss() {
// {isLoading ? (
// <h1>Loading...</h1>
// ) : (
// <h1>{user.username}</h1>
// <h1>{user.username}</h1>
// )}
// </div>
@ -94,7 +94,7 @@ function WinLoss() {
// <span>Loading...</span>
) : (
<div className='scroll'>
<h2 className='title'>Match history Win/Loss</h2>
<h2 className='title'>Match history {user.win}/{user.loss}</h2>
{history.map((c: Matchlog, index) => {
return (
<div key={index} className='elements'>

View File

@ -6,7 +6,7 @@
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/09 08:19:04 by apommier #+# #+# */
/* Updated: 2023/06/24 15:14:45 by sadjigui ### ########.fr */
/* Updated: 2023/06/24 20:16:28 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */
@ -78,7 +78,7 @@ function Profile () {
} catch (error) {
console.error('Error uploading file:', error);
}
}
}
// }
};
@ -149,7 +149,7 @@ function Profile () {
</>
)}
</motion.div>
{/* <div className="file-upload-container"> */}
{/* <button onClick={handleUpload} className="upload-button">Upload</button> */}
{/* <button onClick={handleUpload} className="upload-button">Upload</button> */}
@ -181,12 +181,23 @@ function Home () {
const closeSword = () => setSuccessSword(false);
const closeCrown = () => setSuccessCrown(false);
const { username } = useParams();
useEffect(() => {
const fetchSuccess = async () => {
try {
const tmpUser = await api.get("/profile");
setUser(tmpUser.data);
if (!username)
{
const tmpUser = await api.get("/profile");
setUser(tmpUser.data);
}
else
{
const tmpUser = await api.post("/user", {username: username});
setUser(tmpUser.data);
}
// const tmpUser = await api.get("/profile");
// setUser(tmpUser.data);
}
catch (error)
{
@ -204,17 +215,18 @@ function Home () {
<div>
{user && user.otp_verified ? (
<MdQrCodeScanner className='success' onClick={() => setSuccessQr(true)}/>
):("")}
):("")}
{user && user.win >= 2 ? (
<GiWingedSword className="success" onClick={() => setSuccessSword(true)}/>
):("")}
{user && user.win >= 5 ? (
<GiCrownedSkull className="success" onClick={() => setSuccessCrown(true)}/>
):("")}
):("")}
</div>
<div className="home">
<motion.div animate={{x: move ? -200: 120}}
transition={{type: "tween", duration: 0.5}}>
transition={{type: "tween", duration: 0.5, position: "fixed",}}
>
<Profile/>
</motion.div>
<motion.div animate={{opacity: !move ? -1 : 1}}>
@ -240,8 +252,8 @@ function Home () {
<YellowAlert handleClose={closeSword} text={"Success: 2 victory ? You won the noobi warrior success!"} icon={3}/>
) : ("")}
</AnimatePresence>
</motion.div>
</motion.div>
)
}
export default Home
export default Home

View File

@ -61,7 +61,7 @@ function DrawCanvas(option: number, gameParam: GameProps) {
if(!ctx)
return ;
const socket = io('http://localhost:4000', { transports: ['polling'] });
const socket = io('http://' + process.env.REACT_APP_SOCKET_URL + ':4000', { transports: ['polling'] });
// useEffect(() => {
// console.log("useeffect?????????????????")
// return () => {
@ -170,7 +170,9 @@ socket.on('pong:privateId', async (data) => {
socket.on('pong:gameId', async (data) => {
console.log("gameId received");
gameId = data;
gameId = data.gameId;
console.log("gameid = ", gameId);
console.log("data gameid = ", data);
try {
let response = await api.get('/profile');
@ -190,6 +192,16 @@ socket.on('pong:gameId', async (data) => {
console.log("emit to name");
socket.emit('pong:name', info);
if (data.id === myId)
{
console.log("myId= true")
vX = 0.0001;
}
else
{
console.log("myId= false")
vX = -0.0001;
}
} catch (error) {
console.log(error);
// Handle error here
@ -198,7 +210,11 @@ socket.on('pong:gameId', async (data) => {
});
socket.on('pong:name', (data) => {
opName = data;
opName = data.name;
// if (data.myId === myId)
// vX = 0.0001;
// else
// vX = -0.0001;
console.log(`opponent Name= ${opName}`)
});
@ -222,7 +238,6 @@ socket.on('pong:info', (data) => {
vY = data.vY;
});
socket.on('pong:paddle', (data) => {
console.log("paddle info receive")
oPaddleY = (data.paddleY / data.height) * canvas.height
@ -251,12 +266,27 @@ socket.on('pong:point', (data) => {
// console.log("up point");
myScore = data.point;
// }
vX = 0;
vX = -0.0001;
vY = 0;
ballX = canvas.width / 2;
ballY = canvas.height / 2;
});
socket.on('pong:hisPoint', (data) => {
// hisScore += 1;
console.log("myPointawdawdawdawd point");
// if (vX != 0)
// {
// console.log("up point");
hisScore = data.point;
// }
vX = -0.0001;
vY = 0;
ballX = canvas.width / 2;
ballY = canvas.height / 2;
// send_forced_info();
});
//========================================================================================================
//========================================================================================================
// Socket EMIT
@ -323,6 +353,26 @@ socket.on('pong:point', (data) => {
point: hisScore,
}
socket.emit('pong:point', info);
vX = 0.0001;
}
function send_my_point()
{
if (!gameId || !canvas)
return ;
// console.log("send point");
const info = {
id: myId,
gameId: gameId,
point: myScore,
}
socket.emit('pong:myPoint', info);
myScore++;
vX = 0.0001;
vY = 0;
ballX = canvas.width / 2;
ballY = canvas.height / 2;
send_forced_info();
}
function send_paddle_info()
@ -458,8 +508,11 @@ socket.on('pong:point', (data) => {
async function draw(timestamp: number)
{
console.log("turning, running= ", running);
if (!running)
if (!running)
{
window.location.replace("http://" + process.env.REACT_APP_BASE_URL + "/pong")
return ;
}
if (!gameId || !canvas )
{
// console.log("nogameid score= ", myScore);
@ -593,16 +646,17 @@ async function draw(timestamp: number)
}
ballX = canvas.width / 2;
ballY = canvas.height / 2;
vX = 0;
vX = 0.0001;
vY = 0;
hisScore += 1;
send_point();
// send_forced_info();
}
if (ballX > canvas.width)
if (ballX > (canvas.width * 1.2) && ballX - vX > canvas.width)
{
console.log("ball out win point pls")
send_my_point();
// if (ballX > canvas.width * 2)
// socket.emit
// console.log("win point")
// if (ballY <= paddleY + paddleHeight + ballRadius && ballY >= paddleY - ballRadius)
// {
@ -702,9 +756,8 @@ async function draw(timestamp: number)
vX -= 0.0001;
}
send_forced_info();
// console.log(`vx = ${vX}`);
}
else if (event.code === "KeyR")
else if (event.code === "KeyW")
{
if (!superpowerModifier)
return ;
@ -717,6 +770,13 @@ async function draw(timestamp: number)
paddleY = canvas.height / 2 - paddleHeight / 2;
console.log('Cinq secondes se sont écoulées.');
}, 5000);
// setTimeout(() => {
// // code à exécuter après 5 secondes
// paddleHeight = canvas.height * 0.25;
// paddleY = canvas.height / 2 - paddleHeight / 2;
// console.log('Cinq secondes se sont écoulées.');
// }, 5000);
}
});

View File

@ -23,6 +23,8 @@
}
.profilePic{
margin-left: 10px;
/* margin-top: 10px; */
height: 30px;
width: 30px;
border-radius: 50%;