momo 18 Posté(e) le 24 mai 2008 Partager Posté(e) le 24 mai 2008 bon je suis toujours aussi nul mais je me suis lancé dans un projet à la con un genre de rangeur de pixels ( on prend un pixel et on le lache à côté d'un autre puis on se déplace au hasard) le problème est que pour ça, j'aimerai un genre de canvas de tkinter mais sans tout le baratin d'objets : après tout je vais juste mettre et enlever des pixels .... le problème est que j'ai énormément de mal à trouver un truc qui semble faire ça simplement. bon, c'est vrai qu'en utilisant Canvas.create_rectangle et la fonction after, ça marche mais c'est lent : plus de 5 min pour afficher 64000 "pixels" ... donc si quelqu'un a une solution ... Lien à poster
momo 18 Posté(e) le 24 mai 2008 Auteur Partager Posté(e) le 24 mai 2008 bon, je suis bien parti pour sortir un truc genre opengl donc j'ai resolu le problème en smallbasic Lien à poster
Carambar 18 Posté(e) le 24 mai 2008 Partager Posté(e) le 24 mai 2008 Je n'ai pas tout compris... :oups Il sert à quoi ce programme ? Ou alors c'est juste pour le fun et pour ta culture ? Lien à poster
UniKorn 2 Posté(e) le 25 mai 2008 Partager Posté(e) le 25 mai 2008 Des fois, on a des tranches de la vie de momo, et on scotche dessus comme sur un document Arte à 1h du mat'. On y pige que dalle, mais on bloque quand même dessus. Lien à poster
momo 18 Posté(e) le 25 mai 2008 Auteur Partager Posté(e) le 25 mai 2008 Carambar> à rien. quand je programme, ça ne sert absolument à rien, sinon je cours le risque de creer un programme populaire et je programme comme un pied. UniKorn> toi aussi ? le truc, c'est de ne pas chercher à comprendre, apres, il y a comme une sous couche de logique ... randomize timer:cls maxx=640 maxy=480 dot=10000 dim tabl(maxx+1,maxy+1) dim term(10,3) dim coul(10) coul(0)=&hFF0000 coul(1)=&h00FF00 coul(2)=&h0000FF coul(3)=&hFFFF00 coul(4)=&hFF00FF coul(5)=&h00FFFF coul(6)=&hAA00FF coul(7)=&hFF00AA coul(8)=&hFFAA00 coul(9)=&h00FFAA 'main init for x=0 to dot a=int(rnd*maxx) b=int(rnd*maxy) tabl(a,=1 pset a,b,0 next for a=0 to 9 term(a,0)=int(rnd*maxx) term(a,1)=int(rnd*maxy) term(a,3)=0 next 'main randomize timer while 1 for index=0 to 9 termite index next randomize timer wend end 'sub sub termite(number) tx=term(number,0) ty=term(number,1) tc=term(number,2) cc=0 for a=-1 to 1 for b=-1 to 1 cx=(tx+a) cy=(ty+ if cx>=0 and cy>=0 and cx<=maxx and cy=1 and tabl(tx,ty)=0 then tabl(tx,ty)=1 tc=0 pset tx,ty,-coul(number) endif dirx=1-int(rnd*2) diry=1-int(rnd*2) tx=tx+dirx ty=ty+diry if tx<0 then tx=maxx if ty<0>maxx then tx=0 if ty>maxy then ty=0 if tabl(tx,ty)=1 and tc=0 then tc=1 tabl(tx,ty)=0 pset tx,ty,-&hFFFFFF endif term(number,0)=tx term(number,1)=ty term(number,2)=tc locate number+1,100 : color -coul(number): print "term: ",number," X: ",tx," Y: ",ty, :if tc=1 then print "Carry" else print " " end c'est moche, hein ? Lien à poster
UniKorn 2 Posté(e) le 25 mai 2008 Partager Posté(e) le 25 mai 2008 c'est moche, hein ? Ouaip, autant que du REXX ou du FORTRAN. Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 import pygame from pygame.locals import * from random import randrange dirs=[[-1,-1],[0,-1],[+1,-1],[-1,0],[+1,0],[-1,+1],[0,+1],[+1,+1]] dots=10000 swidth=640 sheight=480 numterm=24 #init "screen" pygame.init() display1=pygame.display.set_mode((swidth,sheight)) scre=[] for i in range(swidth+1): scre.append([]) for e in range(sheight+1): scre[i].append(0) term=[] #check if movement is valid def check(min,coord,max): tc=coord if coordmax: tc=min return tc #check if there is stuff around those coords def check_around(x,y): tt,tx,ty=0,0,0 for index in range(7): nx=x+dirs[index][0] ny=y+dirs[index][1] tx=check(0,nx,swidth) ty=check(0,ny,sheight) if nx==tx and ny==ty: tt+=scre[tx][ty] if tt>0: return 1 else: return 0 # init termites "memory" for i in range(numterm): term.append([]) term[i].append(randrange(swidth)) term[i].append(randrange(sheight)) term[i].append(0) #define termite actions def termite(arg): x=arg[0] y=arg[1] c=arg[2] # pickup something ? if c==0 and scre[x][y]>0: c=1 scre[x][y]=0 #move e=randrange(8) nx=x+dirs[e][0] ny=y+dirs[e][1] x=check(0,nx,swidth) y=check(0,ny,sheight) # drop something ? if c>0 and scre[x][y]==0 and check_around(x,y): scre[x][y]=1 c=0 #move e=randrange(8) nx=x+dirs[e][0] ny=y+dirs[e][1] x=check(0,nx,swidth) y=check(0,ny,sheight) return [x,y,c] # init game def init(): for index in range(dots): a=randrange(640) b=randrange(480) scre[a][b]=1 print "done init" #show screen def shows(): for a in range(swidth): for b in range(sheight): tt=scre[a][b] if tt==0: display1.set_at((a,,(0,0,0)) else: display1.set_at((a,,(255,255,255)) pygame.display.flip() #main screen turn on init() shows() quitt=0 while quitt==0: for event in pygame.event.get(): if event.type == QUIT: quitt=1 if event.type == MOUSEBUTTONDOWN: print term for a in range(2000): for index in range(numterm): term[index]=termite(term[index]) shows() bon, j'ai pas fini le debuggage ( je ferais ça à tête reposée) mais ça a l'air de marcher ... et c'est vachement plus rapide du coup Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 import pygame from pygame.locals import * from random import randrange dirs=[[-1,-1],[0,-1],[+1,-1],[-1,0],[+1,0],[-1,+1],[0,+1],[+1,+1]] dots=10000 swidth=640 sheight=480 numterm=24 colors=[] for index in range(numterm+1): colors.append([]) colors[index].append(randrange(255)) colors[index].append(randrange(255)) colors[index].append(randrange(255)) colors[0]=[255,255,255] print colors #init "screen" pygame.init() display1=pygame.display.set_mode((swidth,sheight)) scre=[] for i in range(swidth+1): scre.append([]) for e in range(sheight+1): scre[i].append(0) term=[] #check if movement is valid def check(min,coord,max): tc=coord if coordmax: tc=min return tc #check if there is stuff around those coords def check_around(x,y): tt,tx,ty=0,0,0 for index in range(7): nx=x+dirs[index][0] ny=y+dirs[index][1] tx=check(0,nx,swidth) ty=check(0,ny,sheight) if nx==tx and ny==ty: tt+=scre[tx][ty] if tt>0: return 1 else: return 0 # init termites "memory" for i in range(numterm): term.append([]) term[i].append(randrange(swidth)) term[i].append(randrange(sheight)) term[i].append(0) #define termite actions def termite(arg,col): x=arg[0] y=arg[1] c=arg[2] # pickup something ? if c==0 and scre[x][y]>0: c=1 scre[x][y]=0 #move e=randrange(8) nx=x+dirs[e][0] ny=y+dirs[e][1] x=check(0,nx,swidth) y=check(0,ny,sheight) # drop something ? if c>0 and scre[x][y]==0 and check_around(x,y): scre[x][y]=col c=0 #move e=randrange(8) nx=x+dirs[e][0] ny=y+dirs[e][1] x=check(0,nx,swidth) y=check(0,ny,sheight) return [x,y,c] # init game def init(): for index in range(dots): a=randrange(640) b=randrange(480) scre[a][b]=1 print "done init" #show screen def shows(): for a in range(swidth): for b in range(sheight): tt=scre[a][b] if tt==0: display1.set_at((a,,(0,0,0)) else: display1.set_at((a,,colors[tt-1]) pygame.display.flip() #main screen turn on init() shows() quitt=0 while quitt==0: for event in pygame.event.get(): if event.type == QUIT: quitt=1 if event.type == MOUSEBUTTONDOWN: print "X is the key" for a in range(2000): for index in range(numterm): term[index]=termite(term[index],index+1) shows() version finale en couleur qui semble marcher suffisamment bien ... comme ça, si ça interesse quelqu'un à part moi, il pourra essayer ce truc inutile. Lien à poster
TeKa 8 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 J'ai pas compris, mais c'est joli... Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 donc une explication : ce truc est composé d'agents des "termites" dont les role est de déplacer des pixels selon des règles simples : - si elle se trouve sur un pixel et qu'elle n'en transporte pas, elle le prend - elle se déplace au hasard - si elle transporte un pixel et qu'elle se trouve à la proximité d'un autre, elle le pose et se barre. ces règles simples font que l'ensemble des agents bossent à regrouper ces pixels et j'ai juste ajouté un code couleur en fonction de quel agent l'a posé. Lien à poster
Carambar 18 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 Je n'ai pas encore réinstallé Python... Tu pourrais poster une capture d'écran ? Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 euh, ouais, je pourrais mais c'est juste un tas de pixels de couleur sur fond noir, quoi ... mais bon : Lien à poster
Carambar 18 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 Ce n'est pas faux... D'autant que ton explication précédente était plus éclairante (on a posté quasi simultanément). Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 m'enfin ma version en assembleur/sphinx C-- était plus simple .. Lien à poster
TeKa 8 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 M'enfin ta version python est sans doute plus simple a comprendre... Ca me fait penser un peu au jeu de la vie de Conway ton truc. Lien à poster
thev 0 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 Un gif animé momo, un gif animé @+ Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 TeKa> pas difficile : je codes toujours plus propre en python ... thev> merci, mais il me faudrai modifier le programme et 3-4 heures pour qu'il me sorte ça de maniere correcte ... ( pas compliqué mais la flemme : en gros je sort chaque image sur le disque ) Lien à poster
TeKa 8 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 En meme temps, avec un langage pour maniaques comme le python, je pense que si on veut mal coder, il vaut mieux prendre autre chose... ^^ Lien à poster
momo 18 Posté(e) le 26 mai 2008 Auteur Partager Posté(e) le 26 mai 2008 c'est moche et mal encodé mais ça m'a demandé pres d'une heure donc je ne vais pas jeter cette merde : http://v3.tinypic.com/player.swf?file=2j499hk Lien à poster
Carambar 18 Posté(e) le 26 mai 2008 Partager Posté(e) le 26 mai 2008 "What exactly are we looking at?" "I dunno but I think it's about to attack the Enterprise" (Friends) Plus sérieusement, ça me dépasse ! Lien à poster
momo 18 Posté(e) le 27 mai 2008 Auteur Partager Posté(e) le 27 mai 2008 boh, c'est plutôt simple ... ( si c'était compliqué, je n'y arriverais pas ) à la base, ce genre de programme est une démonstration de la complexité pouvant emerger de la simplicité, d'où la ressemblance ( de loin ) avec le Conway's game of life ou les fourmis de langton ... Lien à poster
momo 18 Posté(e) le 27 mai 2008 Auteur Partager Posté(e) le 27 mai 2008 bon ce sera plus propre avec ça : [Link=http://imageshack.us][/url] Lien à poster
Messages recommandés