Commit b2774148 authored by Mathys's avatar Mathys
Browse files

optimisation de clock + ajout de battle royale(colision)

parent d2574f9a
{
"WindowTitle": "Default",
"WindowSizeX": 800,
"WindowSizeY": 800,
"ParticleImage": "assets/particle.png",
"Debug": true,
"InitNumParticles": 100,
"RandomSpawn": true,
"scaleX":0.5,
"scaleY":0.5,
"SpawnRate": 0,
"SpawnX": 0,
"SpawnY": 0,
"SpeedLimit": [-1,1,-1,1],
"Colors": [0,1,0,1,0,1],
"Pictures": "",
"Scaleimg": true,
"Spawnimg" : true,
"GravityPoint": false,
"Horlogescale" : 0,
"Colision" : true
}
......@@ -4,13 +4,13 @@
"WindowSizeY": 500,
"ParticleImage": "assets/particle.png",
"Debug": false,
"InitNumParticles": 10,
"InitNumParticles": 0,
"RandomSpawn": false,
"scaleX":1,
"scaleY":1,
"SpawnRate": 0,
"SpawnX": 0,
"SpawnY": 0,
"SpawnX": 250,
"SpawnY": 250,
"SpeedLimit": [0,0,0,0],
"Colors": [1,1,1,1,1,1],
......@@ -18,8 +18,6 @@
"Scaleimg": true,
"Spawnimg" : true,
"GravityPoint": false,
"Clock" : true,
"Horlogescale" : 2
}
......@@ -22,6 +22,5 @@
"Spawnimg" : false,
"GravityPoint": false,
"Clock" : false,
"Horlogescale" : 2
"Horlogescale" : 0
}
......@@ -19,7 +19,5 @@
"Scaleimg": false,
"Spawnimg" : false,
"GravityPoint": false,
"Clock" : false,
"Horlogescale" : 2
"Horlogescale" : 0
}
\ No newline at end of file
......@@ -23,10 +23,10 @@ type Config struct {
Pictures string //fait apparaitre l'image donnée en lien, elles sont au format jpeg, il est non recommandé de mettre des images trop lourdes
Colors []float64
Gravity,GravityCenter,GravityPoint bool //Active plusieurs type de gravités, GravityPoint attire les pixels d'une image vers leur position d'origine sur celle ci
Clock bool //fait apparaitre une les aiguilles d'une horloge analogique s'actualisant, peut etre combine avec Pictures pour rajouter un fond
Horlogescale int //determine la taille des aiguilles, une valeur de 1 pour 250pixels est recommandé
NumCycle int
LifeOpt []string
Colision bool
}
var General Config
......@@ -60,7 +60,7 @@ func commands() {
Aliases: []string{"c"},
Usage: "Affiche une horloge analogique se mettant à jour",
Action: func(c *cli.Context) {
ExecPart("./Extension/Clock/clock.json")
ExecPart("./Extension/clock.json")
},
},
{
......@@ -71,6 +71,14 @@ func commands() {
ExecPart("./Extension/life.json")
},
},
{
Name: "BattleRoyal",
Aliases: []string{"b"},
Usage: "Les particules plus petites se font dévorer par les plus grosses dans une zone rétrécissante",
Action: func(c *cli.Context) {
ExecPart("./Extension/battle_royal.json")
},
},
}
}
......
......@@ -94,7 +94,7 @@ func NewSystem() System {
TabParticule = append(TabParticule,GenPart())
}
}
if config.General.Clock{
if config.General.Horlogescale > 0{
config.General.GravityPoint = true
horlogescale := config.General.Horlogescale
......@@ -121,6 +121,8 @@ func NewSystem() System {
}
}
// Retourne le tableau
return System{Content: TabParticule}
}
......@@ -102,24 +102,60 @@ func ClockUpdate(TabParticule []Particle) ([]Particle){
TabParticule[i].CibleY, TabParticule[i].CibleX = math.Sincos( math.Pi * (t[0]*2 + 1.0/2.0))
TabParticule[i].CibleY = -1 *TabParticule[i].CibleY* float64(k*9) + float64(config.General.WindowSizeY)/2
TabParticule[i].CibleX = -1 * TabParticule[i].CibleX *float64(k*9) +float64(config.General.WindowSizeX)/2
}
for k:=(horlogescale*7); k < (horlogescale*18); k++ {
i := k + Clockminparticule
TabParticule[i].CibleY, TabParticule[i].CibleX = math.Sincos( math.Pi * (t[1]*2 + 1.0/2.0))
TabParticule[i].CibleY = -1*TabParticule[i].CibleY* float64((k-(horlogescale*7))*8) + float64(config.General.WindowSizeY)/2
TabParticule[i].CibleX = -1*TabParticule[i].CibleX *float64((k-(horlogescale*7))*8) +float64(config.General.WindowSizeX)/2
}
for k:=(horlogescale*18); k < (horlogescale*31); k++ {
i := k + Clockminparticule
TabParticule[i].CibleY, TabParticule[i].CibleX = math.Sincos( math.Pi * (t[2]*2 + 1.0/2.0))
TabParticule[i].CibleY = -1*TabParticule[i].CibleY* float64((k-(horlogescale*18))*8) + float64(config.General.WindowSizeY)/2
TabParticule[i].CibleX = -1*TabParticule[i].CibleX *float64((k-(horlogescale*18))*8) +float64(config.General.WindowSizeX)/2
}
return TabParticule
}
func colision(TabParticule []Particle) ([]Particle){
for k:=0 ; k<len(TabParticule);k++{
for i:=k+1; i<len(TabParticule);i++{
xx := TabParticule[i].PositionX + TabParticule[i].ScaleX*5 - (TabParticule[k].PositionX + TabParticule[k].ScaleX*5)
yy := TabParticule[i].PositionY + TabParticule[i].ScaleY*5- (TabParticule[k].PositionY + TabParticule[k].ScaleY*5)
if math.Sqrt( math.Pow(xx,2) + math.Pow(yy,2) ) < TabParticule[i].ScaleX*5 + TabParticule[k].ScaleX*5{
if TabParticule[i].Overflow == false && TabParticule[k].Overflow == false{
if TabParticule[i].ScaleX <= TabParticule[k].ScaleX{
TabParticule[i].Overflow = true
TabParticule[k].ScaleX , TabParticule[k].ScaleY = TabParticule[k].ScaleX + TabParticule[i].ScaleX/2 , TabParticule[k].ScaleY + TabParticule[i].ScaleY/2
TabParticule[k].PositionX -= TabParticule[i].ScaleX * 5/2
TabParticule[k].PositionY -= TabParticule[i].ScaleY * 5/2
}else{
TabParticule[k].Overflow = true
TabParticule[i].ScaleX , TabParticule[i].ScaleY = TabParticule[k].ScaleX/2 + TabParticule[i].ScaleX , TabParticule[k].ScaleY/2 + TabParticule[i].ScaleY
TabParticule[i].PositionX -= TabParticule[k].ScaleX * 5/2
TabParticule[i].PositionY -= TabParticule[k].ScaleY * 5/2
}
}
}
}
if TabParticule[k].PositionX <0{
TabParticule[k].SpeedX = math.Abs(TabParticule[k].SpeedX+0.01)
}
if TabParticule[k].PositionX + TabParticule[k].ScaleX*10> float64(config.General.WindowSizeX){
TabParticule[k].SpeedX = math.Abs(TabParticule[k].SpeedX+0.01) *-1
}
if TabParticule[k].PositionY <0 {
TabParticule[k].SpeedY = math.Abs(TabParticule[k].SpeedY+0.01)
}
if TabParticule[k].PositionY + TabParticule[k].ScaleY*10> float64(config.General.WindowSizeY){
TabParticule[k].SpeedY = math.Abs(TabParticule[k].SpeedY+0.01) *-1
}
}
return TabParticule
}
func spirale(p Particle) (Particle){
var centerX = config.General.WindowSizeX/2
......@@ -189,15 +225,19 @@ func (s *System) Update() {
if config.General.NumCycle > 0 {
s.Content[i] = UpdateCycle(s.Content[i])
}
}
if config.General.GravityPoint{
s.Content[i] = gravitepoint(s.Content[i])
if config.General.GravityPoint{
s.Content[i] = gravitepoint(s.Content[i])
}
}
}
if config.General.Clock{
if config.General.Horlogescale >0{
s.Content = ClockUpdate(s.Content)
}
if config.General.Colision{
s.Content = colision(s.Content)
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment