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.

#126 Le 12/02/2012, à 02:58

Pylades

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

Le code n’est pas très présentable, en fait. tongue
Mais j’ai ça :

==13279== Memcheck, a memory error detector
==13279== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==13279== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
==13279== Command: ./bf primes.bf
==13279== 
==13279== Conditional jump or move depends on uninitialised value(s)
==13279==    at 0x4E7A07C: vfprintf (vfprintf.c:1619)
==13279==    by 0x4E80F78: printf (printf.c:35)
==13279==    by 0x400E96: byte_code (bf.c:283)
==13279==    by 0x4009AF: main (bf.c:58)
==13279== 
==13279== Use of uninitialised value of size 8
==13279==    at 0x4E7631B: _itoa_word (_itoa.c:195)
==13279==    by 0x4E787D6: vfprintf (vfprintf.c:1619)
==13279==    by 0x4E80F78: printf (printf.c:35)
==13279==    by 0x400E96: byte_code (bf.c:283)
==13279==    by 0x4009AF: main (bf.c:58)
==13279== 
==13279== Conditional jump or move depends on uninitialised value(s)
==13279==    at 0x4E76325: _itoa_word (_itoa.c:195)
==13279==    by 0x4E787D6: vfprintf (vfprintf.c:1619)
==13279==    by 0x4E80F78: printf (printf.c:35)
==13279==    by 0x400E96: byte_code (bf.c:283)
==13279==    by 0x4009AF: main (bf.c:58)

Déclenché sur un vulgaire printf d’une variable assignée sur la ligne du dessus.

cd.arg[j] = pop(&sk);
printf("%ld\n", cd.arg[j]);

“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

#127 Le 12/02/2012, à 15:12

The Uploader

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

commit 2ee8be1f6696e0347bcac2ed4cf1094e4dd18b6f
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Sun Feb 12 15:09:45 2012 +0100

    BotTeam (works) but no bots for now
    
    Also, BotHome.resource_count will be sent to the standard output by the World for now.
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>

diff --git a/MASWithTwoNests/bot_home.rb b/MASWithTwoNests/bot_home.rb
index a7c004d..f072f83 100644
--- a/MASWithTwoNests/bot_home.rb
+++ b/MASWithTwoNests/bot_home.rb
@@ -9,14 +9,22 @@ require 'rubygame'
 module MASWithTwoNests
   class BotHome < Agent
         attr_reader :team_id
+        attr_reader :resource_count
         def initialize(world, team_id, color)
             super(world)
+            Rubygame::TTF.setup
+            @ttf = Rubygame::TTF.new("/usr/share/fonts/TTF/Ubuntu-L.ttf", 9)
+            @resource_count = 0
             @team_id = team_id
             @color = color
-            @count_text = ""
             @image = Rubygame::Surface.new([World::HOME_RADIUS * 2, World::HOME_RADIUS * 2])
             @rect = @image.make_rect
-            @image.draw_circle_s(@rect.center, Rubygame::Color::ColorRGB.new([0.22745, 0.22745, 0.22745, 1]))
+            @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]))
+        end
+
+        def update(tick, world)
         end
 
         def add_resource
@@ -24,4 +32,3 @@ module MASWithTwoNests
         end
     end
 end
- 
diff --git a/MASWithTwoNests/bot_team.rb b/MASWithTwoNests/bot_team.rb
new file mode 100644
index 0000000..6778dbb
--- /dev/null
+++ b/MASWithTwoNests/bot_team.rb
@@ -0,0 +1,27 @@
+$LOAD_PATH << '../'
+require 'lib/point'
+include Lib
+$LOAD_PATH << './'
+require 'agent'
+require 'world'
+require 'rubygame'
+require 'bot_home'
+
+module MASWithTwoNests
+    class BotTeam < Agent
+        attr_reader :team_id
+        def initialize(world, team_id, color, bot_types)
+            @world = world
+            @team_id = team_id
+            @color = color
+            @bot_types = bot_types
+
+            team_color = @color.to_rgba_ary
+            2.times do |i|
+                team_color[i] += 0.13333333
+            end
+            team_home = BotHome.new(@world, @team_id, Rubygame::Color::ColorRGB.new(team_color))
+            @world.agents << team_home
+        end
+    end
+end
diff --git a/MASWithTwoNests/world.rb b/MASWithTwoNests/world.rb
index e10bb7b..f1225cf 100644
--- a/MASWithTwoNests/world.rb
+++ b/MASWithTwoNests/world.rb
@@ -6,12 +6,15 @@ $LOAD_PATH << '../'
 require "lib/point"
 $LOAD_PATH << './'
 require 'resource'
+require 'bot_team'
 include Lib
 
 module MASWithTwoNests
   class World
     attr_accessor :home_getting_bigger
     attr_accessor :bot_start_from_home
+        attr_accessor :agents
+        attr_accessor :screen
 
     WIDTH = 600
     HEIGHT = 600
@@ -46,6 +49,7 @@ 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
     end

- 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

#128 Le 12/02/2012, à 16:45

grim7reaper

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

Les polices en dur dans le code c’est mal :

Could not open font: Couldn't open /usr/share/fonts/TTF/Ubuntu-L.ttf

Ou alors faut fournir les polices avec ton code.



@Πυλάδης : faudrait voir le reste du code, on verra ça quand tu feras ta release.

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

Hors ligne

#129 Le 12/02/2012, à 16:51

The Uploader

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

>_<

Bah t'façon ça ne fonctionne pas (normalement le resource_count s'affiche au dessus de la maison). Du coup, j'ai décidé que le score sera affiché dans la sortie standard, na. tongue
(C'est nettoyé)

Dernière modification par The Uploader (Le 12/02/2012, à 16:58)


- 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

#130 Le 12/02/2012, à 17:09

grim7reaper

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

Effectivement.
Sinon, je ne sais pas si c’est voulu, mais je la trouve un peu crade la sortie

`throw': uncaught throw :rubygame_quit (ArgumentError)

Hors ligne

#131 Le 12/02/2012, à 17:13

The Uploader

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

Ben c'est comme ça dans les exemples...
Mais c'est remplacé par

Rubygame.quit
exit

- 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

#132 Le 12/02/2012, à 17:19

grim7reaper

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

The Uploader a écrit :

Ben c'est comme ça dans les exemples...

Bah ça pue o_O"
Dans le genre on code comme un porc, ça se pose là.
Depuis quand laissé filer une exception c’est un moyen propre que quitter ?

Genre en C++, ça appelle std::terminate qui appelle std::abort.
En Java, ça crash aussi.
Donc bon, de mon point de vue laisser filer une exception c’est pas quitter proprement.
À ce compte-là, on en vient à justifier des horreurs de ce genre

void search( TreeNode node, Object data ) throws ResultException {
    if (node.data.equals( data ))
        throw new ResultException( node );
    else {
        search( node.leftChild, data );
        search( node.rightChild, data );
    }
    }

Hé oui, si on utilise les exceptions pour finir un programme avec succès. Pourquoi pas s’en servir dans des algo pour renvoyer un résultat…

The Uploader a écrit :

Mais c'est remplacé par

Rubygame.quit
exit

Ce qui est beaucoup mieux et bien plus propre smile

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

Hors ligne

#133 Le 12/02/2012, à 17:22

The Uploader

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

Bah le pire c'est que j'avais déjà fait ça dans Gauge. tongue (utiliser Rubygame.quit et exit à la place)

Sinon :

commit 808a0c42efa1b6d53d87222e9f4a5b18eb2d7d14
Author: Maximilien Noal <mnoal@epsi.fr>
Date:   Sun Feb 12 17:20:20 2012 +0100

    s/kill/delete to remove dead agents
    
    Signed-off-by: Maximilien Noal <mnoal@epsi.fr>

diff --git a/MASWithTwoNests/world.rb b/MASWithTwoNests/world.rb
index 083fff9..90b6e6e 100644
--- a/MASWithTwoNests/world.rb
+++ b/MASWithTwoNests/world.rb
@@ -65,7 +65,7 @@ module MASWithTwoNests
 
                def clean_dead_agents
                        @agents.each do |a|
-                               @agents.kill(a) if a.dead
+                               @agents.delete(a) if a.dead
                        end
                end

(et en avant pour l’événement de collision + le bot, et ce sera plus ou moins fini)

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


- 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

#134 Le 12/02/2012, à 17:46

tshirtman

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

L'idée d'utiliser les exceptions dans les algos m'a déjà démangé, mais j'ai jamais vraiment tenté, y'avait jamais trop d'avantage à première vue, et puis c'est vrai que c'est franchement dégeu (mais ce ne serait pas grave si ça apportait quelque chose d'intéressant).

Hors ligne

#135 Le 12/02/2012, à 18:25

The Uploader

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

class World
[...]
def check_collisions
  @agents.each do |i|
    @agents.each do |j|
      if i.collide(j)
        i.on_collide(j) if i.respond_to?('on_collide')
      end
      next
    end
  end    
end

Voilà. Aux chiottes les événements et le pattern observer, j'avais pas envie. tongue

Dernière modification par The Uploader (Le 12/02/2012, à 18:54)


- 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

#136 Le 12/02/2012, à 19:50

Pylades

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

grim7reaper a écrit :

@Πυλάδης : faudrait voir le reste du code, on verra ça quand tu feras ta release.

Le problème, c’est que ça me fait segfaulter un peu plus tard…


“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

#137 Le 12/02/2012, à 23:44

grim7reaper

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

Bah alors release maintenant tongue

Hors ligne

#138 Le 13/02/2012, à 01:48

Pylades

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

Mouais… Je ne suis pas convaincu, quand même. 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

#139 Le 13/02/2012, à 09:32

Lumin0u

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

vous avez une solution simple pour décoder les références de caractère html en python?
sur cette article: http://fredericiana.com/2010/10/08/deco … in-python/
la 3eme solution est parfaite mais pourquoi n'est elle pas documentée O_O ?

Hors ligne

#140 Le 13/02/2012, à 11:03

tshirtman

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

D'après le code source, elle a été codé comme helper, et l'auteur n'a pas jugé utile de la fournir au publique… c'est dommage oui. Il est probablement possible d'obtenir qu'elle soit publique et documenté en demandant gentiment…

(plutot pour python3 par contre)

Dernière modification par tshirtman (Le 13/02/2012, à 11:04)

Hors ligne

#141 Le 13/02/2012, à 11:19

tshirtman

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

popularité des langages dans debian (wheezy)
Languages-of-Debian-Wheezy-2012-02-09.jpg


j'ai passé quelques secondes à me demander «c'est quoi "ansic"» ^^ puis ça a fait tilt.

sauce
http://blog.james.rcpt.to/?p=446

Dernière modification par tshirtman (Le 13/02/2012, à 11:19)

Hors ligne

#142 Le 13/02/2012, à 15:35

Lumin0u

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

un petit code en python pour récupérer les quotes de pebkac:

#!/usr/bin/python3

import html.parser
import re
import urllib.request as urllib

QUOTE_OPENING = '<td class="pebkacContent">'
QUOTE_ENDING  = '</td>'

unescapeHtmlEnt = html.parser.HTMLParser().unescape

def removePatternFromQuote(s, pattern):
    m = re.search(pattern, s)
    while m:
        s = s[:m.start()] + s[m.end():]
        m = re.search(pattern, s)
    return s

def extractQuote(s):
    for p in ['<span.*?/span>', '<a.*?/a>', '<.*?>']:
        s = removePatternFromQuote(s, p)
    s = s.replace('\\r\\n', '\n')
    s = unescapeHtmlEnt(s)
    s = s[:len(s)-13] # removes " dd/mm/yy par" in the end
    return s

def getQuotes(url):
    resp = urllib.urlopen(url)
    htmlResp = str(resp.read())
    m = re.findall(QUOTE_OPENING + '.*?' + QUOTE_ENDING, htmlResp)
    quotes = []
    if len(m):
        for q in m:
            quotes.append(extractQuote(q))
    return quotes

def urlWithPage(url, page):
    if page == 1:
        return url
    return url + '&page=' + str(page)

def randomQuotes():
    return getQuotes('http://www.pebkac.fr/pebkac-aleatoires.html')

# page: 1 to 10, each page contains 10 quotes
def top100Quotes(page = 1):
    return getQuotes(urlWithPage('http://www.pebkac.fr/index.php?p=top', page))

# page: 1 to 10, each page contains 10 quotes
def flop100Quotes(page = 1):
    return getQuotes(urlWithPage('http://www.pebkac.fr/index.php?p=flop', page))

if __name__ == '__main__':
    for q in randomQuotes():
        print(q+'\n--\n')

bon c'est un peu crade et pas très portable tongue
les 3 fonctions à utiliser son randomQuotes(), top100Quotes() et flop100Quotes(), elles retournent une liste de str.
sinon le caractère 'œ' n'est pas transformé, j'ai le code ''\x9c" à la place... qu'est ce qui manque comme transformations? (au pire je fais un str.replace('\x9c', 'œ'))

Hors ligne

#143 Le 14/02/2012, à 09:24

grim7reaper

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

Aux utilisateurs de Ruby : vous connaissez ces outils là : RVM et rbenv ?

Hors ligne

#144 Le 14/02/2012, à 09:26

The Uploader

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

Nope, and nope.


- 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

#145 Le 14/02/2012, à 17:04

tshirtman

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

tout le monde connais rvm dans le monde ruby non oO?

rbenv j'ai vu passer sur #ruby, mais je connais pas plus que ça…

Hors ligne

#146 Le 14/02/2012, à 20:00

The Uploader

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

Bah de nom, quoi. De la à connaître..

Dernière modification par The Uploader (Le 14/02/2012, à 20:00)


- 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

#147 Le 14/02/2012, à 20:57

grim7reaper

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

Tiens, je viens d’apprendre la sortie d’un nouveau bouquin sous licence CC et dispo en PDF : Open Advice.

Hors ligne

#148 Le 16/02/2012, à 19:42

Elzen

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

C'est mal foutu yikes

La méthode pack_start d'une gtk.Box ne déclenche pas le signal "add"…

Hors ligne

#149 Le 16/02/2012, à 21:03

Lumin0u

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

qu'est ce que vous pensez de scala? vous pensez qu'il y a un avenir dans les pme et les tpe (pour la culture perso c'est bien mais si ça peut servir au boulot c'est mieux) ? sur ubuntu (je suis sur fedora) vous avez la version 2.9 ?

Hors ligne

#150 Le 16/02/2012, à 21:35

Ichigo-Roku

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

2.9.0.1 sur oneiric.

Hors ligne