Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#102 Le 10/02/2012, à 23:17

grim7reaper

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

Ha, les nombres flottants.
C’est toujours pleins de trucs vicieux ça, c’est loin d’être aussi simple que l’on peut le penser (j’ai lu pas mal de documents/papiers là-dessus).

Hors ligne

#103 Le 10/02/2012, à 23:27

tshirtman

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

Comme tout le monde, je me trouvais malin avec mon "(int) (x + 0.5)" (mais j'avais trouvé tout seul monsieur, pas besoin qu'on me le dise!) ^^

Hors ligne

#104 Le 10/02/2012, à 23:41

Rolinh

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

Et oui, il faut toujours se méfier de la représentation machine. C'est au moins un des trucs que je constate par la pratique en cours d'analyse numérique.


Blog
"If you put a Unix shell to your ear, do you hear the C ?"

Hors ligne

#106 Le 11/02/2012, à 12:24

Pylades

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

Les typematrix c’est moche. Pourquoi est-ce impossible de trouver des claviers à touches droites qui ne soient pas des typematrix ?


“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

#107 Le 11/02/2012, à 12:44

grim7reaper

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

Ptain, il y a des algos qui ont une page Facebook.
facepalm.png
(comme celui que je dois implémenter : Suzuki-Kasami).

Hors ligne

#108 Le 11/02/2012, à 12:53

Le Rouge

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

Au lieu de lui faire une page facebook, il ferait mieux de retaper sa page wikipedia parce qu'elle est super moche.

Dernière modification par Le Rouge (Le 11/02/2012, à 12:53)


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#109 Le 11/02/2012, à 13:09

grim7reaper

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

Ouep, c’est pas de la grande qualité cette page Wikipédia.
Mais bon, je pense que les gens utilisent plus Lamport (oui Lamport comme Leslie Lamport, le gus qui à fait LaTeX et qui bosse chez Microsoft Research), Ricart-Agrawala  ou Raymond.
Les pages sont un peu meilleures, même si ça reste maigre.

Hors ligne

#110 Le 11/02/2012, à 15:18

tshirtman

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

@pylade: moche je sais pas, question de gout sans doute, mais en tout cas le toucher est agréable, il est extrèmement silencieux, et il reste bien en place quand on tape, et ça, c'est vraiment agréable!

Hors ligne

#111 Le 11/02/2012, à 16:05

Pylades

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

Ouais, je veux un toucher de typematrix avec des touche droites, mais sans disposition typematrix. Mais ils semble que ce soit fort rare… sad


“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

#112 Le 11/02/2012, à 16:42

tshirtman

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

effectivement… on t'as déjà dit que t'était difficile? voir pinnailleur? ^^

Hors ligne

#113 Le 11/02/2012, à 17:27

Le Rouge

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

1328973999.png


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#114 Le 11/02/2012, à 18:02

Pylades

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

Je veux avoir du matériel de qualité, c’est tout. 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

#115 Le 11/02/2012, à 18:03

tshirtman

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

du coup à la place t'utilise un clavier azerty?

(message tapé en azerty, je suis en transition, et pour coder, c'est pas encore ça >_>)

Hors ligne

#116 Le 11/02/2012, à 19:36

The Uploader

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

diff --git a/MASWithTwoNests/agent.rb b/MASWithTwoNests/agent.rb
index 8acdfca..b9aa8e2 100644
--- a/MASWithTwoNests/agent.rb
+++ b/MASWithTwoNests/agent.rb
@@ -8,15 +8,22 @@ module MASWithTwoNests
     attr_reader :target_point
     attr_reader :dead
     include Rubygame::Sprites::Sprite
-    def initialize
-      super
+    def initialize(world)
+      super()
+            @world = world
       @target_point = Point.new
       @direction = Point.new
       @dead = false
     end
+        
+        def move
+            unless @world.is_out?(@target_point)
+                @rect.center = [@target_point.x, @target_point.y]
+            end
+        end
 
     def current_point
-      Point.new(rect.x, rect.y)
+      Point.new(rect.center[0], rect.center[1])
     end
 
     def change_direction
@@ -26,4 +33,4 @@ module MASWithTwoNests
       @direction.normalize!
     end
   end
-end
\ No newline at end of file
+end
diff --git a/MASWithTwoNests/main.rb b/MASWithTwoNests/main.rb
index fce703a..849eb4c 100644
--- a/MASWithTwoNests/main.rb
+++ b/MASWithTwoNests/main.rb
@@ -7,14 +7,16 @@ require 'resource'
 
 module MASWithTwoNests
   class Main
-    attr_reader :clock
     def initialize
-      @screen = Screen.new [800, 600]
+      @screen = Screen.new [800, 600], 0, [HWSURFACE, DOUBLEBUF]
       @factory = AdapterFactory.new
+      @world = World.new(@screen)
+      @paused = false
       @render_adapter = @factory.renderer_for :rubygame, @screen
       @app = App.new :renderer => @render_adapter
       @clock = Clock.new
-      @clock.target_framerate = 20
+            @clock.enable_tick_events
+      @clock.target_framerate = 30
       @clock.calibrate
       @pause_chkbx = CheckBox.new :x => 601, :y => 0, :w => 10, :h => 10, :label_text => "Pause"
       @home_chkbx = CheckBox.new :x => 601, :y => 20, :w => 10, :h => 10, :label_text => "Start from home"
@@ -23,26 +25,38 @@ module MASWithTwoNests
       @restart_btn = Button.new "Restart", :x => 601, :y =>  80, :x_pad => 200, :y_pad => 10
       @app.add @pause_chkbx, @home_chkbx, @exp_chkbx, @restart_btn
       @restart_btn.on :pressed do
+        @app_adapter.draw @render_adapter
         @world = World.new(@screen)
       end
+      @pause_chkbx.on :checked do
+        @app_adapter.draw @render_adapter
+        @paused = !@paused
+      end
+      @home_chkbx.on :checked do
+        @app_adapter.draw @render_adapter
+        @world.bot_start_from_home = !@world.bot_start_from_home
+      end
+      @exp_chkbx.on :checked do
+        @app_adapter.draw @render_adapter
+        @world.home_getting_bigger = !@world.home_getting_bigger
+      end
       @app_adapter = @factory.app_for :rubygame, @app
       @queue = EventQueue.new
-      @world = World.new(@screen)
+      @app_adapter.draw @render_adapter
     end
 
     def run
       loop do
         update
-        @app_adapter.update @clock.tick
-        @app_adapter.draw @render_adapter
-        @world.update
-        @world.draw
+                tick = @clock.tick
+        @app_adapter.update tick
+        @world.update(tick) if not @paused
+        @screen.flip
       end
     end
 
     def update
       @queue.each do |event|
-        # pass on our events to the GUI
         if event.class == QuitEvent
           throw :rubygame_quit
         end
@@ -53,4 +67,4 @@ module MASWithTwoNests
     m = Main.new
     m.run
   end
-end
\ No newline at end of file
+end
diff --git a/MASWithTwoNests/resource.rb b/MASWithTwoNests/resource.rb
index da7837f..1ea40bd 100644
--- a/MASWithTwoNests/resource.rb
+++ b/MASWithTwoNests/resource.rb
@@ -9,8 +9,8 @@ require 'rubygame'
 module MASWithTwoNests
   class Resource < Agent
     attr_reader :life
-    def initialize(life, move_delay = 0, speed = 0)
-      super()
+    def initialize(world, life, move_delay = 0, speed = 0)
+      super(world)
       @move_delay = move_delay
       @update_time = 0
       @speed = speed
@@ -23,6 +23,7 @@ module MASWithTwoNests
       @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
     end
 
     def decrease_life
@@ -33,14 +34,19 @@ module MASWithTwoNests
       @life = @life + World::RESOURCE_UPDATE_VALUE
     end
 
-    def draw(arg)
-      @image.draw_circle_s(@rect.topleft, World::RESOURCE_LIFE_RADIUS_COEFF * @life, Rubygame::Color::ColorRGB.new([0, 0 , 1, 1]))
-      super(arg)
-    end
-
-    def update
+    def update(tick, world)
+            @dead = true if @life <= 0
 
+            @update_time += tick.milliseconds
+            if @update_time > @move_delay || 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
 
-    end
+            move
+        end
   end
-end
\ No newline at end of file
+end
diff --git a/MASWithTwoNests/world.rb b/MASWithTwoNests/world.rb
index c95d038..abe2763 100644
--- a/MASWithTwoNests/world.rb
+++ b/MASWithTwoNests/world.rb
@@ -9,10 +9,14 @@ require 'resource'
 
 module MASWithTwoNests
   class World
+    attr_accessor :home_getting_bigger
+    attr_accessor :bot_start_from_home
+        attr_accessor :screen
+        attr_accessor :background
+
     WIDTH = 600
     HEIGHT = 600
 
-    BOT_START_FROM_HOME = false
         BOT_WITH_RESOURCE_SPEED_COEFF = 1
         BOT_RADIUS = 2
         BOT_PERCEPTION_RADIUS = 40
@@ -26,34 +30,45 @@ module MASWithTwoNests
         RESOURCE_UPDATE_VALUE = 0.1
         RESOURCE_RESPAWN_DELAY = 500
         RESOURCE_COUNT = 15
-        RESOURCE_MOVE_DELAY = 7000
+        RESOURCE_MOVE_DELAY = 500
         RESOURCE_MOVE_SPEED = 110
 
         HOME_RADIUS = 10
-        HOME_GETTING_BIGGER = true
         RESOURCE_RANDOM_START_LIFE = true
 
     def initialize(screen)
+            @screen = screen
+      @home_getting_bigger = true
+      @bot_start_from_home = false
+      @background = Rubygame::Surface.new([WIDTH, HEIGHT])
       @agents = Rubygame::Sprites::Group.new
-      @agents << Resource.new(3)
-      @screen = screen
-      @agents.draw(@screen)
-      @screen.flip
+            Rubygame::Sprites::UpdateGroup.extend_object @agents
+      @agents << Resource.new(self, RESOURCE_START_LIFE, RESOURCE_MOVE_DELAY, RESOURCE_MOVE_SPEED)
     end
 
-    def update
-      @agents.update
+    def update(tick)
+            @background.blit @screen, [0, 0]
+            @agents.undraw @screen, @background
+      @agents.update(tick, self)
+            @agents.draw @screen
+            clean_dead_agents
+            check_collisions
     end
 
-    def draw
-      @agents.draw(@screen)
-      @screen.flip
-    end
+        def clean_dead_agents
+            @agents.each do |a|
+                @agents.kill(a) if a.dead
+            end
+        end
 
-    def is_out?
-      #TODO
-    end
+        def check_collisions
+            #@agents.each do |i,j|
+                #TODO: dispatch event if collided
+            #end    
+        end
 
-    #TODO
+    def is_out?(target_point)
+            return true if (( target_point.x <= 0 || target_point.x >= WIDTH) || target_point.y <= 0 || target_point.y >= HEIGHT)
+    end
   end
-end
\ No newline at end of file
+end

ça bouge! \o/


Passer de Ubuntu 10.04 à Xubuntu 12.04 LTS
ASUS N56VV (UEFI + GPT, Core i5-3230M @ 2.60GHz, Intel HD4000 + GeForce 750M, 12 Go de RAM, SSD 1 To)
Système principal : Archlinux (amd64), avec KDE
Système oublié la plupart du temps : Windows 8.1 Update 1 (x64, OEM)

Hors ligne

#117 Le 11/02/2012, à 20:08

Pylades

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

tshirtman a écrit :

du coup à la place t'utilise un clavier azerty?

Je passe au bépo/dvorak-us-intl dès que j’ai un gourou d’Xkb sous la main…


“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

#118 Le 11/02/2012, à 20:38

grim7reaper

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

@The Uploader : y’a un repo’ public où récupérer ton code ?

Dernière modification par grim7reaper (Le 11/02/2012, à 20:39)

Hors ligne

#119 Le 11/02/2012, à 21:02

The Uploader

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

https://github.com/guybrush-threepwood/SMAFightRuby

(je viens de le faire)

Dernière modification par The Uploader (Le 11/02/2012, à 21:02)


Passer de Ubuntu 10.04 à Xubuntu 12.04 LTS
ASUS N56VV (UEFI + GPT, Core i5-3230M @ 2.60GHz, Intel HD4000 + GeForce 750M, 12 Go de RAM, SSD 1 To)
Système principal : Archlinux (amd64), avec KDE
Système oublié la plupart du temps : Windows 8.1 Update 1 (x64, OEM)

Hors ligne

#120 Le 11/02/2012, à 22:58

grim7reaper

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

J’ai raté quelque chose ?

grim7reaper@smile tests]$ruby test_world.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- resource (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /home/grim7reaper/Documents/Développements/TdC/The Uploader/SMAFightRuby/MASWithTwoNests/world.rb:8:in `<top (required)>'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from test_world.rb:4:in `<main>'

Dernière modification par grim7reaper (Le 11/02/2012, à 22:59)

Hors ligne

#121 Le 11/02/2012, à 23:04

The Uploader

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

Bah j'ai fait des tests au début, mais ils ne sont plus d'actualité. tongue

"ruby main.rb" dans MASWithTwoNests devrait lancer le truc.


Passer de Ubuntu 10.04 à Xubuntu 12.04 LTS
ASUS N56VV (UEFI + GPT, Core i5-3230M @ 2.60GHz, Intel HD4000 + GeForce 750M, 12 Go de RAM, SSD 1 To)
Système principal : Archlinux (amd64), avec KDE
Système oublié la plupart du temps : Windows 8.1 Update 1 (x64, OEM)

Hors ligne

#122 Le 11/02/2012, à 23:17

grim7reaper

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

ha ok, effectivement ça fonctionne mieux ^^

Hors ligne

#123 Le 11/02/2012, à 23:36

The Uploader

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

Bon maintenant il y a 15 Resources avec une direction, vie, et vitesse aléatoire, comme dans l'original (<-- de nouveau sur GitHub). smile
(ce serait bien aussi que contrairement à l'original, elles changent de direction lorsqu'elles sont contre un mur, bloquées...)

Manque plus que BotTeam, l’événement pour les collisions, Bot, BotHome (déjà codé mais à tester), et l'équipe Antubis. Je commencerai tout ça demain. wink

Dernière modification par The Uploader (Le 11/02/2012, à 23:40)


Passer de Ubuntu 10.04 à Xubuntu 12.04 LTS
ASUS N56VV (UEFI + GPT, Core i5-3230M @ 2.60GHz, Intel HD4000 + GeForce 750M, 12 Go de RAM, SSD 1 To)
Système principal : Archlinux (amd64), avec KDE
Système oublié la plupart du temps : Windows 8.1 Update 1 (x64, OEM)

Hors ligne

#124 Le 11/02/2012, à 23:50

Pylades

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

Bon, j’ai un « Conditional jump or move depends on uninitialised value(s) » sur un printf. >_<" Le pire ce que j’assigne la variable que je passe à printf à la ligne d’avant. hmm


“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

#125 Le 12/02/2012, à 00:28

grim7reaper

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

C’est quoi le message complet de ce warning de Valgrind ?
Ou ton code accessoirement.

Dernière modification par grim7reaper (Le 12/02/2012, à 00:28)

Hors ligne

Haut de page ↑