Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ANIMATION ÉTOILE


Information sur la source

Catégorie :Divers Classé sous : animation, picwin, galaxie, étoile, window Niveau : Débutant Date de création : 20/08/2006 Date de mise à jour : 29/09/2007 00:56:02 Vu : 7 500

Note :
7,33 / 10 - par 3 personnes
7,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voilà une simple petite animation que j'ai fait dans un temp libre et aussi parce que j'était (très) en manque d'inspiration ^^"
 

Source

  • alias stars {
  • if ($hget(stars)) hfree stars
  • hadd -m stars s 0
  • window -Cdp +l @stars 0 0 500 500
  • drawfill @stars 1 1 0 0
  • .timersnews -m 0 $r(150,300) new_star
  • }
  • alias -l new_star {
  • var %j 250
  • while (250 isin %j) var %j $+($r(200,300),:,$r(200,300))
  • hadd stars $+(d.,$hget(stars,s)) %j
  • hadd stars $+(p.,$hget(stars,s)) $hget(stars,$+(d.,$hget(stars,s)))
  • hadd stars $+(c.,$hget(stars,s)) 100
  • hadd stars $+(g.,$hget(stars,s)) 2
  • var %b $gettok($hget(stars,$+(d.,$hget(stars,s))),1,58), %c $gettok($hget(stars,$+(d.,$hget(stars,s))),2,58)
  • hadd stars $+(a.,$hget(stars,s)) $+($c($c(%b -225) *10),:,$c($c(%c -225) *10))
  • drawrect -f @stars 0 1 %b %c 2 2
  • .timerstar. $+ $hget(stars,s) -m 0 1 move_star $hget(stars,s)
  • hinc stars s
  • }
  • alias -l move_star {
  • if $over_star($1) == over { .timerstar. $+ $1 off | hdel -w stars $1 }
  • else {
  • hinc stars $+(c.,$1) | hadd stars $+(g.,$1) $int($c($hget(stars,$+(c.,$1)) /50))
  • var %a $c($gettok($hget(stars,$+(a.,$1)),1,58) - $gettok($hget(stars,$+(d.,$1)),1,58)), %b $c($gettok($hget(stars,$+(a.,$1)),2,58) - $gettok($hget(stars,$+(d.,$1)),2,58))
  • var %c $gettok($hget(stars,$+(p.,$1)),1,58), %d $gettok($hget(stars,$+(p.,$1)),2,58)
  • drawrect -f @stars 1 1 %c %d $hget(stars,$+(g.,$1)) $hget(stars,$+(g.,$1))
  • hadd stars $+(p.,$1) $+($c(%c + $iif(%a < 0,-) $abs($c(%a / %b))),:,$c(%d + $iif(%b < 0,-) $abs($c(%b / %a))))
  • drawrect -f @stars 0 1 $gettok($hget(stars,$+(p.,$1)),1,58) $gettok($hget(stars,$+(p.,$1)),2,58) $hget(stars,$+(g.,$1)) $hget(stars,$+(g.,$1))
  • }
  • }
  • alias -l over_star {
  • tokenize 58 $hget(stars,$+(p.,$1))
  • var %a $1, %b $2
  • if (!$inrect(%a,%b,-10,-10,500,490)) return over
  • }
  • alias -l c return $calc($1-)
  • on *:close:@stars:.timers* off | hfree stars
alias stars {
  if ($hget(stars)) hfree stars
  hadd -m stars s 0
  window -Cdp +l @stars 0 0 500 500
  drawfill @stars 1 1 0 0
  .timersnews -m 0 $r(150,300) new_star
}

alias -l new_star {
  var %j 250
  while (250 isin %j) var %j $+($r(200,300),:,$r(200,300))
  hadd stars $+(d.,$hget(stars,s)) %j
  hadd stars $+(p.,$hget(stars,s)) $hget(stars,$+(d.,$hget(stars,s)))
  hadd stars $+(c.,$hget(stars,s)) 100
  hadd stars $+(g.,$hget(stars,s)) 2
  var %b $gettok($hget(stars,$+(d.,$hget(stars,s))),1,58), %c $gettok($hget(stars,$+(d.,$hget(stars,s))),2,58)
  hadd stars $+(a.,$hget(stars,s)) $+($c($c(%b -225) *10),:,$c($c(%c -225) *10))
  drawrect -f @stars 0 1 %b %c 2 2
  .timerstar. $+ $hget(stars,s) -m 0 1 move_star $hget(stars,s)
  hinc stars s
}

alias -l move_star {
  if $over_star($1) == over { .timerstar. $+ $1 off | hdel -w stars $1 }
  else {
    hinc stars $+(c.,$1) | hadd stars $+(g.,$1) $int($c($hget(stars,$+(c.,$1)) /50))
    var %a $c($gettok($hget(stars,$+(a.,$1)),1,58) - $gettok($hget(stars,$+(d.,$1)),1,58)), %b $c($gettok($hget(stars,$+(a.,$1)),2,58) - $gettok($hget(stars,$+(d.,$1)),2,58))
    var %c $gettok($hget(stars,$+(p.,$1)),1,58), %d $gettok($hget(stars,$+(p.,$1)),2,58)
    drawrect -f @stars 1 1 %c %d $hget(stars,$+(g.,$1)) $hget(stars,$+(g.,$1))
    hadd stars $+(p.,$1) $+($c(%c + $iif(%a < 0,-) $abs($c(%a / %b))),:,$c(%d + $iif(%b < 0,-) $abs($c(%b / %a))))
    drawrect -f @stars 0 1 $gettok($hget(stars,$+(p.,$1)),1,58) $gettok($hget(stars,$+(p.,$1)),2,58) $hget(stars,$+(g.,$1)) $hget(stars,$+(g.,$1))
  }
}

alias -l over_star {
  tokenize 58 $hget(stars,$+(p.,$1))
  var %a $1, %b $2
  if (!$inrect(%a,%b,-10,-10,500,490)) return over
}

alias -l c return $calc($1-)

on *:close:@stars:.timers* off | hfree stars

Conclusion

Pour ouvrir l'anim tapper /stars

Enjoy :o)
 

Historique

20 août 2006 23:33:29 :
La durée entre les apparitions des étoiles est désormais aléatoire
16 février 2007 18:56:45 :
Mise à jour
16 février 2007 18:57:55 :
Mise à jour
29 septembre 2007 00:56:02 :
Mise à jour

Commentaires et avis

signaler à un administrateur
Commentaire de RCA ArKanis le 20/08/2006 23:00:10

on appelle ça une démo, à ce que j'ai cru comprendre
si tu veux vraiment gagner des kb, il faut que tu raccourcices le nom de tes aliases, variables, ...
ça rend le code indigeste, mais si tel est ton but ...

pas mal de démos utilisent des aliases du style ., œ, &#354;, &#359;, &#508;, &#506;, &#509;, ...

tu peux aussi utiliser cette méthode :
%h = hadd starz, %c = $hget(starz,s)
%h $+(p.,%c) $hget(starz,$+(d.,%c))
%h $+(c.,%c) 100
%h $+(g.,%c) 2

les aliases -l deviennent des alias -l
aucun saut de ligne

en gros, faut vraiment faire le gros radin côté caractères, c'est pas génial :)

C'est une bonne chose que tu aies mis ce code comme ça ici, sans avoir utilisé toutes les méthodes citées, on comprend beaucoup mieux la chose :)

par ex, if %a < -10 || %a > 500 || %b < -10 || %b > 480 { return over }
devient : if (%a < -10 || %a > 500 || %b < -10 || %b > 480) return over
tu y gagnes deux caractères

"else goto re;new_star"
devient "else goto r"

Ca fait un petit effet sympa, quoi que j'trouve l'ajout d'une étoile trop régulier (le timer -m 150 devrait être aléatoire)

signaler à un administrateur
Commentaire de Panthouffle le 20/08/2006 23:39:07

Mon idée de départ était de faire une démo, mais ça c'est rapidement transformé en cauchemar donc j'ai laisser tomber l'idée du 512b tout en poursuivant mon code :) Sinon merci pour le commentaire (j'ai mit la durée entre les apparitions des étoiles aléatoire (entre 150 et 300 millisecondes))

Tient pour ceux que ça intérèsse, en fesant ce code je voulais obtenir comme effet d'être dans un vaisseau spatial et de voir les étoiles défilées de plus en plus proches de nous pour ensuite passé derrière nous donc sortir de notre champ de vision

signaler à un administrateur
Commentaire de RCA ArKanis le 20/08/2006 23:45:46

c'est également un screensaver (économiseur d'écran) de windows (une vieille version)

.timerëä -m 0 $r(150,300) new_star
ce que je voulais d'aléatoire, c'est la durée entre deux apparitions d'étoiles, et non une durée différente en ouvrant à nouveau la picwin
il faudrait que ce timer en appelle un autre (ou que l'alias qu'il appelle le relance) :)

signaler à un administrateur
Commentaire de Panthouffle le 21/08/2006 00:12:50

"ce que je voulais d'aléatoire, c'est la durée entre deux apparitions d'étoiles, et non une durée différente en ouvrant à nouveau la picwin"

Bah le timer ëä sert justement a déterminer "à tous les X secondes" il y'a une nouvelle étoile qui apparait, donc en changeant la durée du timer ça change également la durée avant que la prochaine étoile apparaisse

signaler à un administrateur
Commentaire de RCA ArKanis le 21/08/2006 00:46:49

mais pour modifier cette valeur il faut relancer la fenêtre
or ce que je conseille, c'est de placer une nouvelle étoire après un durée aléatoire, càd ceci :
.timerëä -m 0 130 .timer -m 1 $!r(0,100) new_star

J'viens de remarquer un problème.
Plus il y a d'étoiles, plus ça rame, or plus ça rame, moins elles s'en vont vite.
En gros, au bout d'un moment, c'est invivable :)
Deux solutions au moins : tu calcules le FTP et tu fais en fonction
2e (la plus simple mais pas la meilleure) : tu limites le nombre d'étoiles

ça aurait été sympa qu'elles bougent toutes en même temps, la gestion du FPS aurait permis ceci

signaler à un administrateur
Commentaire de S333 le 21/08/2006 11:45:39

simple idée...
drawdot ça aurait pas été mieu pour les étoiles ?

Voilà, c'est tout xD je pense que arkanis décortiquera le code très bien xD donc pas besoin de mettre mon grain de sel.

signaler à un administrateur
Commentaire de Trollz le 24/08/2006 23:26:21

mais pour modifier cette valeur il faut relancer la fenêtre
or ce que je conseille, c'est de placer une nouvelle étoire après un durée aléatoire, càd ceci :
.timerëä -m 0 130 .timer -m 1 $!r(0,100) new_star

J'viens de remarquer un problème.
Plus il y a d'étoiles, plus ça rame, or plus ça rame, moins elles s'en vont vite.
En gros, au bout d'un moment, c'est invivable :)
Deux solutions au moins : tu calcules le FTP et tu fais en fonction
2e (la plus simple mais pas la meilleure) : tu limites le nombre d'étoiles

ça aurait été sympa qu'elles bougent toutes en même temps, la gestion du FPS aurait permis ceci

signaler à un administrateur
Commentaire de RCA ArKanis le 24/08/2006 23:45:37

C'est bien, tu sais copier/coller :)
C'est quoi la prochaine étape ? :p
J'espère que tu nous en voudras pas si un admin efface ce message (ainsi que celui-ci) :)

signaler à un administrateur
Commentaire de MJ92 le 04/09/2006 23:02:35

C'est très joli et bien fait Panthoufle, mais au bout d'un moment ca me fait ramer à mort (répondant du script est très lent).
Je pense qu'il faudrait le mettre a jour pour les personnes ne sachant pas comment modifier les arrivées des étoiles par la suite. J'aime bien ta source en tout cas.
Euh et c'est Arkanis qui s'y connait sur un truc que je ne comprends pas : "Deux solutions au moins : tu calcules le FTP et tu fais en fonction" mais limiter les étoiles ne serait pas une mauvaise idée non plus...

Je vois qu'il y en a qui apprenne a jouer avec leur combinaison de touches :x. C'est bien, la prochaine fois merci d'appuyer sur Reset...

signaler à un administrateur
Commentaire de kceT le 23/10/2006 16:44:07

Lol je trouve ça bien joli mais ca sert a quoi ? :P

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Picwin dans une window [ par Panthouffle ] Bonjour à tous, je cherches un moyen pour coller une picture window sur la toolbar de mIRC, j'aimerais qu'il n'y ai aucune trace de cette window sauf Ligne de commandes dans une window [ par Panthouffle ] J'aimerais savoir si il est possible de récupéré le contenu de la ligne de commandes (editbar) dans une window lorsqu'on appuie sur "entrer", ça fait Dline [ par MJ92 ] Salut, je reviens pour un problème avec Dline... On *:join:#Opers:{ If ($nick == $nick) { If !$window(@Ircops) { window -ek0l10 @Ircops } Drawrect -d [ par wims ] Hier j'ai découvert un bug avec /drawrect -d, il s'agit de donné une profondeur différente de 1 pixel et des lignes apparaissent depuis les coins form Picwin [ par atlantisfr ] Comment peut-on créer une liste avec une vsbar en picwin ? Problème de lag en mIRC [ par Lorya51100 ] Bonjour à tous :)Voici mon second post dans ce fofo car j'ai un nouveau soucis : le lag !En fait, je réalise un bot d'animation en mIRC, donc, quand j ACCESS ANIMATION BOUTON [ par BOOK ] BONJOURJ AIMERAI AVOIR DES MODELES POUR ANIMATION BOUTON DANS ACCESSMERCI DE VOTRE AIDECOCO changer la taille de la fenêtre [ par Camanche ] Bonjour, quand on crée une fenêtre, on fait window -k(0) @fenêtre mais c'est une fenêtre standard, comment fait-on pour modifier la taille de cette f Copier pv sur un chan [ par pepinojohnny ] bonjour,donc j'ai un serveur irc, j'ai un bot d'animation doncsi mon bot d'animation a un pv je voudrais que le pv soit automatiquement copier sur un Ouvrir une fenetre internet en @Window [ par GuitarParty32 ] Bonjour à tous et à toutes, je ne sais pas si je postes dans la bonne catégories, première fois que j'utilises ce forum, je penses que le titre de mon


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.