找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: zzz19760225

批处理勇士大闯关改中医许阳批处理的可能

[复制链接]
 楼主| 发表于 2026-1-26 22:24:43 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-2-26 10:27 编辑

输入1位自动执行跳转
1跳转选择if.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. END { system('stty sane'); }  # 确保程序退出时终端恢复正常

  5. a0:
  6.     print ":";
  7.     system('stty raw -echo');   # 设置终端为 raw 模式(无缓冲、无回显)
  8.     my $a = getc(STDIN);
  9.     system('stty sane');    # 立即恢复终端(即使出错也要恢复!)
  10.     exit unless defined $a;
  11.     eval{ # eval用于没有对应跳转标签时,出错自动退出的问题。这样没有对应标签,也不会直接就退出程序。
  12.     # 使用字符串比较(eq),不是数值比较(==)
  13.          if ($a eq '1') { print "选择1\n"; }
  14.          if ($a eq 'a') { print "选择a\n"; }
  15.          if ($a eq '3') { print "选择3\n"; }
  16.          if ($a eq '4') { goto a4; }
  17.          if ($a eq '5') { goto a5; }
  18.     }; #注意后面的分号别忘了,没有分号就出错。
  19.     goto a0;
复制代码
输出结果

  1. ::选择1
  2. :选择a
  3. :选择3
  4. ::::::选择a
  5. :选择1
  6. :选择3
  7. :
复制代码
两个问题,一个是直接关闭窗口x的程序接不上,另一个单字符输入的串联实现可能。
 楼主| 发表于 2026-1-27 21:37:54 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-1-27 21:52 编辑

2位数的输入,立刻自动执行。
1跳转选择if3.pl

  1. #!/usr/bin/perl
  2. use strict;        # 启用严格模式,强制声明变量等,避免低级错误
  3. use warnings;      # 启用警告,帮助发现潜在问题

  4. # 程序退出时自动恢复终端设置(防止 raw 模式残留导致终端异常)
  5. END { system('stty sane'); }

  6. # 主循环标签:程序从这里不断重复读取用户输入
  7. a0:
  8.     print ":";     # 打印提示符,表示等待用户输入

  9.     # 调用 a1() 子程序,读取第一个按键字符(不回显、无需回车)
  10.     my $c1 = a1();
  11.     exit unless defined $c1;   # 如果读取失败(如 Ctrl+D),则退出程序

  12.     # 判断第一个字符是否为数字字符 '0' 到 '9'
  13.     if ( $c1 ge '0' &&  $c1 le '9') {
  14.         # 读取第二个按键字符
  15.         my $c2 = a1();

  16.         # 检查第二个字符是否存在且也是数字
  17.         if (defined $c2 &&  $c2 ge '0' &&  $c2 le '9') {
  18.             # 将两个字符拼接成两位数的字符串(如 "1" + "1" → "11")
  19.             my $d = "$c1$c2";

  20.             # 注意:这里应使用字符串比较(eq),但原代码用了数值比较(==)
  21.             # 虽然 Perl 中 "11" == '11' 会返回真(因自动转换),但存在风险
  22.             # 建议改为 eq,但此处按你原结构保留(已可工作)

  23.             # 根据输入的两位数跳转到对应标签
  24.             if    ( $d == '11') { goto wqd; }   # 输入 11,跳转到飞镖处理
  25.             elsif ( $d == '22') { goto fzd; }   # 输入 22,跳转到风之刀处理
  26.             elsif ( $d == '33') { goto spd; }   # 输入 33,跳转到闪电披风处理
  27.             else {
  28.                 # 未定义的选项,提示未知并返回主循环
  29.                 print "未知选项: $d\n";
  30.                 goto a0;
  31.             }
  32.         } else {
  33.             # 第二个字符不是有效数字
  34.             print "第二位无效\n";
  35.             goto a0;
  36.         }
  37.     } else {
  38.         # 第一个字符不是数字
  39.         print "第一位必须是数字\n";
  40.         goto a0;
  41.     }

  42. # ========== 各功能标签(模拟批处理中的 goto 目标) ==========

  43. wqd:
  44.     print "执行:飞镖相关操作\n";   # 处理选项 11 的逻辑
  45.     goto a0;                      # 返回主循环,继续等待新输入

  46. fzd:
  47.     print "执行:风之刀相关操作\n"; # 处理选项 22 的逻辑
  48.     goto a0;

  49. spd:
  50.     print "执行:闪电披风相关操作\n"; # 处理选项 33 的逻辑
  51.     goto a0;

  52. # ========== 子程序定义 ==========

  53. # a1():以原始模式(raw)读取单个字符,不回显,无需按回车
  54. sub a1 {
  55.     system('stty raw -echo');   # 设置终端为 raw 模式,并关闭回显
  56.     my $b = getc(STDIN);        # 从标准输入读取一个字符
  57.     system('stty sane');        # 立即恢复终端正常模式(重要!)
  58.     return  $b;                  # 返回读取到的字符
  59. }
复制代码
输出结果

  1. :执行:飞镖相关操作
  2. :执行:风之刀相关操作
  3. :执行:闪电披风相关操作
  4. :未知选项: 44
  5. :未知选项: 55
  6. :第一位必须是数字
  7. :第一位必须是数字
  8. :第一位必须是数字
  9. :第一位必须是数字
  10. :执行:飞镖相关操作
  11. :执行:风之刀相关操作
  12. :执行:闪电披风相关操作
  13. :未知选项: 44
  14. :未知选项: 77
  15. :未知选项: 88
  16. :
复制代码
 楼主| 发表于 2026-1-28 21:04:14 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-1-29 10:34 编辑

直接执行和回车,两种模式切换。
1跳转选择if4.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. binmode(STDOUT, ":utf8");

  6. END { system('stty sane'); }

  7. # 预加载所有标签
  8. my $valid_labels = load_labels();
  9. my $mode = 'normal';

  10. print "普通模式启动\n";
  11. print "命令:";
  12. print "a:普通模式,";
  13. print "a1:单字符RAW,";
  14. print "a2:两位数RAW,";
  15. print "RAW模式下:";
  16. print "a返回普通模式";
  17. print "s切换RAW子模式 (a1 ↔ a2)\n\n";

  18. main_loop:
  19. while (1) {
  20.     if ( $mode eq 'raw1') {
  21.         print "[RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]: ";
  22.         system('stty raw -echo');
  23.         my $key = getc(STDIN);
  24.         system('stty sane');
  25.         exit unless defined  $key;

  26.         if ( $key eq 'a') {
  27.              $mode = 'normal';
  28.             print "\n\n切换到普通模式\n";
  29.             goto main_loop;
  30.         }
  31.         elsif ( $key eq 's') {
  32.              $mode = 'raw2';
  33.             print "\n\n切换到两位数 RAW 模式\n";
  34.             goto main_loop;
  35.         }
  36.         elsif ( $key =~ /^[1-9]$/) {
  37.             my $label = "b$key";
  38.             if (exists  $valid_labels->{ $label}) {
  39.                 goto  $label;
  40.             } else {
  41.                 print "\n标签 ' $label' 未定义\n";
  42.                 goto main_loop;
  43.             }
  44.         } else {
  45.             print "\n忽略: ' $key'\n";
  46.             goto main_loop;
  47.         }
  48.     }
  49.     elsif ( $mode eq 'raw2') {
  50.         print "[RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]: ";

  51.         # --- 读第一个字符 ---
  52.         system('stty raw -echo');
  53.         my $k1 = getc(STDIN);
  54.         system('stty sane');
  55.         exit unless defined  $k1;

  56.         if ( $k1 eq 'a') {
  57.              $mode = 'normal';
  58.             print "\n\n切换到普通模式";
  59.             goto main_loop;
  60.         }
  61.         elsif ( $k1 eq 's') {
  62.              $mode = 'raw1';
  63.             print "\n\n切换到单字符 RAW 模式";
  64.             goto main_loop;
  65.         }
  66.         elsif ( $k1 !~ /^[0-9]$/) {
  67.             print "\n第一个字符非数字,忽略\n";
  68.             goto main_loop;
  69.         }

  70.         # --- 读第二个字符 ---
  71.         print "(已输  $k1) 再按数字/s/a: ";
  72.         system('stty raw -echo');
  73.         my $k2 = getc(STDIN);
  74.         system('stty sane');
  75.         exit unless defined  $k2;

  76.         if ( $k2 eq 'a') {
  77.              $mode = 'normal';
  78.             print "\n切换到普通模式\n";
  79.             goto main_loop;
  80.         }
  81.         elsif ( $k2 eq 's') {
  82.              $mode = 'raw1';
  83.             print "\n切换到单字符 RAW 模式\n";
  84.             goto main_loop;
  85.         }
  86.         elsif ( $k2 !~ /^[0-9]$/) {
  87.             print "\n第二个字符非数字,忽略\n";
  88.             goto main_loop;
  89.         }

  90.         my $num =  $k1.$k2;
  91.         my $label = "b$num";
  92.         if (exists  $valid_labels->{ $label}) {
  93.             goto  $label;
  94.         } else {
  95.             print "\n标签 ' $label' 未定义\n";
  96.             goto main_loop;
  97.         }
  98.     }
  99.     else {
  100.         # ========== 普通模式 ==========
  101.         print "普通模式: ";
  102.         my $input = <STDIN>;
  103.         last unless defined  $input;
  104.         chomp  $input;

  105.         if    ( $input eq 'a')  {  $mode = 'normal'; print "已在普通模式\n"; }
  106.         elsif ( $input eq 'a1') {  $mode = 'raw1';   print "\n进入单字符 RAW 模式\n"; }
  107.         elsif ( $input eq 'a2') {  $mode = 'raw2';   print "\n进入两位数 RAW 模式\n"; }
  108.         elsif ( $input eq 'quit' ||  $input eq 'exit') { last; }
  109.         elsif ( $input =~ /^b\d+$/ && exists  $valid_labels->{ $input}) {
  110.             goto  $input;
  111.         }
  112.         elsif ( $input =~ /^\d+$/) {
  113.             my $label = "b$input";
  114.             if (exists  $valid_labels->{ $label}) {
  115.                 goto  $label;
  116.             } else {
  117.                 print "标签 ' $label' 不存在\n";
  118.             }
  119.         }
  120.         else {
  121.             print "未知命令: ' $input'\n";
  122.         }
  123.         goto main_loop;
  124.     }
  125. }

  126. print "再见!\n";
  127. exit;

  128. # ========== 加载标签 ==========
  129. sub load_labels {
  130.     open my $fh, '<:encoding(UTF-8)', __FILE__ or die "无法读取自身:  $!";
  131.     my %labels;
  132.     while (my $line = <$fh>) {
  133.         chomp  $line;
  134.     if ( $line =~ /^\s*([\w\x{4e00}-\x{9fff}]+)\s*:/) {
  135.              $labels{ $1} = 1;
  136.         }
  137.     }
  138.     close $fh;
  139.     return \%labels;
  140. }

  141. # ========== 公共标签(可按需扩展)==========
  142. b0:;print "执行: 选择0\n";   goto main_loop;
  143. b1:;print "执行: 选择1\n";   goto main_loop;
  144. b2:;print "执行: 选择2\n";   goto main_loop;
  145. b3:;print "执行: 选择3\n";   goto main_loop;
  146. b4:;print "执行: 选择4\n";   goto main_loop;
  147. b5:;print "执行: 选择5\n";   goto main_loop;
  148. b6:;print "执行: 选择6\n";   goto main_loop;
  149. b7:;print "执行: 选择7\n";   goto main_loop;
  150. b8:;print "执行: 选择8\n";   goto main_loop;
  151. b9:;print "执行: 选择9\n";   goto main_loop;
  152. b10:;  print "执行: 选择10\n";  goto main_loop;
  153. b11:;  print "执行: 选择11\n";  goto main_loop;
  154. b45:;  print "执行: 选择45\n";  goto main_loop;
  155. b99:;  print "执行: 选择99\n";  goto main_loop;
  156. b00:;  print "执行: 选择00\n";  goto main_loop;
  157. b000:; print "执行: 选择000\n"; goto main_loop;
复制代码
输出结果

  1. 普通模式启动
  2. 命令:a:普通模式,a1:单字符RAW,a2:两位数RAW,RAW模式下:a返回普通模式s切换RAW子模式 (a1 &#8596; a2)

  3. 普通模式: 1
  4. 执行: 选择1
  5. 普通模式: 2
  6. 执行: 选择2
  7. 普通模式: a1

  8. 进入单字符 RAW 模式
  9. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]:

  10. 切换到两位数 RAW 模式
  11. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]:

  12. 切换到普通模式普通模式: 1
  13. 执行: 选择1
  14. 普通模式: 2
  15. 执行: 选择2
  16. 普通模式: a1

  17. 进入单字符 RAW 模式
  18. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]: 执行: 选择1
  19. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]: 执行: 选择2
  20. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]: 执行: 选择3
  21. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]:

  22. 切换到两位数 RAW 模式
  23. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]: (已输  1) 再按数字/s/a:
  24. 标签 ' b12' 未定义
  25. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]: (已输  1) 再按数字/s/a: 执行: 选择11
  26. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]: (已输  4) 再按数字/s/a: 执行: 选择45
  27. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]: (已输  9) 再按数字/s/a: 执行: 选择99
  28. [RAW2] 输入两位数字;s=切到RAW1, a=普通, s=切到RAW1, [RAW2]:

  29. 切换到普通模式普通模式: a1

  30. 进入单字符 RAW 模式
  31. [RAW1] 按数字执行;s=切到RAW2,a=普通, [RAW1]:
复制代码
 楼主| 发表于 2026-1-29 20:57:31 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-1-30 10:50 编辑

换成~-=切换普通raw12三模式
1跳转选择if6.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. use open ':std', ':encoding(utf8)';

  6. END { system('stty sane'); }

  7. my $valid_labels = load_labels();
  8. my $mode = 'normal';

  9. print "普通模式启动:\n";
  10. print "输入'-'单字符raw1,输入'='两位数raw2,其他输入将被回显(支持中英文、数字、符号)\n";

  11. main_loop:
  12. while (1) {
  13.     if ($mode eq 'raw1') {
  14.         print "[RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:";
  15.         system('stty raw -echo');
  16.         my $key = getc(STDIN);
  17.         system('stty sane');
  18.         exit unless defined $key;

  19.         if ($key eq '~') {
  20.             $mode = 'normal';
  21.             print "\n\n~回普通模式\n";
  22.             goto main_loop;
  23.         }
  24.         elsif ($key eq ' ') {
  25.             $mode = 'raw2';
  26.             print "\n\n空格换RAW2模式\n";
  27.             goto main_loop;
  28.         }
  29.         elsif ($key =~ /^[1-9]$/) {
  30.             my $label = "b$key";
  31.             if (exists $valid_labels->{$label}) {
  32.                 goto $label;
  33.             } else {
  34.                 print "\n标签'$label' 未定义\n";
  35.                 goto main_loop;
  36.             }
  37.         } else {
  38.             print "\n忽略:'$key'\n";
  39.             goto main_loop;
  40.         }
  41.     }
  42.     elsif ($mode eq 'raw2') {
  43.         print "[RAW2]输两数字,空格换raw1模式,~换普通模式,[RAW2]:";

  44.         # --- 第一个字符 ---
  45.         system('stty raw -echo');
  46.         my $k1 = getc(STDIN);
  47.         system('stty sane');
  48.         exit unless defined $k1;

  49.         if ($k1 eq '~') {
  50.             $mode = 'normal';
  51.             print "\n\n~返回普通模式\n";
  52.             goto main_loop;
  53.         }
  54.         elsif ($k1 eq ' ') {
  55.             $mode = 'raw1';
  56.             print "\n\n空格换RAW1模式\n";
  57.             goto main_loop;
  58.         }
  59.         elsif ($k1 !~ /^[0-9]$/) {
  60.             print "\n第一个字符非数字,忽略\n";
  61.             goto main_loop;
  62.         }

  63.         # --- 第二个字符 ---
  64.         print "\n(已输$k1)再按一数字/~/空格: ";
  65.         system('stty raw -echo');
  66.         my $k2 = getc(STDIN);
  67.         system('stty sane');
  68.         exit unless defined $k2;

  69.         if ($k2 eq '~') {
  70.             $mode = 'normal';
  71.             print "\n\n~返回普通模式\n";
  72.             goto main_loop;
  73.         }
  74.         elsif ($k2 eq ' ') {
  75.             $mode = 'raw1';
  76.             print "\n\n空格换RAW1模式\n";
  77.             goto main_loop;
  78.         }
  79.         elsif ($k2 !~ /^[0-9]$/) {
  80.             print "\n第二个字符非数字,忽略\n";
  81.             goto main_loop;
  82.         }

  83.         my $num = $k1 . $k2;
  84.         my $label = "b$num";
  85.         if (exists $valid_labels->{$label}) {
  86.             goto $label;
  87.         } else {
  88.             print "\n标签 '$label' 未定义\n";
  89.             goto main_loop;
  90.         }
  91.     }
  92.     else {
  93.         # ========== 普通模式 ==========
  94.         print "普通模式: ";
  95.         my $input = <STDIN>;
  96.         last unless defined  $input;
  97.         chomp  $input;

  98.         if    ( $input eq '~')  {  $mode = 'normal'; print "已在普通模式\n"; }
  99.         elsif ( $input eq '-') {  $mode = 'raw1';   print "\n-进RAW1模式\n"; }
  100.         elsif ( $input eq '=') {  $mode = 'raw2';   print "\n=进RAW2模式\n"; }
  101.         elsif ( $input eq 'quit' ||  $input eq 'exit') { last; }
  102.         elsif ( $input =~ /^b\d+$/ && exists  $valid_labels->{ $input}) {
  103.             goto  $input;
  104.         }
  105.         elsif ( $input =~ /^\d+$/) {
  106.             my $label = "b$input";
  107.             if (exists  $valid_labels->{ $label}) {
  108.                 goto  $label;
  109.             } else {
  110.                 print "标签 ' $label' 不存在\n";
  111.             }
  112.         }
  113.         else {
  114.             print "未知命令: ' $input'\n";
  115.         }
  116.         goto main_loop;
  117.     }
  118. }

  119. print "再见!\n";
  120. exit;

  121. # ========== 自动加载当前文件中的标签 ==========
  122. sub load_labels {
  123.     open my $fh, '<:encoding(UTF-8)', __FILE__ or die "打不开文件: $!";
  124.     my %labels;
  125.     while (my $line = <$fh>) {
  126.         chomp $line;
  127.         # 匹配行首的 "xxx:" 标签(允许后面有代码)
  128.         if ($line =~ /^\s*([\w\x{4e00}-\x{9fff}]+)\s*:/) {
  129.             $labels{$1} = 1;
  130.         }
  131.     }
  132.     close $fh;
  133.     return \%labels;
  134. }

  135. # ========== 公共执行标签 ==========
  136. b0:;   print "执行: 选择0\n";   goto main_loop;
  137. b1:;   print "执行: 选择1\n";   goto main_loop;
  138. b2:;   print "执行: 选择2\n";   goto main_loop;
  139. b3:;   print "执行: 选择3\n";   goto main_loop;
  140. b4:;   print "执行: 选择4\n";   goto main_loop;
  141. b5:;   print "执行: 选择5\n";   goto main_loop;
  142. b6:;   print "执行: 选择6\n";   goto main_loop;
  143. b7:;   print "执行: 选择7\n";   goto main_loop;
  144. b8:;   print "执行: 选择8\n";   goto main_loop;
  145. b9:;   print "执行: 选择9\n";   goto main_loop;
  146. b10:;  print "执行: 选择10\n";  goto main_loop;
  147. b11:;  print "执行: 选择11\n";  goto main_loop;
  148. b45:;  print "执行: 选择45\n";  goto main_loop;
  149. b99:;  print "执行: 选择99\n";  goto main_loop;
  150. b00:;  print "执行: 选择00\n";  goto main_loop;
  151. b000:; print "执行: 选择000\n"; goto main_loop;
  152. 中文:; print "执行: 选择中文了\n"; goto main_loop;
  153. ba:; print "执行: 选择了a\n"; goto main_loop;
复制代码
输出结果

  1. 普通模式启动:
  2. 输入'-'单字符raw1,输入'='两位数raw2,其他输入将被回显(支持中英文、数字、符号)
  3. 普通模式: 1
  4. 执行: 选择1
  5. 普通模式: ~
  6. 已在普通模式
  7. 普通模式: -

  8. -进RAW1模式
  9. [RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:

  10. ~回普通模式
  11. 普通模式: =

  12. =进RAW2模式
  13. [RAW2]输两数字,空格换raw1模式,~换普通模式,[RAW2]:

  14. ~返回普通模式
  15. 普通模式: -

  16. -进RAW1模式
  17. [RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:

  18. 空格换RAW2模式
  19. [RAW2]输两数字,空格换raw1模式,~换普通模式,[RAW2]:
  20. (已输1)再按一数字/~/空格: 执行: 选择11
  21. [RAW2]输两数字,空格换raw1模式,~换普通模式,[RAW2]:
  22. (已输9)再按一数字/~/空格: 执行: 选择99
  23. [RAW2]输两数字,空格换raw1模式,~换普通模式,[RAW2]:

  24. 空格换RAW1模式
  25. [RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:执行: 选择1
  26. [RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:执行: 选择2
  27. [RAW1]按一数字执行,空格换raw2模式,~换普通模式,[RAW1]:
复制代码
后面程序卡死了,不知道该做什么。应该是需要结构路线循环图,这些结构路线里的剧情,进菜菜城,出菜菜城,建增减删看账户群,重复循环。
游戏开始和结束,游戏的玩家账户和角色建增减删看,游戏结构本体,本体内外交流交换易的重复循环流水线,流水线上的地图世界容器。
 楼主| 发表于 2026-2-9 21:07:36 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-2-9 22:07 编辑

用普通输入模式,靠近回车键的几个左手按键,避开\键,几个组合,从01~20
eval,避免没有标签出错退出。
;=0
lop[]=12345
l]o]p][]]]=678910
l]]o]]p]][]]]]]=1112131415
l]]]o]]]p]]][]]]]]]=1617181920

  1. #!/usr/bin/perl
  2. use utf8;
  3. use strict;
  4. use warnings;
  5. use open ':std', ':encoding(utf8)';
  6. my $a;
  7. a0:
  8. eval{
  9. print "输入并回车:";$a=<STDIN>;chomp $a;

  10. if ($a eq ";"){goto a0;}
  11. if ($a eq "l"){goto a1;}
  12. if ($a eq "o"){goto a2;}
  13. if ($a eq "p"){goto a3;}
  14. if ($a eq "["){goto a4;}
  15. if ($a eq "]"){goto a5;}
  16. if ($a eq "l]"){goto a6;}
  17. if ($a eq "o]"){goto a7;}
  18. if ($a eq "p]"){goto a8;}
  19. if ($a eq "[]"){goto a9;}
  20. if ($a eq "]]"){goto a10;}

  21. if ($a eq "l]]"){goto a11;}
  22. if ($a eq "o]]"){goto a12;}
  23. if ($a eq "p]]"){goto a13;}
  24. if ($a eq "[]]"){goto a14;}
  25. if ($a eq "]]]"){goto a15;}
  26. if ($a eq "l]]]"){goto a16;}
  27. if ($a eq "o]]]"){goto a17;}
  28. if ($a eq "p]]]"){goto a18;}
  29. if ($a eq "[]]]"){goto a19;}
  30. if ($a eq "]]]]"){goto a20;}
  31. };

  32. goto a0;


  33. a7:
  34. system("clear");        # 同样清空历史(取决于终端)
  35. print "\033[H";   # 移动光标到顶部
  36. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  37. print "▓                                  武器店                                  ▓\n";
  38. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  39. print "昵称:%nc% 气血:%rhp%/%rhpsx% 法力:%rmp%/%rmpsx% 攻击:%rgj% 防御:%rfy%\n";
  40. print "等级:%lv% 经验:%exp%/%sjexp% 银两:%yl% 点数:%ds% 饱食度:%bsd%/%bsdsx%\n";
  41. print "武器:%wqmc% 攻击+%wqgj% 服装:%fzmc% 防御+%fzfy%\n";
  42. print "腰带:%ydmc% 气血上限+%ydqx% 饰品:%mzmc% 魔法上限+%mzmf%\n";
  43. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  44. print "╲ ╱\n";
  45. print "╔━━╗ ╲ ╱  ╔━━━━━━━━━━━━━━━━━━━━━━━━╗\n";
  46. print "┃小┃╔━━━━╗┃这里是武器店,武器店可以┃\n";
  47. print "┃机┃┃∩ ∩ ┃┃购买武器来提升攻击力,打┃\n";
  48. print "┃器┃┃ △  ┃┃怪可获得金钱!          ┃\n";
  49. print "┃人╠╣ ┌┐ ┃╚━━━━━━━━━━━━━━━━━━━━━━━━╝\n";
  50. print "╚━━╝╚━━━━╝\n";
  51. print "名称 属性 价格\n";
  52. print "1.红缨枪 攻击+10 100\n";
  53. print "2.曲尖枪 攻击+30 100\n";
  54. print "3.锯齿矛 攻击+60 200\n";
  55. print "4.乌金三叉戟 攻击+100 255\n";
  56. print "5.火焰枪 攻击+150 255\n";
  57. print "6.墨杆金钩 攻击+200 255\n";
  58. print "7.玄铁矛 攻击+250 255\n";
  59. print "8.金蛇信 攻击+310 1000\n";
  60. print "9.丈八点钢矛 攻击+380 1000\n";
  61. print "10.暗夜 攻击+450 10000\n";
  62. print "11.梨花 攻击+450 10000\n";
  63. print "12.霹雳 攻击+450 10000\n";
  64. print "0.返回\n";
  65. print "\n";
  66. print "请输入:";


  67. goto a0;

  68. a8:
  69. system("clear");        # 同样清空历史(取决于终端)
  70. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  71. print "▓                                  服装店                                  ▓\n";
  72. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  73. print "昵称:%nc% 气血:%rhp%/%rhpsx% 法力:%rmp%/%rmpsx% 攻击:%rgj% 防御:%rfy%\n";
  74. print "等级:%lv% 经验:%exp%/%sjexp% 银两:%yl% 点数:%ds% 饱食度:%bsd%/%bsdsx%\n";
  75. print "武器:%wqmc% 攻击+%wqgj% 服装:%fzmc% 防御+%fzfy%\n";
  76. print "腰带:%ydmc% 气血上限+%ydqx% 饰品:%mzmc% 魔法上限+%mzmf%\n";
  77. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  78. print "╲ ╱\n";
  79. print "╔━━╗ ╲ ╱  ╔━━━━━━━━━━━━━━━━━━━━━━━━╗\n";
  80. print "┃小┃╔━━━━╗┃这里是服装店,服装店能购┃\n";
  81. print "┃机┃┃∩ ∩ ┃┃买衣服,来提高防御力!  ┃\n";
  82. print "┃器┃┃ △  ┃┃                        ┃\n";
  83. print "┃人╠╣ ┌┐ ┃╚━━━━━━━━━━━━━━━━━━━━━━━━╝\n";
  84. print "╚━━╝╚━━━━╝\n";
  85. print "名称 属性 价格\n";
  86. print "1.布衣 防御+10 200\n";
  87. print "2.皮衣 防御+30 300\n";
  88. print "3.鳞甲 防御+60 500\n";
  89. print "4.梭子衣 防御+100 500\n";
  90. print "5.紧身衣 防御+150 500\n";
  91. print "6.钢甲 防御+200 600\n";
  92. print "7.夜魔披风 防御+250 600\n";
  93. print "8.龙骨甲 防御+310 1000\n";
  94. print "9.死亡斗篷 防御+380 10000\n";
  95. print "10.神谕披风 防御+450 25000\n";
  96. print "0.返回\n";
  97. print "\n";
  98. print "请输入:";

  99. goto a0;

  100. a9:
  101. system("clear");        # 同样清空历史(取决于终端)
  102. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  103. print "▓                                  饰品店                                  ▓\n";
  104. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  105. print "昵称:%nc% 气血:%rhp%/%rhpsx% 法力:%rmp%/%rmpsx% 攻击:%rgj% 防御:%rfy%\n";
  106. print "等级:%lv% 经验:%exp%/%sjexp% 银两:%yl% 点数:%ds% 饱食度:%bsd%/%bsdsx%\n";
  107. print "武器:%wqmc% 攻击+%wqgj% 服装:%fzmc% 防御+%fzfy%\n";
  108. print "腰带:%ydmc% 气血上限+%ydqx% 饰品:%mzmc% 魔法上限+%mzmf%\n";
  109. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  110. print "╲ ╱\n";
  111. print "╔━━╗ ╲ ╱  ╔━━━━━━━━━━━━━━━━━━━━━━━━╗\n";
  112. print "┃小┃╔━━━━╗┃这里是饰品店!在这里可以┃\n";
  113. print "┃机┃┃∩ ∩ ┃┃购买饰品提高魔法上限!  ┃\n";
  114. print "┃器┃┃ △  ┃┃                        ┃\n";
  115. print "┃人╠╣ ┌┐ ┃╚━━━━━━━━━━━━━━━━━━━━━━━━╝\n";
  116. print "╚━━╝╚━━━━╝\n";
  117. print "名称 属性 价格\n";
  118. print "1.迷你戒指 魔法上限+10 100\n";
  119. print "2.铜戒指 魔法上限+20 150\n";
  120. print "3.金戒指 魔法上限+60 200\n";
  121. print "4.魔法指环 魔法上限+120 300\n";
  122. print "5.魔晶指环 魔法上限+200 350\n";
  123. print "6.元素之环 魔法上限+300 400\n";
  124. print "7.暗魔指环 魔法上限+400 500\n";
  125. print "8.星河指环 魔法上限+500 1000\n";
  126. print "9.猎魔指环 魔法上限+620 1500\n";
  127. print "10.雷霆指环 魔法上限+760 5000\n";
  128. print "11.幻龙之心 魔法上限+900 7000\n";
  129. print "0.返回\n";
  130. print "\n";
  131. print "请输入:";


  132. goto a0;

  133. a10:
  134. system("clear");        # 同样清空历史(取决于终端)
  135. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  136. print "▓                                   药店                                   ▓\n";
  137. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  138. print "昵称:%nc% 气血:%rhp%/%rhpsx% 法力:%rmp%/%rmpsx% 攻击:%rgj% 防御:%rfy%\n";
  139. print "等级:%lv% 经验:%exp%/%sjexp% 银两:%yl% 点数:%ds% 饱食度:%bsd%/%bsdsx%\n";
  140. print "武器:%wqmc% 攻击+%wqgj% 服装:%fzmc% 防御+%fzfy%\n";
  141. print "腰带:%ydmc% 气血上限+%ydqx% 饰品:%mzmc% 魔法上限+%mzmf%\n";
  142. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  143. print "╲ ╱\n";
  144. print "╔━━╗ ╲ ╱  ╔━━━━━━━━━━━━━━━━━━━━━━━━╗\n";
  145. print "┃小┃╔━━━━╗┃这里是药店!这里购买的道┃\n";
  146. print "┃机┃┃∩ ∩ ┃┃具可在战斗使用!不过很贵┃\n";
  147. print "┃器┃┃ △  ┃┃......                  ┃\n";
  148. print "┃人╠╣ ┌┐ ┃╚━━━━━━━━━━━━━━━━━━━━━━━━╝\n";
  149. print "╚━━╝╚━━━━╝\n";
  150. print "\n";
  151. print "1.购买金疮药 恢复气血200点 价格:500 剩余数量:%jcy%\n";
  152. print "\n";
  153. print "2.购买仙狐延 恢复法力200点 价格:500 剩余数量:%xhy%\n";
  154. print "\n";
  155. print "       ╔\n";
  156. print "dragon.  购买龙魂丹    拥有龙的力量  价格:100000  拥有数量:%lhd%\n";
  157. print "                   ╝\n";
  158. print "\n";
  159. print "3.免费恢复气血,魔力(剩余次数:%mfhf%)\n";
  160. print "\n";
  161. print "4.返回\n";
  162. print "\n";
  163. print "请输入:";


  164. goto a0;

  165. a11:
  166. system("clear");        # 同样清空历史(取决于终端)
  167. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  168. print "▓                                   酒店                                   ▓\n";
  169. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  170. print "昵称:%nc% 气血:%rhp%/%rhpsx% 法力:%rmp%/%rmpsx% 攻击:%rgj% 防御:%rfy%\n";
  171. print "等级:%lv% 经验:%exp%/%sjexp% 银两:%yl% 点数:%ds% 饱食度:%bsd%/%bsdsx%\n";
  172. print "武器:%wqmc% 攻击+%wqgj% 服装:%fzmc% 防御+%fzfy%\n";
  173. print "腰带:%ydmc% 气血上限+%ydqx% 饰品:%mzmc% 魔法上限+%mzmf%\n";
  174. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  175. print "\n";
  176. print "1.吃包子 恢复气血100点 饱食度100点 价格:50\n";
  177. print "\n";
  178. print "2.住店(恢复气血,魔法,但需要耗费20秒时间) 价格:200\n";
  179. print "\n";
  180. print "3.返回\n";
  181. print "\n";
  182. print "请输入:";


  183. goto a0;

复制代码
 楼主| 发表于 2026-2-23 13:48:39 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-2-28 17:13 编辑

用户信息
用户信息变量1.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. binmode(STDOUT, ":utf8");
  6. binmode(STDIN, ":utf8");
  7. use Term::ANSIColor;

  8. my %hash;
  9. a00:
  10. %hash = (
  11.     nc      => '昵称1',
  12.     lv      => 1,           # 等级
  13.     ds      => 0,           # 充值点数
  14.     yl      => 0,           # 银两
  15.     suiyin  => 0,           # 碎银(不是整银,需要一个操作合成银两)
  16.     exp     => 0,           # 经验
  17.     sjexp   => 20,          # 最大升级经验值
  18.     sjexpdz => 10,          # 最大升级经验值
  19.     bsd     => 1000,        # 饱食度
  20.     bsdsx   => 1000,        # 最大饱食值
  21.     rgj     => 20,          # 攻击
  22.     rfy     => 10,          # 防御
  23.     rhp     => 30,          # 气血值
  24.     rhpsx   => 30,          # 最大气血值
  25.     rmp     => 30,          # 魔法值
  26.     rmpsx   => 30,          # 最大魔法值
  27.     wqmc    => '无',        # 武器
  28.     wqgj    => 0,           # 武器攻击
  29.     fzmc    => '无',        # 服装
  30.     fzfy    => 0,           # 服装防御
  31.     ydmc    => '无',        # 腰带
  32.     ydqx    => 0,           # 腰带加气血
  33.     mzmc    => '无',        # 戒指
  34.     mzmf    => 0,           # 戒指加魔法
  35.     xixue   => 0,           # 吸血
  36.     mfhf    => 3,           # 免费恢复气血和魔法的次数
  37.     hh      => 1,           # 回合
  38.     mb      => 0,           # 面包
  39.     bg      => 0,           # 饼干
  40.     jcy     => 0,           # 金创药
  41.     xhy     => 0,           # 仙狐延
  42.     lhd     => 0,           # 龙魂丹
  43.     jnl1    => '空卡槽',    # 技能1
  44.     jnl2    => '空卡槽',    # 技能2
  45.     jnl3    => '空卡槽',    # 技能3
  46.     qnfyj   => 0,           # 劝降翻译机

  47.     js      => 0,           # 击杀数
  48.     bosszgr => int(rand(10)) + 1, # 怪老大装备暴率 (1-10)
  49. );

  50. print "\n";
  51. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  52. print "▓";
  53. print color('black on_black'), "一二三四五六七八九十壹贰叁肆伍陆柒", color('reset');
  54. print "菜菜城";
  55. print color('black on_black'), "一二三四五六七八九十壹贰叁肆伍陆柒", color('reset');
  56. print "▓\n";
  57. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓00▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";
  58. print "昵称:$hash{nc}  气血:$hash{rhp}/$hash{rhpsx}  法力:$hash{rmp}/$hash{rmpsx}  攻击:$hash{rgj}  防御:$hash{rfy}\n";
  59. print "等级:$hash{lv}  经验:$hash{exp}/$hash{sjexp}  银两:$hash{yl}  点数:$hash{ds}  饱食度:$hash{bsd}/$hash{bsdsx}\n";
  60. print "武器:$hash{wqmc}  攻击+$hash{wqgj}  服装:$hash{fzmc}  防御+$hash{fzfy}\n";
  61. print "腰带:$hash{ydmc}  气血上限+$hash{ydqx}  饰品:$hash{mzmc}  魔法上限+$hash{mzmf}\n";
  62. print "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n";

  63. <>;
  64. goto a00;
复制代码
输出

  1. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  2. ▓一二三四五六七八九十壹贰叁肆伍陆柒菜菜城一二三四五六七八九十壹贰叁肆伍陆柒▓
  3. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓00▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  4. 昵称:昵称1  气血:30/30  法力:30/30  攻击:20  防御:10
  5. 等级:1  经验:0/20  银两:0  点数:0  饱食度:1000/1000
  6. 武器:无  攻击+0  服装:无  防御+0
  7. 腰带:无  气血上限+0  饰品:无  魔法上限+0
  8. ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
复制代码
点数可以无限,巨大数量值,也可以每天设置一个定量,点数用光了就下机,不给再玩了,除非修改这个设置,否则自愿自限的游戏数量养成习惯。家长自制给孩子玩的游戏这个概念空间,而不是接受市场给予的游戏。家长与孩子的PK挑战竞赛互动,将网吧的人群互动气氛,带到家庭。
彩色字,换掉空格计数的中文计数数字,和背景都是黑色的,与背景同色,是看不到的。
 楼主| 发表于 2026-2-25 21:38:32 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-2-28 11:46 编辑

游戏开始画面色彩条,用简化的8色。
开始画面.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;

  5. # 设置 UTF-8 输出,支持中文和方块
  6. binmode(STDOUT, ':utf8');
  7. $| = 1; # 关闭缓冲

  8. # --- 配置区域 ---
  9. my $delay = 0.001; # 基本色比较鲜艳,稍微慢一点(0.15s)看得更清楚

  10. # 【修改点】颜色映射改为 8 基本色 (0-7)
  11. # 顺序:黑 -> 红 -> 绿 -> 黄 -> 蓝 -> 紫 -> 青 -> 白
  12. my @color_codes = (0, 1, 2, 3, 4, 5, 6, 7);
  13. my @color_names = ('黑', '红', '绿', '黄', '蓝', '紫', '青', '白');

  14. # 长条方块
  15. my $blocks = "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■";
  16. a0:
  17. print "开始执行 8 基本色动画...\n";

  18. for my $i (1 .. 100) {
  19.     # 遍历 8 种颜色
  20.     for my $idx (0 .. $#color_codes) {
  21.         my $code = $color_codes[$idx];
  22.         my $name = $color_names[$idx];
  23.         
  24.         # 使用 sprintf 构造前景色 (38;5;N)
  25.         my $start = sprintf("\e[38;5;%dm", $code);
  26.         my $reset = "\e[0m";
  27.         
  28.         # 打印:[颜色][方块][重置]
  29.         # 为了调试,你可以在方块后加上颜色名称,这里为了美观只打印方块
  30.         print "${start}${blocks}${reset}\n";
  31.         
  32.         # 延时
  33.         select(undef, undef, undef, $delay);
  34.     }
  35. }

  36. print sprintf("\e[1;38;5;15m%s\e[0m\n", "完成。");
  37. goto a1; a3:;  # 停留等待执行,按任意键继续。
  38. goto a0;

  39. a1:
  40.     print "\n> 按任意键继续...";
  41.     my $old_stty = `stty -g`;    # 保存当前终端设置
  42.     chomp $old_stty;
  43.     system("stty raw -echo");    # 设置为 raw 模式:关闭回显、关闭行缓冲
  44.     my $key = getc(STDIN);    # 读取一个字符(阻塞)
  45.     system("stty $old_stty");    # 恢复原始终端设置
  46.     print "\n";  # 换行,让后续输出整洁
  47. goto a2;

  48. a2:
  49. print "\033[2J\033[H";  # 清屏并光标归位&&
  50. goto a3;
复制代码
输出

  1. 开始执行 8 基本色动画...
  2. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  3. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  4. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  5. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  6. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  7. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  8. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  9. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  10. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  11. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  12. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  13. .........................
  14. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  15. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  16. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  17. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  18. ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  19. 完成。

复制代码
8种色条
 楼主| 发表于 2026-3-3 16:37:13 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-4 11:02 编辑

散列存到最后一行注释行(排序不能加非数字,否则会提出警示)
散列排序.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;                  # 声明源代码文件使用 UTF-8 编码,支持中文字符
  5. binmode(STDOUT, ":utf8");  # 设置标准输出使用UTF-8编码

  6. # 定义一个哈希表,存储数字和对应的字符串值
  7. my %numbers = (
  8.     '1'      => '昵称1',
  9.     '2'      => 1,           # 等级
  10.     '3'      => 0,           # 充值点数
  11.     '4'      => 0,           # 银两
  12.     '5'      => 0,           # 碎银(不是整银,需要一个操作合成银两)
  13.     '6'      => 0,           # 经验
  14.     '7'      => 20,          # 最大升级经验值
  15.     '8'      => 10,          # 最大升级经验值
  16.     '9'      => 1000,        # 饱食度
  17.     '10'     => 1000,        # 最大饱食值
  18.     '11'     => 20,          # 攻击
  19.     '12'     => 10,          # 防御
  20.     '13'     => 30,          # 气血值
  21.     '14'     => 30,          # 最大气血值
  22.     '15'     => 30,          # 魔法值
  23.     '16'     => 30,          # 最大魔法值
  24.     '17'     => '无',        # 武器
  25.     '18'     => 0,           # 武器攻击
  26.     '19'     => '无',        # 服装
  27.     '20'     => 0,           # 服装防御
  28.     '21'     => '无',        # 腰带
  29.     '22'     => 0,           # 腰带加气血
  30.     '23'     => '无',        # 戒指
  31.     '24'     => 0,           # 戒指加魔法
  32.     '25'     => 0,           # 吸血
  33.     '26'     => 3,           # 免费恢复气血和魔法的次数
  34.     '27'     => 1,           # 回合
  35.     '28'     => 0,           # 面包
  36.     '29'     => 0,           # 饼干
  37.     '30'     => 0,           # 金创药
  38.     '31'     => 0,           # 仙狐延
  39.     '32'     => 0,           # 龙魂丹
  40.     '33'     => '空卡槽',    # 技能1
  41.     '34'     => '空卡槽',    # 技能2
  42.     '35'     => '空卡槽',    # 技能3
  43.     '36'     => 0,           # 劝降翻译机

  44.     '37'     => 0,           # 击杀数
  45.     '38'     => int(rand(10)) + 1, # 怪老大装备暴率 (1-10)
  46. );

  47. # 以追加模式打开脚本自身文件
  48. open(my $fh, '>>:encoding(UTF-8)', $0) or die "无法打开自身文件: $!";

  49. # 向文件写入 "#0:" 前缀
  50. print $fh "#0:";

  51. # 对哈希表的键进行数字排序(0,1,2,10,11,20),并输出对应的值
  52. foreach my $key (sort { $a <=> $b } keys %numbers) {
  53.     print $fh "$numbers{$key},";
  54. }

  55. # 写入换行符并关闭文件
  56. print $fh "\n";
  57. close($fh);
  58. <>;
  59. #0:昵称1,1,0,0,0,0,20,10,1000,1000,20,10,30,30,30,30,无,0,无,0,无,0,无,0,0,3,1,0,0,0,0,0,空卡槽,空卡槽,空卡槽,0,0,10,
  60. #0:昵称1,1,0,0,0,0,20,10,1000,1000,20,10,30,30,30,30,无,0,无,0,无,0,无,0,0,3,1,0,0,0,0,0,空卡槽,空卡槽,空卡槽,0,0,3,
  61. #0:昵称1,1,0,0,0,0,20,10,1000,1000,20,10,30,30,30,30,无,0,无,0,无,0,无,0,0,3,1,0,0,0,0,0,空卡槽,空卡槽,空卡槽,0,0,1,
复制代码
这里有个需求如何定义的问题,老板与执行员工如何做事,购买方甲方需求与工程劳动乙方的描述事对接。需要什么样的用户信息,以什么形式去过程,取得结果。开始单是用户名,执行接触的地图区域,就染上了信息影子色彩。这个信息染色应该怎么做。AI自动信息的说法是数据分阶段添加,这样从数据分阶段添加去考虑。
 楼主| 发表于 2026-3-5 17:52:37 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-5 17:55 编辑

散列键排序4.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;                  # 声明源代码文件使用 UTF-8 编码,支持中文字符
  5. binmode(STDOUT, ":utf8");  # 设置标准输出使用UTF-8编码

  6. # 定义一个哈希表,存储数字和对应的字符串值
  7. my %a1 = (
  8.     "1"   => "无名勇士",
  9.     "2"    => int(rand(10)) + 1,
  10. );

  11. # 先读取当前文件的所有行
  12. open(my $a123, '<:utf8', $0) or die "无法读取自身文件: $!";
  13. my @b1 = <$a123>;
  14. close($a123);

  15. # 过滤掉以#开头且后面紧跟着"无名勇士"的行
  16. my $c1 = $a1{'1'};
  17. @b1 = grep { !/^#$c1/ } @b1;

  18. # 以写入模式重新打开文件
  19. open($a123, '>:utf8', $0) or die "无法写入自身文件: $!";

  20. # 写回过滤后的内容
  21. print $a123 @b1;

  22. # 向文件写入新的 "#无名勇士:" 前缀
  23. print $a123 "#$a1{'1'}:";

  24. # 对哈希表的键进行数字排序,并输出对应的值,sort { $a <=> $b }是内置变量处理,不能修改。
  25. foreach my $d1 (sort { $a <=> $b } keys %a1) {
  26.     print $a123 "$a1{$d1},";
  27. }

  28. # 写入换行符并关闭文件
  29. print $a123 "\n";
  30. close($a123);

  31. <>;
  32. #无名勇士:无名勇士,1,
复制代码
 楼主| 发表于 2026-3-7 16:58:33 | 显示全部楼层
散列增减
散列2键增减.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. # 假设$a1从某处获取值
  5. my $a1 = 1;  # 示例赋值
  6. my %a0 = (a => 1, b => 2);  # 正确初始化哈希

  7. print "前哈希内容:\n";
  8. foreach my $key (keys %a0) {print "$key => $a0{$key}\n";}

  9. if ($a1 == 1) { goto A2;  }# 跳转到A2标签

  10. A2:
  11. if ($a1 == 1) {$a0{c} = 3; } # 正确添加元素到哈希

  12. print "后哈希内容:\n";
  13. foreach my $key (keys %a0) {print "$key => $a0{$key}\n";}
  14. <>;
复制代码
输出

  1. 前哈希内容:
  2. a => 1
  3. b => 2
  4. 后哈希内容:
  5. c => 3
  6. a => 1
  7. b => 2
复制代码
 楼主| 发表于 2026-3-8 10:43:07 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-8 11:01 编辑

一个游戏玩家信息主容器%a,对这个散列的聚散,清空,增减,修改等。
散列2键增减散列合并.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %a = ();                # 清空散列a
  5. my %b = ();
  6. %a = (a1 => 1, a2 => 2);   # 重新赋值
  7. %b = (b3 => 3, b4 => 4);   # 定义散列b

  8. # 打印原始散列
  9. print "散列a:\n";
  10. foreach my $c (keys %a) {  print " $c => $a{$c} ,";}
  11. print "\n";
  12. print "散列b:\n";
  13. foreach my $c (keys %b) {  print " $c => $b{$c} ,";}
  14. print "\n";
  15. # 合并散列b到散列a(使用散列切片)
  16. @a{keys %b} = values %b; # 这里的@a不是指数组,是指散列切片,容易混淆!keys键名复数,values值复数

  17. # 遍历并打印合并后的散列a
  18. print "\n合并后的结果,合并散列a:\n";
  19. foreach my $c (keys %a) {  print "$c => $a{$c} ,";}

  20. <>;  # 等待用户输入,相当于暂停
复制代码
输出

  1. 散列a:
  2. a1 => 1 , a2 => 2 ,
  3. 散列b:
  4. b3 => 3 , b4 => 4 ,

  5. 合并后的结果,合并散列a:
  6. b3 => 3 ,b4 => 4 ,a1 => 1 ,a2 => 2 ,

复制代码
 楼主| 发表于 2026-3-8 17:11:41 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-8 17:24 编辑

输入实现散列合并处理
散列2键增减散列合并输入.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. a0:
  5. my %a = (a1 => 1, a2 => 2);
  6. my %b = (b3 => 3, b4 => 4);

  7. # 打印原始散列
  8. print "散列a:\n";
  9. foreach my $c (keys %a) {  print " $c => $a{$c} ,";}
  10. print "\n";
  11. print "散列b:\n";
  12. foreach my $c (keys %b) {  print " $c => $b{$c} ,";}
  13. print "\n";

  14. print "请输入: ";
  15. my $input = <STDIN>;
  16. chomp $input;

  17. if ($input eq '123') {
  18.     @a{keys %b} = values %b;
  19.     print "执行合并。\n";
  20.     goto a1;  # 跳转到显示标签
  21. }
  22. # 如果输入错误,也执行到这里
  23. a1:
  24.     print "a1标签下的散列a:";
  25.     foreach my $c (keys %a) {  
  26.                   print "$c => $a{$c} ,";
  27.     }
  28. print "\n";

  29. <>;
  30. goto a0;
复制代码
输出

  1. 散列a:
  2. a2 => 2 , a1 => 1 ,
  3. 散列b:
  4. b4 => 4 , b3 => 3 ,
  5. 请输入: 789
  6. a1标签下的散列a:a2 => 2 ,a1 => 1 ,

  7. 散列a:
  8. a2 => 2 , a1 => 1 ,
  9. 散列b:
  10. b4 => 4 , b3 => 3 ,
  11. 请输入: 123
  12. 执行合并。
  13. a1标签下的散列a:a2 => 2 ,b4 => 4 ,a1 => 1 ,b3 => 3 ,

  14. 散列a:
  15. a1 => 1 , a2 => 2 ,
  16. 散列b:
  17. b3 => 3 , b4 => 4 ,
  18. 请输入: 456
  19. a1标签下的散列a:a1 => 1 ,a2 => 2 ,

  20. 散列a:
  21. a1 => 1 , a2 => 2 ,
  22. 散列b:
  23. b3 => 3 , b4 => 4 ,
  24. 请输入: 123
  25. 执行合并。
  26. a1标签下的散列a:b3 => 3 ,a1 => 1 ,a2 => 2 ,b4 => 4 ,

复制代码
 楼主| 发表于 2026-3-11 19:57:26 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-21 12:25 编辑

建立#注释储存取
散列键注释学生管理表1.pl

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. binmode STDOUT, ":utf8";
  6. binmode STDIN, ":utf8";

  7. # 文件名
  8. my $filename = $0;  # 当前脚本文件名

  9. # 读取文件中的注释数据
  10. my @nicknames = read_nicknames_from_file($filename);

  11. # 第一次使用,没有昵称
  12. if (scalar(@nicknames) == 0) {
  13.     print "首次使用,请输入您的昵称(直接回车将使用'无名勇士'):";
  14.     my $input = <STDIN>;
  15.     chomp $input;
  16.    
  17.     my $nickname = $input ne "" ? $input : "无名勇士";
  18.    
  19.     # 将昵称保存到文件
  20.     add_nickname_to_file($filename, $nickname);
  21.    
  22.     print "昵称已设置为:$nickname\n";
  23.     @nicknames = ($nickname);  # 更新内存中的昵称列表
  24. }

  25. # 显示管理表
  26. while (1) {
  27.     print "\n" . "=" x 40 . "\n";
  28.     print "          昵称管理表\n";
  29.     print "=" x 40 . "\n";
  30.    
  31.     # 显示所有昵称
  32.     if (scalar(@nicknames) > 0) {
  33.         foreach my $i (0 .. $#nicknames) {
  34.             printf "%d. %s\n", $i + 1, $nicknames[$i];
  35.         }
  36.     } else {
  37.         print "暂无昵称\n";
  38.     }
  39.    
  40.     print "-" x 40 . "\n";
  41.     print "操作选项:\n";
  42.     print "a. 新增昵称\n";
  43.     print "d. 删除昵称(输入序号)\n";
  44.     print "q. 退出\n";
  45.     print "请选择操作(a/d/q):";
  46.    
  47.     my $choice = <STDIN>;
  48.     chomp $choice;
  49.    
  50.     if ($choice eq 'a') {
  51.         # 新增昵称
  52.         print "请输入新昵称(直接回车将使用'无名勇士'):";
  53.         my $new_nickname = <STDIN>;
  54.         chomp $new_nickname;
  55.         $new_nickname = "无名勇士" if $new_nickname eq "";
  56.         
  57.         add_nickname_to_file($filename, $new_nickname);
  58.         print "已添加昵称:$new_nickname\n";
  59.         
  60.         # 重新读取昵称列表
  61.         @nicknames = read_nicknames_from_file($filename);
  62.     }
  63.     elsif ($choice eq 'd') {
  64.         # 删除昵称
  65.         if (scalar(@nicknames) == 0) {
  66.             print "没有可删除的昵称!\n";
  67.             next;
  68.         }
  69.         
  70.         print "请输入要删除的序号(1-" . scalar(@nicknames) . "):";
  71.         my $num = <STDIN>;
  72.         chomp $num;
  73.         
  74.         if ($num =~ /^\d+$/ && $num >= 1 && $num <= scalar(@nicknames)) {
  75.             my $deleted_nickname = $nicknames[$num - 1];
  76.             # 从数组中删除
  77.             splice(@nicknames, $num - 1, 1);
  78.             # 保存到文件
  79.             save_nicknames_to_file($filename, @nicknames);
  80.             print "已删除昵称:$deleted_nickname\n";
  81.             
  82.             # 删除后继续循环,不会退出程序
  83.             # 重新读取文件以确保数据一致
  84.             @nicknames = read_nicknames_from_file($filename);
  85.         } else {
  86.             print "无效的序号!\n";
  87.         }
  88.     }
  89.     elsif ($choice eq 'q') {
  90.         print "退出程序。\n";
  91.         last;  # 退出while循环
  92.     }
  93.     else {
  94.         print "无效的选择,请重新输入!\n";
  95.     }
  96. }

  97. # 等待用户输入后退出
  98. print "\n按回车键退出...";
  99. <>;

  100. # ==================== 子函数 ====================

  101. # 从文件中读取所有昵称
  102. sub read_nicknames_from_file {

  103.     my ($file) = @_;  # 从参数中获取文件名
  104.     my @nicknames;    # 用于存储提取的昵称的数组

  105.     # 以只读、UTF-8编码方式打开文件,如果失败则终止程序
  106.     open my $fh, '<:utf8', $file or die "无法打开文件 $file: $!";

  107.     # 逐行读取文件
  108.     while (my $line = <$fh>) {

  109.         # 查找符合特定格式的行:以 #0 或 #1 等开头,后跟任意空白字符,
  110.         # 然后包含 "nickname:" 标签,并捕获其后的值(第一个非空白字符开始,直到行尾)
  111.         if ($line =~ /^#\d+\s+.*nickname:\s*(\S[^\n]*)/) {

  112.             # 将捕获的昵称添加到数组中
  113.             push @nicknames, $1;
  114.         }
  115.     }
  116.     close $fh;  # 关闭文件句柄
  117.     return @nicknames;  # 返回所有提取到的昵称
  118. }

  119. # 添加新昵称到文件
  120. sub add_nickname_to_file {
  121.     my ($file, $new_nickname) = @_;  # 从参数获取文件名和要添加的新昵称
  122.    
  123.     # 先读取现有内容
  124.     open my $fh, '<:utf8', $file or die "无法打开文件 $file: $!";  # 以只读方式打开文件
  125.     my @lines = <$fh>;  # 将文件所有行读取到数组
  126.     close $fh;  # 关闭文件句柄
  127.    
  128.     # 查找最后一个注释行的编号
  129.     my $last_num = -1;  # 初始化最后一个编号为-1
  130.     foreach my $line (@lines) {  # 遍历每一行
  131.         if ($line =~ /^#(\d+)\s+/) {  # 匹配以#开头后跟数字的行,捕获数字部分
  132.             $last_num = $1 if $1 > $last_num;  # 更新最大编号
  133.         }
  134.     }
  135.    
  136.     # 生成新注释行
  137.     my $new_num = $last_num + 1;  # 新编号为最大编号+1
  138.     my $new_line = "#$new_num nickname: $new_nickname\n";  # 按照格式生成新行
  139.    
  140.     # 在文件末尾添加新行
  141.     push @lines, $new_line;  # 将新行添加到数组末尾
  142.    
  143.     # 写回文件
  144.     open $fh, '>:utf8', $file or die "无法写入文件 $file: $!";  # 以写入模式打开文件(会覆盖原内容)
  145.     print $fh @lines;  # 将所有行写入文件
  146.     close $fh;  # 关闭文件句柄
  147. }

  148. # 保存所有昵称到文件(替换原有)
  149. sub save_nicknames_to_file {
  150.     my ($file, @nicknames) = @_;  # 从参数获取文件名和要保存的昵称列表
  151.    
  152.     # 读取现有内容
  153.     open my $fh, '<:utf8', $file or die "无法打开文件 $file: $!";  # 以只读方式打开文件
  154.     my @lines = <$fh>;  # 将文件所有行读取到数组
  155.     close $fh;  # 关闭文件句柄
  156.    
  157.     # 过滤掉所有 nickname 注释行
  158.     my @new_lines;  # 用于存储过滤后的行
  159.     foreach my $line (@lines) {  # 遍历每一行
  160.         # 如果不是 nickname 注释行,保留
  161.         if ($line !~ /^#\d+\s+.*nickname:/) {  # 匹配不以#数字 nickname: 开头的行
  162.             push @new_lines, $line;  # 保留非昵称行
  163.         }
  164.         # 如果是 nickname 注释行,则跳过(不保留)
  165.     }
  166.     # 添加新的 nickname 注释行
  167.     foreach my $i (0 .. $#nicknames) {  # 遍历昵称列表索引
  168.         # 按照格式生成新行:编号从0开始,后面跟昵称值
  169.         push @new_lines, "#$i nickname: $nicknames[$i]\n";  # 将新行添加到数组末尾
  170.     }
  171.    
  172.     # 写回文件
  173.     open $fh, '>:utf8', $file or die "无法写入文件 $file: $!";  # 以写入模式打开文件(会覆盖原内容)
  174.     print $fh @new_lines;  # 将过滤和添加后的所有行写入文件
  175.     close $fh;  # 关闭文件句柄
  176. }
复制代码
输出

  1. 首次使用,请输入您的昵称(直接回车将使用'无名勇士'):
  2. 昵称已设置为:无名勇士

  3. ========================================
  4.           昵称管理表
  5. ========================================
  6. 1. 无名勇士
  7. ----------------------------------------
  8. 操作选项:
  9. a. 新增昵称
  10. d. 删除昵称(输入序号)
  11. q. 退出
  12. 请选择操作(a/d/q):a
  13. 请输入新昵称(直接回车将使用'无名勇士'):123
  14. 已添加昵称:123

  15. ========================================
  16.           昵称管理表
  17. ========================================
  18. 1. 无名勇士
  19. 2. 123
  20. ----------------------------------------
  21. 操作选项:
  22. a. 新增昵称
  23. d. 删除昵称(输入序号)
  24. q. 退出
  25. 请选择操作(a/d/q):a
  26. 请输入新昵称(直接回车将使用'无名勇士'):123
  27. 已添加昵称:123

  28. ========================================
  29.           昵称管理表
  30. ========================================
  31. 1. 无名勇士
  32. 2. 123
  33. 3. 123
  34. ----------------------------------------
  35. 操作选项:
  36. a. 新增昵称
  37. d. 删除昵称(输入序号)
  38. q. 退出
  39. 请选择操作(a/d/q):d
  40. 请输入要删除的序号(1-3):2
  41. 已删除昵称:123

  42. ========================================
  43.           昵称管理表
  44. ========================================
  45. 1. 无名勇士
  46. 2. 123
  47. ----------------------------------------
  48. 操作选项:
  49. a. 新增昵称
  50. d. 删除昵称(输入序号)
  51. q. 退出
  52. 请选择操作(a/d/q):

复制代码
if else需求123+goto标签选择+goto标签候选阵列
  1. 请输入:
  2. 1,需求1;
  3. 2,需求2;
  4. 3,需求3;
  5. if(1){goto 4}
  6. if(2){goto 56}
  7. if(3){goto 123}
  8. 123456789:
  9. goto
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-5-17 09:17

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表