Publié : ven. 15/mai/2009 15:53
Clair que Werber ça casse pas des barres niveau phrasé mais la trilogie des Fourmis (et les thanatonautes), je les ai trouvé vraiment captivants. Même si il ne fait que reprendre des infos ici et là. 

Forums PureBasic - Français
http://forums.purebasic.com/french/
tiens ça me rappelle quelqu'un.. heuu mais c'est moiCool Dji a écrit :Bon c'est po trop grave, je lis beaucoup et ça enrichira ma culture perso.
Bon, c'est toujours du temps en moins passé sur PureBasic, mais ma douce aime beaucoup quand je lis à coté d'elle le soir au lit au lieu d'être sur l'ordi !!! Faut parfois faire des concessions !!! Ah Yeah !
c'est une Api qui recupere la largeur (l'autre est pour la hauteur)en pixel de la résolution de ton ordinateur !!chikun a écrit : au 1er coup d'oeil, je ne connais pas "EcranX = GetSystemMetrics_(#SM_CXSCREEN)"
j'y ai pensé, mais es ce que ça ne me fait pas comparer à chaque déplacement tout le contenu du tbx à la position de chaque fourmi ?Pour la détection de la piste des phéromones, tu peux "tricher" en créant un tableau de la taille de l'écran, contenant la ou les valeurs représentatives des phéromones
Code : Tout sélectionner
; @ Chikun version 0.001
Structure sprite
xe.l
ye.l
direction.b
sensx.b
sensy.b
EndStructure
Enumeration
#sprite_fond
#sprite
EndEnumeration
nbr_sprite=50
Dim sprite.sprite(nbr_sprite)
; Test
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
InitSprite(): InitKeyboard()
OpenScreen (EcranX,EcranY,32,"Test")
; *********** ce sprite sert a effacer le fond ! ****************************
CreateSprite(#sprite_fond,EcranX,EcranY)
StartDrawing(SpriteOutput(#sprite_fond))
Box(0,0,EcranX,EcranY,RGB(0,0,0))
StopDrawing()
; ***************************************************************************
; *********** dessine le sprite *****************
CreateSprite(#sprite, 16, 16) ; c'est la meme image qui est employé
; dessine le sprite
StartDrawing(SpriteOutput(#sprite))
Circle(8,8,8, RGB(65,32,14))
StopDrawing()
; je les place au départ (plus tard dans la fourmilière)
For i=1 To nbr_sprite
sprite(i)\xe=300 : sprite(i)\ye=200
Next i
Repeat
;{ determine la direction
For i=1 To nbr_sprite
temp=Random(50)
If temp=25
sprite(i)\direction=Random(7)+1; choix de la direction
EndIf
; nord:
If sprite(i)\direction=1
sprite(i)\sensx=0
sprite(i)\sensy=-1
EndIf
; nord/est:
If sprite(i)\direction=2
sprite(i)\sensx=1
sprite(i)\sensy=-1
EndIf
; est:
If sprite(i)\direction=3
sprite(i)\sensx=1
sprite(i)\sensy=0
EndIf
; sud/est:
If sprite(i)\direction=4
sprite(i)\sensx=1
sprite(i)\sensy=1
EndIf
; sud:
If sprite(i)\direction=5
sprite(i)\sensx=0
sprite(i)\sensy=1
EndIf
; sud/ouest:
If sprite(i)\direction=6
sprite(i)\sensx=-1
sprite(i)\sensy=1
EndIf
; ouest:
If sprite(i)\direction=7
sprite(i)\sensx=-1
sprite(i)\sensy=0
EndIf
; nord/ouest:
If sprite(i)\direction=8
sprite(i)\sensx=-1
sprite(i)\sensy=-1
EndIf
; sortie d'écran (maintenir dans "une boite")
If sprite(i)\xe<0
sprite(i)\xe=0
EndIf
If sprite(i)\xe>EcranX-20;1024
sprite(i)\xe=EcranX-20 ;1024
EndIf
If sprite(i)\ye<0
sprite(i)\ye=0
EndIf
If sprite(i)\ye>EcranY-18 ;768
sprite(i)\ye=EcranY-18 ;768
EndIf
;}
; une fois que le sens est aquis: déplacement
sprite(i)\xe=sprite(i)\xe+sprite(i)\sensx
sprite(i)\ye=sprite(i)\ye+sprite(i)\sensy
DisplayTransparentSprite(#sprite,sprite(i)\xe,sprite(i)\ye) ; toujour la meme image qui est affiché
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
Next i
FlipBuffers()
DisplaySprite(#sprite_fond,0,0)
ForEver
Code : Tout sélectionner
pheromones(sprite(i)\x / 16, sprite(i)\y / 16) = #True
Code : Tout sélectionner
pheromones(sprite(i)\x / 16, sprite(i)\y / 16) = #True
Code : Tout sélectionner
; @ Chikun version 0.001
Structure sprite
xe.l
ye.l
direction.b
sensx.b
sensy.b
EndStructure
Enumeration
#sprite_fond
#sprite
EndEnumeration
nbr_sprite = 50
Dim sprite.sprite(nbr_sprite)
; Test
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
InitSprite() : InitKeyboard()
OpenScreen (EcranX, EcranY, 32, "Test")
; *********** ce sprite sert a effacer le fond ! ****************************
CreateSprite(#sprite_fond, EcranX, EcranY)
StartDrawing(SpriteOutput(#sprite_fond))
Box(0, 0, EcranX, EcranY, RGB(0, 0, 0))
StopDrawing()
; ***************************************************************************
; *********** dessine le sprite *****************
CreateSprite(#sprite, 16, 16) ; c'est la meme image qui est employé
; dessine le sprite
StartDrawing(SpriteOutput(#sprite))
Circle(8, 8, 8, RGB(65, 32, 14))
StopDrawing()
; je les place au départ (plus tard dans la fourmilière)
For i = 1 To nbr_sprite
sprite(i)\xe = 300 : sprite(i)\ye = 200
Next
Repeat
;{ determine la direction
For i = 1 To nbr_sprite
If Random(50) = 0
sprite(i)\direction = Random(7) + 1
Select sprite(i)\direction
Case 1
; nord:
sprite(i)\sensx = 0
sprite(i)\sensy = -1
Case 2
; nord/est:
sprite(i)\sensx = 1
sprite(i)\sensy = -1
Case 3
; est:
sprite(i)\sensx = 1
sprite(i)\sensy = 0
Case 4
; sud/est:
sprite(i)\sensx = 1
sprite(i)\sensy = 1
Case 5
; sud:
sprite(i)\sensx = 0
sprite(i)\sensy = 1
Case 6
; sud/ouest:
sprite(i)\sensx = -1
sprite(i)\sensy = 1
Case 7
; ouest:
sprite(i)\sensx = -1
sprite(i)\sensy = 0
Case 8
; nord/ouest:
sprite(i)\sensx = -1
sprite(i)\sensy = -1
EndSelect
EndIf
; sortie d'écran (maintenir dans "une boite")
If sprite(i)\xe < 0
sprite(i)\xe = 0
EndIf
If sprite(i)\xe > EcranX - 20 ; 1024
sprite(i)\xe = EcranX - 20 ; 1024
EndIf
If sprite(i)\ye < 0
sprite(i)\ye = 0
EndIf
If sprite(i)\ye > EcranY - 18 ; 768
sprite(i)\ye = EcranY - 18 ; 768
EndIf
;}
; une fois que le sens est aquis: déplacement
sprite(i)\xe = sprite(i)\xe + sprite(i)\sensx
sprite(i)\ye = sprite(i)\ye + sprite(i)\sensy
DisplayTransparentSprite(#sprite, sprite(i)\xe, sprite(i)\ye) ; toujour la meme image qui est affiché
Next
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
FlipBuffers()
DisplaySprite(#sprite_fond, 0, 0)
ForEver
Code : Tout sélectionner
dim pheromones.l(EcranX / 16, EcranY / 16)
et j'ai sortie la gestion du clavier de la boucle For Next
hum! ok je vois
Excuse, c'est un pote qui faisait souvent ça, j'ai repris son expression!chikun a écrit :Le Soldat Inconnu:merci pour m'avoir apris "select"
et j'ai sortie la gestion du clavier de la boucle For Nextbien vue!
djes :hum! ok je voishum! ok je vois....
Ce qui n'est pas DU TOUT la même chose.Hum! Ok, je vois.