Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1626 Le 26/07/2012, à 01:37

tshirtman

Re : /* Topic des codeurs [7] */

+1 pour remplacer par un docsctring, c'est comme ça qu'on fait en python, des docstrings partout, en début de module, en début de classe, et début de méthode, en début de fonction… partout quoi…

Hors ligne

#1627 Le 26/07/2012, à 10:01

Rolinh

Re : /* Topic des codeurs [7] */

Gné? Je crois que lui n'a pas compris à quoi servait un bug tracker... >_< (il m'a fait 3 feature request identiques...)
Et je ne pense pas que l'on puisse appeler ~50 lignes de Python un logiciel.

Hors ligne

#1628 Le 26/07/2012, à 10:10

tshirtman

Re : /* Topic des codeurs [7] */

Si pour moi, c'est un logiciel… en petit, mais s'en est un… après oui le mec est un peu présomptueux de te balancer ça comme ça dans des tickets en triple…

Dernière modification par tshirtman (Le 26/07/2012, à 10:11)

Hors ligne

#1629 Le 26/07/2012, à 10:12

grim7reaper

Re : /* Topic des codeurs [7] */

Rolinh a écrit :

Gné? Je crois que lui n'a pas compris à quoi servait un bug tracker... >_< (il m'a fait 3 feature request identiques...)

jesusfacepalm.png

Hors ligne

#1630 Le 26/07/2012, à 10:28

Rolinh

Re : /* Topic des codeurs [7] */

tshirtman a écrit :

Si pour moi, c'est un logiciel… en petit, mais s'en est un…

Pour moi, à ce niveau là, ça reste du script. M'enfin bon, c'est vrai que l'on peut aussi considérer cela comme un logiciel.

Hors ligne

#1631 Le 26/07/2012, à 10:31

grim7reaper

Re : /* Topic des codeurs [7] */

La définition de logiciel n'a aucune relation avec la taille.
Je prends la définition Wikipédia par facilité, mais tu peux chercher sur d’autres sources :

Wikipédia a écrit :

Un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique.

Dernière modification par grim7reaper (Le 26/07/2012, à 10:33)

Hors ligne

#1632 Le 26/07/2012, à 10:42

Rolinh

Re : /* Topic des codeurs [7] */

Nan mais je vous crois hein wink
Juste que, personnellement, j'aurais du mal à dire que j'ai écrit un "logiciel" si j'ai simplement écrit 50 lignes de python.

EDIT: Tiens, j'ai reçu un patch par mail pour dfc au nom de l'équipe de développeurs de FreeBSD (Sergey Kandaurov en l’occurrence, qui est un core team member). Ça fait plaisir quand les bugs remontent comme ça (il s'agit ici de rendre dfc compatible avec FreeBSD 7, version maintenant un peu ancienne mais toujours supportée) et surtout que le patch est expliqué en détails. smile

Dernière modification par Rolinh (Le 26/07/2012, à 10:47)

Hors ligne

#1633 Le 26/07/2012, à 10:50

Pylades

Re : /* Topic des codeurs [7] */

Et même, en fait, les fichiers de description de keymap de Xkb, c’est du logiciel. N’est-ce pas, ArkSeth ? tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1634 Le 26/07/2012, à 10:53

grim7reaper

Re : /* Topic des codeurs [7] */

Bah apparemment oui.
Suite de la même définition :

Wikipédia a écrit :

Y sont incluses les instructions de traitement, regroupées sous forme de programmes, des données et de la documentation.

Hors ligne

#1635 Le 26/07/2012, à 12:43

Elzen

Re : /* Topic des codeurs [7] */

@grim : perso, pour une définition, j'me réfère plutôt

Πυλάδης a écrit :

Et même, en fait, les fichiers de description de keymap de Xkb, c’est du logiciel. N’est-ce pas, ArkSeth ? tongue

Bah ç'discutable, ça peut être considéré comme un genre de script, dans un sens. Et puis, selon si tu dis « du » ou « un », ça ne fait pas appel au même sens du mot.

Au cas où tu n'aurais pas encore compris, c'est quand tu sortais que, pour toi, un fichier image isolé pouvait être appelé « un logiciel » que tu avais l'air un peu à côté de la plaque tongue

Dernière modification par ArkSeth (Le 26/07/2012, à 12:45)

Hors ligne

#1636 Le 26/07/2012, à 12:46

sweetly

Re : /* Topic des codeurs [7] */

C'est quoi la différence entre script et un logiciel ?

Hors ligne

#1637 Le 26/07/2012, à 12:48

Pylades

Re : /* Topic des codeurs [7] */

Bah quoi ? Genre pour toi les images utilisées pour Wesnoth ou Hortus, ce n’est pas du logiciel ? tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1638 Le 26/07/2012, à 12:53

Elzen

Re : /* Topic des codeurs [7] */

ArkSeth a écrit :

Et puis, selon si tu dis « du » ou « un », ça ne fait pas appel au même sens du mot.

Au cas où tu n'aurais pas encore compris, c'est quand tu sortais que, pour toi, un fichier image isolé pouvait être appelé « un logiciel » que tu avais l'air un peu à côté de la plaque tongue


(Sinon, j'suis en train d'intégrer ma nouvelle gestion de la config, c'est largement plus fun qu'avant big_smile)

Hors ligne

#1639 Le 26/07/2012, à 14:11

tshirtman

Re : /* Topic des codeurs [7] */

sweetly a écrit :

C'est quoi la différence entre script et un logiciel ?

Un script est un type de logiciel, définit selon des critères assez imprécis mais généralement admis comme contenant le fait d'être interprété, d'être d'une complexité faible (souvent un seul fichier), et souvent utilisé pour l'accomplissement d'une tache précise et unique.

Hors ligne

#1640 Le 26/07/2012, à 14:55

grim7reaper

Re : /* Topic des codeurs [7] */

ArkSeth a écrit :

@grim : perso, pour une définition, j'me réfère plutôt

C’est la première chose que j’ai fait, mais j’ai trouvé la définition incomplète donc je me suis rabattu sur Wikipédia

Hors ligne

#1641 Le 26/07/2012, à 15:03

The Uploader

Re : /* Topic des codeurs [7] */

Justement en ce moment j'ai fait un script :
- donc on peut l'appeler en ligne de commande, et il peut prendre des arguments (récupérés dans ARGV par l'interpréteur ruby)
- on peut le lancer via cron
- il fait appel à des classes Ruby, d'une partie des classes définies dans le dossier lib/ de mon plugin Redmine, des classes IFPDF et Mailer de Redmine, et à l'environnement Rails (ainsi qu'à la base de données à travers certains models).
- il est contenu dans scripts/ dans le dossier du plugin, et tout le code du script est contenu dans une classe (mis à part les require et un

if __FILE__ == $0
  PopCornGenerator.new.run
end

) à la fin.

Bref, j'trouve que pour un script, ça ressemble beaucoup à ce que je fait d'habitude..

(edit: corrections)

Dernière modification par The Uploader (Le 26/07/2012, à 16:37)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1642 Le 26/07/2012, à 16:36

tshirtman

Re : /* Topic des codeurs [7] */

Ben oui smile ce n'est pas dévalorisant, et la définition est floue de toute façon, mais je dirais que cette partie du logiciel que tu construit (et qui est elle même un logiciel), est un script. smile

Hors ligne

#1643 Le 26/07/2012, à 23:33

The Uploader

Re : /* Topic des codeurs [7] */

Merci, c'est juste que l'idée de script m'évoque plus un script bash bien gras plutôt qu'une classe Ruby avec un "bootstrap" en fin de fichier. ^^

Sinon, quelques changements sur SMA_FIGHT (le truc d'IA) version Ruby (pour fonctionner il faut les gems rubygame et rubygoo), dont notamment ce bug qui m'avait dégoûté (parmi d'autres choses) pendant pas mal de temps :

commit fd9816a7929ee8c1ca3c5f66bf51f372964f7ecd
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:23:07 2012 +0200

    Bugfix : Agents were always moving to the bottom right
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 MASWithTwoNests/agent.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/MASWithTwoNests/agent.rb b/MASWithTwoNests/agent.rb
index 0b021a9..a94c72b 100644
--- a/MASWithTwoNests/agent.rb
+++ b/MASWithTwoNests/agent.rb
@@ -26,8 +26,8 @@ module MASWithTwoNests
 
     def change_direction
       @direction = Point.new(Random.rand, Random.rand)
-      @direction.x = @direction.x * - 1 if Random.rand > 0.5
-      @direction.y = @direction.y * - 1 if Random.rand > 0.5
+      @direction.x = @direction.x.to_i - 1 if Random.rand > 0.5
+      @direction.y = @direction.y.to_i - 1 if Random.rand > 0.5
       @direction.normalize!
     end
   end

(hint : mes x/y sont des floats, ce que j'avais totalement oublié.... -_-' )

commit 423137aea55e6c3300c3c6e8e8360cca8816c9cc (HEAD, refs/remotes/origin/master, refs/heads/master)
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:28:39 2012 +0200

    CustomBot class
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 CustomTeam/custom_bot.rb | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/CustomTeam/custom_bot.rb b/CustomTeam/custom_bot.rb
new file mode 100644
index 0000000..291fcde
--- /dev/null
+++ b/CustomTeam/custom_bot.rb
@@ -0,0 +1,25 @@
+$LOAD_PATH << '../'
+require 'MASWithTwoNests/Bot'
+
+module CustomTeam
+	class CustomBot < Bot
+		def initialize
+			super
+		end
+
+		def init_expert_system
+			super
+		end
+
+		def update_facts
+			super
+		end
+
+		def act
+			super
+		end
+
+		def on_collide(agent)
+			super
+		end
+end

commit 4c2314627a3fc4df7303eead7ac280b5dd141577
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:28:26 2012 +0200

    Bot class
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 MASWithTwoNests/bot.rb | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/MASWithTwoNests/bot.rb b/MASWithTwoNests/bot.rb
new file mode 100644
index 0000000..c2e3f63
--- /dev/null
+++ b/MASWithTwoNests/bot.rb
@@ -0,0 +1,47 @@
+$LOAD_PATH << '../'
+require 'lib/point'
+include Lib
+require 'ExpertSystem/expert_system.rb'
+include ExpertSystem
+$LOAD_PATH << './'
+require 'agent'
+require 'world'
+require 'rubygame'
+require 'bot_home'
+
+module MASWithTwoNests
+	class Bot < Agent
+		attr_reader :home_position
+		attr_reader :team_id
+		def initialize(world, team_id, color, radius, speed, direction_change_delay, perception_radius)
+			super(world)
+			@team_id = team_id
+			@speed = speed
+			@image = Rubygame::Surface.new(perception_radius, perception_radius)
+      @image.set_colorkey([0, 0, 0])
+			@rect = @image.make_rect
+			@direction_change_delay = direction_change_delay
+			@image.draw_circle_s(@rect.center, radius * 2, Rubygame::Color::ColorRGB.new([1, 0, 0, 1]))
+			@target_point = Point.new(Random.rand * World::WIDTH, Random.rand * World::HEIGHT)
+		end
+
+		def update
+			move
+		end
+
+		def init_expert_system
+			expert_system = ExpertSystem.new()
+
+
+		end
+
+		def update_facts
+		end
+
+		def act
+		end
+
+		def on_collide(agent)
+		end
+	end
+end

commit 0de3151585ee0e98cfacf4e8565bf16c09f632dc
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:27:03 2012 +0200

    "==" operator overload for Point class
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 lib/point.rb | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/point.rb b/lib/point.rb
index 047846f..9031f7f 100644
--- a/lib/point.rb
+++ b/lib/point.rb
@@ -17,6 +17,10 @@ module Lib
       Point.distance(self, Point.new(0, 0))
     end
 
+		def ==(other)
+			@x.to_i == other.x.to_i and @y.to_i == other.y.to_i
+	  end
+
     def normalize!(length_scale = 1)
       @x = length_scale if @x > length_scale
       @y = length_scale if @y > length_scale

commit acc16bbe4b54e5fe94cda95058432a0fe78eea1f
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:26:43 2012 +0200

    Only one bot team and bot home (for now)
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 MASWithTwoNests/world.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MASWithTwoNests/world.rb b/MASWithTwoNests/world.rb
index 461ed44..4bb9a79 100644
--- a/MASWithTwoNests/world.rb
+++ b/MASWithTwoNests/world.rb
@@ -50,8 +50,8 @@ module MASWithTwoNests
       	resource = Resource.new(self, RESOURCE_START_LIFE, RESOURCE_MOVE_DELAY * Random.rand, RESOURCE_MOVE_SPEED * Random.rand)
 				resource.target_point = Point.new(Random.rand * WIDTH, Random.rand * HEIGHT)
 				@agents << resource
-				bot_team = BotTeam.new(self, "AntubisTeam", Rubygame::Color::ColorRGB.new([0.4,0.4,0.4]), ["truc"])
 			end
+			bot_team = BotTeam.new(self, "AntubisTeam", Rubygame::Color::ColorRGB.new([0.4,0.4,0.4]), ["truc"])
     end
 
     def update(tick)

commit 9cc846c6a889b7bfd9cf70d2a2fa39ee7236531b
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:26:15 2012 +0200

    Some code style cleanup
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 MASWithTwoNests/resource.rb | 6 +++---
 lib/point.rb                | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/MASWithTwoNests/resource.rb b/MASWithTwoNests/resource.rb
index dd93023..614b76e 100644
--- a/MASWithTwoNests/resource.rb
+++ b/MASWithTwoNests/resource.rb
@@ -38,13 +38,13 @@ module MASWithTwoNests
 			@dead = true if @life <= 0
 
 			@update_time += tick.milliseconds
-			if @update_time > @move_delay || world.is_out?(@target_point)
+			if @update_time > @move_delay or world.is_out?(@target_point)
 				change_direction
 				@update_time = 0
 			end
 			
-			@target_point.x = @target_point.x + @direction.x * @speed * tick.seconds
-			@target_point.y = @target_point.y + @direction.y * @speed * tick.seconds
+			@target_point.x += @direction.x * @speed * tick.seconds
+			@target_point.y += @direction.y * @speed * tick.seconds
 
 			move
 		end
diff --git a/lib/point.rb b/lib/point.rb
index efe0d56..047846f 100644
--- a/lib/point.rb
+++ b/lib/point.rb
@@ -7,7 +7,7 @@ module Lib
       @y = y
     end
 
-    def Point.distance(point, other_point)
+    def self.distance(point, other_point)
       a = (point.x - other_point.x).abs
       b = (point.y - other_point.y).abs
       Math.sqrt(a * a + b * b).floor
@@ -26,4 +26,4 @@ module Lib
       end
     end
   end
-end
\ No newline at end of file
+end

commit 59279a3b949918af46e826d20bb82bc9a4b5cb24
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Thu Jul 26 23:25:41 2012 +0200

    Random start point for BotHome and Resource
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>
---
 MASWithTwoNests/bot_home.rb | 3 +--
 MASWithTwoNests/resource.rb | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/MASWithTwoNests/bot_home.rb b/MASWithTwoNests/bot_home.rb
index 46477f6..a1049ea 100644
--- a/MASWithTwoNests/bot_home.rb
+++ b/MASWithTwoNests/bot_home.rb
@@ -18,9 +18,8 @@ module MASWithTwoNests
 			@image = Rubygame::Surface.new([World::HOME_RADIUS * 2, World::HOME_RADIUS * 2])
 			@rect = @image.make_rect
       @image.set_colorkey([0, 0, 0])
-			@rect.center[0] = Random.rand * World::WIDTH
-			@rect.center[1] = Random.rand * World::HEIGHT
 			@image.draw_circle_s(@rect.center, World::HOME_RADIUS, Rubygame::Color::ColorRGB.new([0.22745, 0.22745, 0.22745, 1]))
+			@rect.center = [Random.rand * World::HEIGHT, Random.rand * World::HEIGHT]
 		end
 
 		def update(tick, world)
diff --git a/MASWithTwoNests/resource.rb b/MASWithTwoNests/resource.rb
index 1ea40bd..dd93023 100644
--- a/MASWithTwoNests/resource.rb
+++ b/MASWithTwoNests/resource.rb
@@ -22,8 +22,8 @@ module MASWithTwoNests
       @image = Rubygame::Surface.new([World::RESOURCE_LIFE_RADIUS_COEFF * @life * 2, World::RESOURCE_LIFE_RADIUS_COEFF * @life * 2])
       @rect = @image.make_rect
       @image.set_colorkey([0, 0, 0])
-      change_direction
 			@image.draw_circle_s(@rect.center, (World::RESOURCE_LIFE_RADIUS_COEFF * @life), Rubygame::Color::ColorRGB.new([0.8, 0.8 , 0.8, 1])) if @life > 0
+			@rect.center = [Random.rand * World::HEIGHT, Random.rand * World::HEIGHT]
     end
 
     def decrease_life

Bon j'ai toujours pas réussi à afficher du texte par dessus mes sprites (pour afficher les ressources de la maison), fichue SDL...

Dernière modification par The Uploader (Le 26/07/2012, à 23:39)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1644 Le 27/07/2012, à 07:10

Mindiell

Re : /* Topic des codeurs [7] */

The Uploader a écrit :

fichue SDL...

Et t'as essayé la SFML ? wink

Hors ligne

#1645 Le 27/07/2012, à 07:55

grim7reaper

Re : /* Topic des codeurs [7] */

The Uploader a écrit :

Bon j'ai toujours pas réussi à afficher du texte par dessus mes sprites (pour afficher les ressources de la maison), fichue SDL...

Bah c’est pourtant pas sorcier en principe hein.
Tu blittes ton sprite, et tu blittes ton texte après (bon faudra probablement faire le blit en Blended pour le texte, mais c’est la seule subtilité).



Mindiell a écrit :
The Uploader a écrit :

fichue SDL...

Et t'as essayé la SFML ? wink

J’adore la SDL, mais faut avouer que si tu codes pour une plateforme qui offre SDL et SFML et que ton langage a pas un binding trop boîteux (donc si tu codes pas pour AmigaOS, Dreamcast, Atari, …), vaut mieux prendre la SFML.

Dernière modification par grim7reaper (Le 27/07/2012, à 07:58)

Hors ligne

#1646 Le 27/07/2012, à 09:14

The Uploader

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

Bah c’est pourtant pas sorcier en principe hein.
Tu blittes ton sprite, et tu blittes ton texte après (bon faudra probablement faire le blit en Blended pour le texte, mais c’est la seule subtilité).

Oui, je sais, mais ça couille quelque part. Faudra que je regarde ça à nouveau, je me souviens plus du tout des détails.



grim' a écrit :
Mindiell a écrit :
The Uploader a écrit :

fichue SDL...

Et t'as essayé la SFML ? wink

J’adore la SDL, mais faut avouer que si tu codes pour une plateforme qui offre SDL et SFML et que ton langage a pas un binding trop boîteux (donc si tu codes pas pour AmigaOS, Dreamcast, Atari, …), vaut mieux prendre la SFML.

Pareil, j'aime beaucoup la SDL, mais RubySFML aurait été peut-être un meilleur choix, même si ce le binding ne correspond qu'à  la v1.2 de la SFML.

Dernière modification par The Uploader (Le 27/07/2012, à 09:27)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1647 Le 27/07/2012, à 09:43

Mindiell

Re : /* Topic des codeurs [7] */

Même la v1.2 de la SFML était très intéressante. Et puis il ne tient qu'à toi de faire le binding de la 1.6 wink

Hors ligne

#1648 Le 27/07/2012, à 09:50

tshirtman

Re : /* Topic des codeurs [7] */

En tout cas pour blitter du texte par dessus le reste, j'ai aucun soucis avec usf… (donc pygame, donc sdl).

Hors ligne

#1649 Le 27/07/2012, à 10:33

grim7reaper

Re : /* Topic des codeurs [7] */

Mindiell a écrit :

Même la v1.2 de la SFML était très intéressante. Et puis il ne tient qu'à toi de faire le binding de la 1.6 wink

Mouais bof.
Quitte à se faire chier à faire un binding, autant le faire pour la v2.

Hors ligne

#1650 Le 27/07/2012, à 15:07

Mindiell

Re : /* Topic des codeurs [7] */

Oui, mais la v2 n'étant pas encore officielle... Et puis ça permet de s'y mettre sur un truc qui marche bien et qui ne bougera pas. M'enfin après, ce que j'en dis smile

Hors ligne