organiser

This commit is contained in:
killianmarty 2023-11-15 13:15:32 +01:00
parent 1c80311ad7
commit 4037b3e23d
3 changed files with 0 additions and 255 deletions

186
class.js
View file

@ -1,186 +0,0 @@
let mapWidth = 210.;
let mapHeith = 100.;
const playerSize = 50.;
const playerSpeed=2.;
const halfSqrtTwo=0.70710678118;
class Player
{
constructor (id,x,y,name)
{
this.name=name;
this.x=x;
this.y=y;
this.id=id;
this.visibleDir=1;
this.dir=0;//0=standStill
//1=North
//2=North-East
//3=East
//4=South-East
//5=South
//6=South-West
//7=West
//8=North-West
this.ammo=10;
this.health=10;
}
takeDamage(amount)
{
this.health-=amount;
if(this.health<=0)
{
//send death message to server
//this.reset()
}
}
retrieveServerInfo(id,x,y,dir)
{
if(this.id==id)
{
this.x=x;
this.y=y;
this.dir=dir;
if(dir!=0)
this.visibleDir=dir;
}
}
update(squares,circles)//update position
{
if(this.dir==0)
return;
let dx,dy;
switch(this.dir)
{
case 1: dx=0.;dy=-playerSpeed;break;
case 2: dx=halfSqrtTwo*playerSpeed;dy=-halfSqrtTwo*playerSpeed;break;
case 3: dx=playerSpeed;dy=0.;break;
case 4: dx=halfSqrtTwo*playerSpeed;dy=halfSqrtTwo*playerSpeed;break;
case 5: dx=0.;dy=playerSpeed;break;
case 6: dx=-halfSqrtTwo*playerSpeed;dy=halfSqrtTwo*playerSpeed;break;
case 7: dx=-playerSpeed;dy=0.;break;
case 8: dx=-halfSqrtTwo*playerSpeed;dy=-halfSqrtTwo*playerSpeed;break;
default:
}
this.x += dx;
this.y += dy;
for(let square in squares)
{
if(square.collide(this))
{
this.x-=dx;
this.y-=dy;
this.dir=0;
return;
}
}
for(let circle in circles)
{
if(circle.collide(this))
{
this.x-=dx;
this.y-=dy;
this.dir=0;
return;
}
}
}
get angle()
{
return (this.visibleDir-3)*3.1415926535/4.;
}
}
function dist(A,B)
{
return sqrt((A.x-B.x)**2+(A.y-B.y)**2);
}
class Bullet
{
constructor (x,y,dx,dy)
{
this.x=x;
this.y=y;
this.dx=dx;
this.dy=dy;
this.deleted=false;
}
update()
{
if(!this.deleted)
{
this.x+=this.dx;
this.y+=this.dy;
}
}
checkCollisions(player,squares,circles)//only the client's player /!\
{
if(!this.deleted)
{
if(dist(player,this)<playerSize/2)
{
player.takeDamage(1);
this.deleted=true;
return;
}
for(let square in squares)
{
if(square.collide(this))
{
this.deleted=true;
return;
}
}
for(let circle in circles)
{
if(circle.collide(this))
{
this.deleted=true;
return;
}
}
}
}
}
class Square
{
constructor(x,y,width,heigth)
{
this.x=x;
this.y=y;
this.w=width;
this.h=heigth;
}
collide(point)
{
return (this.x<=point.x && point.x<=this.x+this.w && this.y<=point.y && point.y<=this.y+this.h);
}
}
class Circle
{
constructor(x,y,radius)
{
this.x=x;
this.y=y;
this.r=radius;
}
collide(point)
{
return ((point.x-this.x)**2+(point.y-this.y)**2<=r**2);
}
}

29
game.js
View file

@ -1,29 +0,0 @@
Renderer = new Render("canvas", "./assets/map/map7_recadr.png");
let players = [new Player(1, 100, 50, "rubiks"),
new Player(2, 500, 70, "atsuyo"),
new Player(3, 600, 70, "vincent"),
new Player(4, 700, 70, "migliore"),
new Player(5, 200, 30, "leroux"),
new Player(6, 700, 700, "lele")];
players[0].retrieveServerInfo(1,100,50,3);
players[1].dir=5;
players[1].visibleDir=5;
Renderer.AddPlayer(players[0]);
Renderer.AddPlayer(players[1]);
Renderer.AddPlayer(players[2]);
Renderer.AddPlayer(players[3]);
Renderer.AddPlayer(players[4]);
Renderer.AddPlayer(players[5]);
setInterval(game);
function game() {
players[0].update([],[]);
players[1].update([],[]);
Renderer.ReloadAff();
}

View file

@ -1,40 +0,0 @@
class Render {
constructor(id, mapsrc) {
this.canvas = document.getElementById(id);
this.ctx = canvas.getContext("2d");
this.players = [];
this.mapsrc=mapsrc
this.ReloadAff();
}
AddPlayer(player) {
this.players[player.id] = player;
}
RenderPlayer(player) {
const img = new Image();
img.src = "./assets/body.png";
this.ctx.save();
this.ctx.translate(player.x, player.y);
this.ctx.rotate(player.angle);
this.ctx.drawImage(img, -playerSize / 2, -playerSize / 2, playerSize, playerSize);
this.ctx.restore();
}
ReloadAff() {
/*this.ctx.fillStyle = "red";
this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height);
*/
console.log(this.ctx.canvas.width)
const fond = new Image();
fond.src = this.mapsrc;
mapWidth = fond.width
mapHeith = fond.height
this.ctx.canvas.width = mapWidth
this.ctx.canvas.height = mapHeith
this.ctx.drawImage(fond, 0, 0, mapWidth, mapHeith);
this.players.forEach((player) => {
this.RenderPlayer(player);
})
}
}