Board logo

标题: [原创代码] Perl动画----实现文字从上到下、从左到右的逐字显示 [打印本页]

作者: sxw    时间: 2012-5-1 00:34     标题: Perl动画----实现文字从上到下、从左到右的逐字显示

翻译了几个模块,顺便实现了原来想用批处理实现的效果,实现文字从上到下、从左到右的逐字显示:(在我的机器上测试效果可以,xp sp2,Perl 5.14.2)
  1. #!/usr/bin/perl
  2. use Win32::Console;
  3. use Win32::GuiTest qw(:ALL);
  4. use Encode;
  5. my $Out = new Win32::Console(STD_OUTPUT_HANDLE) || die;
  6. while (<DATA>) {
  7.   s/ / /g;
  8.   chomp;
  9.   $a=decode('gb2312',$_);
  10.   @words=$a=~m/(.)/g;
  11.   foreach $word (@words) {
  12.          $Out->Write(encode('gb2312',$word));
  13.          SendKeys("{DOWN}");
  14.          my ( $x, $y ) = $Out->Cursor();
  15.          $Out->Cursor( $x-2, $y+1 );
  16.          select(undef,undef,undef,0.025);
  17.          }
  18. my ( $x, $y ) = $Out->Cursor();
  19. $Out->Cursor( $x+2, $y-@words,0,0 );
  20. }
  21. <>;
  22. __DATA__
  23.      莫失莫忘
  24. 晚风拂帷裳,孑影无灯伴。
  25. 相离莫相忘,天涯两相望。
  26. 月如霜,并泪沾裳,浸湿单罗杉。
  27. 铃儿轻轻荡,声声入愁肠。
  28. 遥寄相思,远眺旧乡,伊人何方。
  29. 静夜阑,寥落微星挂天上。
  30. 不思量,自难忘,浊酒一杯慰情殇。
  31. 凭栏空对愁,岁月尽成憾。
  32. 寒鸦秋雁携凄凉。
  33. 危坐思君为哪般。
  34. 秋水望穿,临风轻叹。
  35. 燕子不归,徒留情长。
  36. 历遍巫山沧海,看尽洞庭云雨。
  37. 枫落时,姻缘散。
  38. 梦回几转泪轻淌。
复制代码

作者: sxw    时间: 2012-5-2 15:11

本帖最后由 sxw 于 2012-5-2 15:23 编辑

用屏幕录制专家录制了一个,压缩后也不大:
http://115.com/file/angqpkhl
作者: sxw    时间: 2012-5-4 09:55

本帖最后由 sxw 于 2012-5-4 09:56 编辑

另存为xysh.bat
  1. @rem = '
  2. @echo off
  3. color d
  4. mode con cols=125 lines=25
  5. echo.&echo.&echo.&echo.
  6. c:\perl.exe -S xysh.bat
  7. ::路径自己修改,文件名自己修改
  8. ping 127.0.0.1 >nul
  9. goto end_perl
  10. : end_perl
  11. exit
  12. @rem ';
  13. #!/usr/bin/perl
  14. use Win32::Console;
  15. use Win32::GuiTest qw(:ALL);
  16. use Encode;
  17. my $Out = new Win32::Console(STD_OUTPUT_HANDLE) || die;
  18. my ( $x, $y ) = $Out->Cursor();
  19. $Out->Cursor( $x, $y,0,0 );
  20. while (<DATA>) {
  21.   s/ / /g;
  22.   chomp;
  23.   $a=decode('gb2312',$_);
  24.   @words=$a=~m/(.)/g;
  25.   foreach $word (@words) {
  26.          $Out->Write(encode('gb2312',$word));
  27.          SendKeys("{DOWN}");  #这个其实可以不要(那就不用安装Win32::GuiTest模块了),但要用用my ( $x, $y ) = $Out->Cursor();$Out->Cursor( $x, $y+1,0,0 );来代替模拟下方向键
  28.          my ( $x, $y ) = $Out->Cursor();
  29.          $Out->Cursor( $x-2, $y+1 );
  30.          select(undef,undef,undef,0.075);
  31.          }
  32. my ( $x, $y ) = $Out->Cursor();
  33. $Out->Cursor( $x+2, $y-@words,0,0 );
  34. }
  35. <>;
  36. __DATA__
  37.  
  38.  
  39.     星月神话
  40.  
  41.  
  42.  
  43.  
  44. 我的一生最美好的场景
  45.  
  46. 就是遇见你
  47.  
  48. 在人海茫茫中静静凝望着你
  49.  
  50. 陌生又熟悉
  51.  
  52. 尽管呼吸着同一天空的气息
  53.  
  54. 却无法拥抱到你
  55.  
  56. 如果转换了时空身份和姓名
  57.    
  58. 但愿认得你眼睛
  59.  
  60. 千年之后的你会在哪里
  61.  
  62. 身边有怎样风景
  63.  
  64. 我们的故事并不算美丽
  65.  
  66. 却如此难以忘记
  67.  
  68. 尽管呼吸着同一天空的气息
  69.  
  70. 却无法拥抱到你
  71.  
  72. 如果转换了时空身份和姓名
  73.  
  74. 但愿认得你眼睛
  75.  
  76. 千年之后的你会在哪里
  77.  
  78. 身边有怎样风景
  79.  
  80. 我们的故事并不算美丽
  81.  
  82. 却如此难以忘记
  83.  
  84. 如果当初勇敢的在一起
  85.  
  86. 会不会不同结局
  87.  
  88. 你会不会也有千言万语
  89.  
  90. 埋在沉默的梦里
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2