Accueil > > > FRACTALES EN PICWINS
FRACTALES EN PICWINS
Information sur la source
Description
Disclaimer:
*** Ce code est donné à titre anecdotique : mIRC ne fournit pas les perfs obligatoires pour faire des fractales plus évoluées, mais bon, ça détend entre deux scanners de clones non ? ***
J'ai retrouvé les fractales suivantes dans un vieux script, j'avais posté des screenshots sur sdb, mais je me rends compte que je n'avais laissé les sources nulle part. Donc je corrige l'erreur, avec le screenshot fait à l'époque (qui est de très piètre qualité, merci le jpg obligatoire..) :-)
Comme souvent, je me soustrais un peu au jeu mais je ne poste pas ça pour avoir des critiques sur mon code'style, pour plusieurs raisons :
- je m'en fous un peu des avis des uns et des autres sur mon niveau en mirc, sans méchanceté,
- ces sources ont plus de 2 ans et que je ne les ai pas du tout retravaillées, elles ne reflètent donc pas ce que je coderais aujourd'hui,
Tapez /fractal une fois loadé !
Source
- Alias fractal {
- e 0 1
- e 5 0 Ces aliases montrent des exemples de construction de fractales en picwins
- e 5 0 Pada - pada.irc@gmail.com - 2008
- e 5 3 * /vonkoch : Flocon de Von Koch. Plus d'infos : http://fr.wikipedia.org/wiki/Flocon_de_Koch
- e 5 3 * /fougere [nombre_d_iterations] : Fougère de Barnsley. Plus d'infos :
- e 5 3 * /sierp [nombre_d_iterations] : Triangle de Sierpinski. Plus d'infos : http://fr.wikipedia.org/wiki/Triangle_de_Sierpinski
- e 5 3 * /ifs [motif] [nombre_d_iterations] : Iterated Function System, généralisation des deux exemples précédents. Plus d'infos : http://en.wikipedia.org/wiki/Iterated_function_system
- e 5 7 Motifs acceptés: spirale fougere dragon sierpinski arbre. Par défaut: dragon
- e 5 7 Attention: l'utilisation de cette fonction nécessite d'avoir le fichier "fract.ini" au même niveau que le remote !
- e 0 1
- }
- Alias -l e echo $$1 -a $str($chr(160),$$2) $3-
-
- ;#############
-
- Alias vonkoch {
- if $hget(Fractal) { hfree fractal }
- hmake fractal 100
- hadd fractal itr 0
- hadd fractal 0 100 400
- hadd fractal 1 500 400
- hadd fractal 2 300 $calc(400 - $sqrt(3) * 200)
- hadd fractal 3 100 400
- window -aCpd @VonKoch -1 -1 600 600
- vonkoch2
- }
- Alias -l vonkoch2 {
- clear @VonKoch
- drawfill -c @VonKoch 1 1 1 1
- if ($hget(fractal,itr) >= 6) { vonkoch | halt }
- hinc fractal itr
- ;#"espacement" de chaque ancien point
- var %i $calc(3 * 4 ^ $hget(fractal,itr))
- while (%i >= 0) {
- hadd fractal $calc(%i) $hget(fractal,$calc(%i / 4))
- dec %i 4
- }
- ;#calcul des nouveaux points
- %i = 0
- while (%i < $calc(3 * 4 ^ $hget(fractal,itr))) {
- tokenize 32 $hget(fractal,%i) $hget(fractal,$calc(%i + 4))
- var %dx $calc($3 - $1) , %dy $calc($4 - $2)
- hadd fractal $calc(%i + 1) $calc($1 + %dx * 1 / 3) $calc($2 + %dy * 1 / 3)
- hadd fractal $calc(%i + 3) $calc($1 + %dx * 2 / 3) $calc($2 + %dy * 2 / 3)
- tokenize 32 $hget(fractal,$calc(%i + 1)) $hget(fractal,$calc(%i + 3))
- tokenize 32 $calc(($3 - $1) / 2) $calc(($4 - $2) / 2)
- hadd fractal $calc(%i + 2) $calc($gettok($hget(fractal,$calc(%i + 1)),1,32) + $1 - $2 * $sqrt(3)) $calc($gettok($hget(fractal,$calc(%i + 1)),2,32) + $2 + $1 * $sqrt(3))
- var %imax = $calc(%i + 4)
- while (%i < %imax) {
- tokenize 32 $hget(fractal,%i) $hget(fractal,$calc(%i + 1))
- drawline @VonKoch 7 2 $1 $2 $3 $4
- inc %i
- }
- }
- drawtext -bp @VonKoch 15 1 Tahoma 12 420 10 Itération $+ $iif($hget(fractal,itr) > 1,s) $+ : $hget(fractal,itr)
- drawtext -bp @VonKoch 15 1 Tahoma 12 420 30 Points [3*4^N] : $calc($hget(fractal,0).item - 2)
- drawtext -bp @VonKoch 15 1 Tahoma 12 10 10 Cliquez pour obtenir l'itération $iif($hget(fractal,itr) >= 6,0,$calc($hget(fractal,itr) + 1))
- }
- Menu @VonKoch {
- sclick:vonkoch2
- }
-
- ;#############
-
- ; Fougère de Barnsley
- ; Coordonnées tirées de http://www.futura-sciences.com/comprendre/d/dossier234-6.php
-
- Alias fougere {
- window -aCpd @Foug -1 -1 400 600
- drawfill @Foug 1 1 1 1
- var %n $iif($1,$1,15000),%k 1,%x 50,%y 0
- while (%k <= %n) {
- var %r = $rand(0,1000)
- if (%r <= 10) { %x = 0 | %y = $calc(0.16 * %y) }
- elseif (%r <= 860) { %x = $calc(0.85 * %x + 0.04 * %y) | %y = $calc(- 0.04 * %x + 0.85 * %y + 1.6) }
- elseif (%r <= 930) { %x = $calc(0.2 * %x - 0.26 * %y) | %y = $calc(0.23 *%x + 0.22 * %y + 1.6) }
- else { %x = $calc(- 0.15 * %x + 0.28 * %y) | %y = $calc(0.26 * %x + 0.24 * %y + 0.44) }
- drawdot @Foug 3 1 $calc(200 - 60 * %x) $calc(600 - 60 * %y)
- inc %k
- }
- }
-
- ;#############
-
- ; Triangle de Sierpinski
-
- Alias sierp {
- window -aCpd @Sierpinski -1 -1 450 390
- drawfill @Sierpinski 1 1 1 1
- var %n $iif($1,$1,15000),%k 1,%x 0,%y 0
- while (%k <= %n) {
- var %r = $rand(0,1000)
- if (%r <= 333) { %x = $calc(0.5 * %x) | %y = $calc(0.5 * %y) }
- elseif (%r <= 666) { %x = $calc(0.5 * %x + 1) | %y = $calc(0.5 * %y) }
- else { %x = $calc(0.5 * %x + 0.5) | %y = $calc(0.5 * %y + 0.8660254) }
- drawdot @Sierpinski 12 1 $calc(400 - 180 * %x) $calc(350 - 200 * %y)
- inc %k
- }
- }
-
- ;#############
-
- ; Iterated Function System généralisées
-
- Alias IFS {
- if (!$exists($scriptdirfract.ini)) { echo -a Placez "fract.ini" au même niveau que le remote ! | halt }
- var %b $ticks,%m = $iif($1,$1,dragon),%n = $iif($2,$2,$readini($scriptdirfract.ini,Main,N))
- tokenize 32 $readini($scriptdirfract.ini,%m,z)
- if (!%n) { echo -a Erreur: impossible de déterminer la précision : votre fichier fract.ini est il valide ? | halt }
- var %k 1,%c $1,%x $2,%y $3,%x0 $4,%x1 $5,%y0 $6,%y1 $7,%r
- if ($window(@IFS)) { close -@ @IFS }
- window -aCpd @IFS -1 -1 $8 $9
- drawfill @IFS 1 1 1 1
- while (%k <= %n) {
- %r = $rand(0,1000)
- tokenize 32 $readini($scriptdirfract.ini,%m,1) $readini($scriptdirfract.ini,%m,2) $readini($scriptdirfract.ini,%m,3) $readini($scriptdirfract.ini,%m,4)
- if (%r <= $7) { %x = $calc($1 * %x + $2 * %y + $5) | %y = $calc($3 * %x + $4 * %y + $6) }
- elseif (%r <= $14) { %x = $calc($8 * %x + $9 * %y + $12) | %y = $calc($10 * %x + $11 * %y + $13) }
- elseif (%r <= $21) { %x = $calc($15 * %x + $16 * %y + $19) | %y = $calc($17 * %x + $18 * %y + $20) }
- elseif (%r <= $28) { %x = $calc($22 * %x + $23 * %y + $26) | %y = $calc($24 * %x + $25 * %y + $27) }
- drawdot @IFS %c 1 $calc(%x0 - %x1 * %x) $calc(%y0 - %y1 * %y)
- inc %k
- }
- ; echo -ta > $calc(1000 * ($ticks - %b)) s
- }
- Menu @IFS {
- ;sclick:echo -s > $mouse.x $mouse.y
- Spirale:IFS spirale $readini($scriptdirfract.ini,Main,N)
- Fougere:IFS fougere $readini($scriptdirfract.ini,Main,N)
- Dragon:IFS dragon $readini($scriptdirfract.ini,Main,N)
- Sierpenski:IFS sierpinski $readini($scriptdirfract.ini,Main,N)
- Arbre:IFS arbre $readini($scriptdirfract.ini,Main,N)
- -
- Changer la précision:writeini $scriptdirfract.ini Main N $$?="Points ? (défaut 4000)"
- }
-
-
-
- ;#############
-
- ; Exposant de Lyapounov
- ; ATTENTION: NE FONCTIONNE PAS
- ; Les valeurs à donner sont du genre 50 50 (taille de fenêtre désirée), mais ça fait freezer mIRC *très longtemps*, et pas de résultat OK
- ; Si vous arrivez à le faire marcher, n'hésitez pas à me dire, j'ai la flemme de regarder !
-
- Alias lya {
- window -aCpd @Lya -1 -1 $1 $$2
- clear -@ @Lya
- var %ix 1,%iy 1,%r
- while (%ix <= $1) {
- Lya2 %ix $2
- inc %ix
- }
- }
- Alias -l lya2 { var %iy 1 | while (%iy <= $$2) { drawdot -r @Lya $lya3($1,%iy,400) 1 $calc(200 - $1) $calc(200 - %iy) | inc %iy } }
- Alias -l lya3 {
- var %k1 $calc(3 + $1 / 200),%k2 $calc(3 + $2 / 200),%n $$3,%i 1,%r 0 , %x 0.5,%m
- while %i <= %n {
- %m = $mid(1122,$calc($calc(%i % 4) + 1),1)
- %k = $eval($+(%,k,%m),2)
- %x = $lyautil(%x,%k)
- %r = $calc(%r + $log($abs(%k * (1 - 2 * %x))) / $log(2))
- inc %i
- }
- %r = $calc(%r / %n * 100)
- %r = $calc((%r - 158) * 20)
- ;echo -a R %r
- ;if (%r <= %min) { set %min %r }
- ; if (%r >= %max) { set %max %r }
- return $rgb(%R,%R,%R)
- }
- Alias -l lyautil { return $calc($2 * $1 * (1 - $1) ) }
Alias fractal {
e 0 1
e 5 0 Ces aliases montrent des exemples de construction de fractales en picwins
e 5 0 Pada - pada.irc@gmail.com - 2008
e 5 3 * /vonkoch : Flocon de Von Koch. Plus d'infos : http://fr.wikipedia.org/wiki/Flocon_de_Koch
e 5 3 * /fougere [nombre_d_iterations] : Fougère de Barnsley. Plus d'infos :
e 5 3 * /sierp [nombre_d_iterations] : Triangle de Sierpinski. Plus d'infos : http://fr.wikipedia.org/wiki/Triangle_de_Sierpinski
e 5 3 * /ifs [motif] [nombre_d_iterations] : Iterated Function System, généralisation des deux exemples précédents. Plus d'infos : http://en.wikipedia.org/wiki/Iterated_function_system
e 5 7 Motifs acceptés: spirale fougere dragon sierpinski arbre. Par défaut: dragon
e 5 7 Attention: l'utilisation de cette fonction nécessite d'avoir le fichier "fract.ini" au même niveau que le remote !
e 0 1
}
Alias -l e echo $$1 -a $str($chr(160),$$2) $3-
;#############
Alias vonkoch {
if $hget(Fractal) { hfree fractal }
hmake fractal 100
hadd fractal itr 0
hadd fractal 0 100 400
hadd fractal 1 500 400
hadd fractal 2 300 $calc(400 - $sqrt(3) * 200)
hadd fractal 3 100 400
window -aCpd @VonKoch -1 -1 600 600
vonkoch2
}
Alias -l vonkoch2 {
clear @VonKoch
drawfill -c @VonKoch 1 1 1 1
if ($hget(fractal,itr) >= 6) { vonkoch | halt }
hinc fractal itr
;#"espacement" de chaque ancien point
var %i $calc(3 * 4 ^ $hget(fractal,itr))
while (%i >= 0) {
hadd fractal $calc(%i) $hget(fractal,$calc(%i / 4))
dec %i 4
}
;#calcul des nouveaux points
%i = 0
while (%i < $calc(3 * 4 ^ $hget(fractal,itr))) {
tokenize 32 $hget(fractal,%i) $hget(fractal,$calc(%i + 4))
var %dx $calc($3 - $1) , %dy $calc($4 - $2)
hadd fractal $calc(%i + 1) $calc($1 + %dx * 1 / 3) $calc($2 + %dy * 1 / 3)
hadd fractal $calc(%i + 3) $calc($1 + %dx * 2 / 3) $calc($2 + %dy * 2 / 3)
tokenize 32 $hget(fractal,$calc(%i + 1)) $hget(fractal,$calc(%i + 3))
tokenize 32 $calc(($3 - $1) / 2) $calc(($4 - $2) / 2)
hadd fractal $calc(%i + 2) $calc($gettok($hget(fractal,$calc(%i + 1)),1,32) + $1 - $2 * $sqrt(3)) $calc($gettok($hget(fractal,$calc(%i + 1)),2,32) + $2 + $1 * $sqrt(3))
var %imax = $calc(%i + 4)
while (%i < %imax) {
tokenize 32 $hget(fractal,%i) $hget(fractal,$calc(%i + 1))
drawline @VonKoch 7 2 $1 $2 $3 $4
inc %i
}
}
drawtext -bp @VonKoch 15 1 Tahoma 12 420 10 Itération $+ $iif($hget(fractal,itr) > 1,s) $+ : $hget(fractal,itr)
drawtext -bp @VonKoch 15 1 Tahoma 12 420 30 Points [3*4^N] : $calc($hget(fractal,0).item - 2)
drawtext -bp @VonKoch 15 1 Tahoma 12 10 10 Cliquez pour obtenir l'itération $iif($hget(fractal,itr) >= 6,0,$calc($hget(fractal,itr) + 1))
}
Menu @VonKoch {
sclick:vonkoch2
}
;#############
; Fougère de Barnsley
; Coordonnées tirées de http://www.futura-sciences.com/comprendre/d/dossier234-6.php
Alias fougere {
window -aCpd @Foug -1 -1 400 600
drawfill @Foug 1 1 1 1
var %n $iif($1,$1,15000),%k 1,%x 50,%y 0
while (%k <= %n) {
var %r = $rand(0,1000)
if (%r <= 10) { %x = 0 | %y = $calc(0.16 * %y) }
elseif (%r <= 860) { %x = $calc(0.85 * %x + 0.04 * %y) | %y = $calc(- 0.04 * %x + 0.85 * %y + 1.6) }
elseif (%r <= 930) { %x = $calc(0.2 * %x - 0.26 * %y) | %y = $calc(0.23 *%x + 0.22 * %y + 1.6) }
else { %x = $calc(- 0.15 * %x + 0.28 * %y) | %y = $calc(0.26 * %x + 0.24 * %y + 0.44) }
drawdot @Foug 3 1 $calc(200 - 60 * %x) $calc(600 - 60 * %y)
inc %k
}
}
;#############
; Triangle de Sierpinski
Alias sierp {
window -aCpd @Sierpinski -1 -1 450 390
drawfill @Sierpinski 1 1 1 1
var %n $iif($1,$1,15000),%k 1,%x 0,%y 0
while (%k <= %n) {
var %r = $rand(0,1000)
if (%r <= 333) { %x = $calc(0.5 * %x) | %y = $calc(0.5 * %y) }
elseif (%r <= 666) { %x = $calc(0.5 * %x + 1) | %y = $calc(0.5 * %y) }
else { %x = $calc(0.5 * %x + 0.5) | %y = $calc(0.5 * %y + 0.8660254) }
drawdot @Sierpinski 12 1 $calc(400 - 180 * %x) $calc(350 - 200 * %y)
inc %k
}
}
;#############
; Iterated Function System généralisées
Alias IFS {
if (!$exists($scriptdirfract.ini)) { echo -a Placez "fract.ini" au même niveau que le remote ! | halt }
var %b $ticks,%m = $iif($1,$1,dragon),%n = $iif($2,$2,$readini($scriptdirfract.ini,Main,N))
tokenize 32 $readini($scriptdirfract.ini,%m,z)
if (!%n) { echo -a Erreur: impossible de déterminer la précision : votre fichier fract.ini est il valide ? | halt }
var %k 1,%c $1,%x $2,%y $3,%x0 $4,%x1 $5,%y0 $6,%y1 $7,%r
if ($window(@IFS)) { close -@ @IFS }
window -aCpd @IFS -1 -1 $8 $9
drawfill @IFS 1 1 1 1
while (%k <= %n) {
%r = $rand(0,1000)
tokenize 32 $readini($scriptdirfract.ini,%m,1) $readini($scriptdirfract.ini,%m,2) $readini($scriptdirfract.ini,%m,3) $readini($scriptdirfract.ini,%m,4)
if (%r <= $7) { %x = $calc($1 * %x + $2 * %y + $5) | %y = $calc($3 * %x + $4 * %y + $6) }
elseif (%r <= $14) { %x = $calc($8 * %x + $9 * %y + $12) | %y = $calc($10 * %x + $11 * %y + $13) }
elseif (%r <= $21) { %x = $calc($15 * %x + $16 * %y + $19) | %y = $calc($17 * %x + $18 * %y + $20) }
elseif (%r <= $28) { %x = $calc($22 * %x + $23 * %y + $26) | %y = $calc($24 * %x + $25 * %y + $27) }
drawdot @IFS %c 1 $calc(%x0 - %x1 * %x) $calc(%y0 - %y1 * %y)
inc %k
}
; echo -ta > $calc(1000 * ($ticks - %b)) s
}
Menu @IFS {
;sclick:echo -s > $mouse.x $mouse.y
Spirale:IFS spirale $readini($scriptdirfract.ini,Main,N)
Fougere:IFS fougere $readini($scriptdirfract.ini,Main,N)
Dragon:IFS dragon $readini($scriptdirfract.ini,Main,N)
Sierpenski:IFS sierpinski $readini($scriptdirfract.ini,Main,N)
Arbre:IFS arbre $readini($scriptdirfract.ini,Main,N)
-
Changer la précision:writeini $scriptdirfract.ini Main N $$?="Points ? (défaut 4000)"
}
;#############
; Exposant de Lyapounov
; ATTENTION: NE FONCTIONNE PAS
; Les valeurs à donner sont du genre 50 50 (taille de fenêtre désirée), mais ça fait freezer mIRC *très longtemps*, et pas de résultat OK
; Si vous arrivez à le faire marcher, n'hésitez pas à me dire, j'ai la flemme de regarder !
Alias lya {
window -aCpd @Lya -1 -1 $1 $$2
clear -@ @Lya
var %ix 1,%iy 1,%r
while (%ix <= $1) {
Lya2 %ix $2
inc %ix
}
}
Alias -l lya2 { var %iy 1 | while (%iy <= $$2) { drawdot -r @Lya $lya3($1,%iy,400) 1 $calc(200 - $1) $calc(200 - %iy) | inc %iy } }
Alias -l lya3 {
var %k1 $calc(3 + $1 / 200),%k2 $calc(3 + $2 / 200),%n $$3,%i 1,%r 0 , %x 0.5,%m
while %i <= %n {
%m = $mid(1122,$calc($calc(%i % 4) + 1),1)
%k = $eval($+(%,k,%m),2)
%x = $lyautil(%x,%k)
%r = $calc(%r + $log($abs(%k * (1 - 2 * %x))) / $log(2))
inc %i
}
%r = $calc(%r / %n * 100)
%r = $calc((%r - 158) * 20)
;echo -a R %r
;if (%r <= %min) { set %min %r }
; if (%r >= %max) { set %max %r }
return $rgb(%R,%R,%R)
}
Alias -l lyautil { return $calc($2 * $1 * (1 - $1) ) }
Conclusion
/fractal pour l'aide.
Attention:
- l'alias "/ifs" nécessite le fichier fract.ini pour fonctionner, donc pour l'utiliser vous devrez télécharger le .zip. La source se suffit à elle même pour les autres cas...
- l'alias /lya ne fonctionne pas, mais il y a de l'idée (enfin je suppose, ça remonte loin), donc pour les plus acharnés..
- testé sur mIRC 6.16 et 6.31, pas de garantie sur les vieilles versions..
Historique
- 24 mars 2008 10:06:55 :
- typo errors
- 24 mars 2008 14:11:05 :
- Corrections suite aux commentaires :
- fractal.ini -> fract.ini
- les options des commandes /window sont réduites pour fonctionner sur les versions récentes.
Sources du même auteur
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Combo picwin ? [ par Lestat_2070 ]
Bonjour à tous, Voilà j'ai enfin décidé de me lancer dans les picwins , j'ai d'ailleurs lut attentivement les deux tutos de Kinder
|
Derniers Blogs
MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|