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

[数值计算] 批处理版世界杯

说明:
     代码本还可以做大幅度修改和优化,实在是写得太头痛了,先发了。
     请复制代码后将代码中的tab变量换成实际的tab不然会出错。
代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. :::::::::初始化变量:::::::::
  3. rem 三十二强及其世界排名
  4. set "list=1-巴西 2-西班牙 4-荷兰 5-意大利 6-德国 7-阿根廷 8-英格兰 83-南非 20-澳大利亚 47-韩国 45-日本 105-朝鲜 14-美国 17-墨西哥 38-洪都拉斯 78-新西兰 30-阿尔及利亚 19-喀麦隆 21-尼日利亚 27-科特迪瓦 32-加纳 31-巴拉圭 18-智利 16-乌拉圭 36-丹麦 9-法国 13-希腊 3-葡萄牙 15-塞尔维亚 34-斯洛伐克 34-斯洛文尼亚 24-瑞士"
  5. for %%a in (%list%) do (
  6.     for /f "tokens=1,2 delims=-" %%b in ("%%a") do set /a "pm_%%c=%%b"
  7. )
  8. set "tab= "
  9. :::::::::初始化变量:::::::::
  10. :::::::::分组:::::::::
  11. rem 按国际足联分组规则确保东道主南非和另外七支种子队不在同一组,同时确保各地区各队尽量不在同一组。
  12. echo 本届世界杯三十二强分组情况:&echo.
  13. for %%a in (A B C D E F G H) do set /a n+=1&set ".!n!=%%a"
  14. set /a n=0
  15. for %%a in (%list%) do (
  16.     set /a n+=1,m=0
  17.     set "str=!str! %%a"
  18.     if !n! equ 8 (
  19.        for %%b in (!str!) do (
  20.            if "%%b" equ "83-南非" (
  21.               set "_0_1=%%b"
  22.               ) else (
  23.               set "_!random!_%%b=%%b"
  24.            )
  25.        )
  26.        for /f "tokens=3 delims=_=" %%b in ('set _') do (
  27.            set /a m+=1
  28.            set "var=%%b"&set "var=!var:*-=!"
  29.            for %%c in (!m!) do (
  30.                for %%d in (!.%%c!) do set "tem_%%d=!tem_%%d! !var!"
  31.            )
  32.        )
  33.        set "str="&set /a n=0
  34.        for /f "delims==" %%b in ('set _') do set "%%b="
  35.     )
  36. )
  37. for %%a in (A B C D E F G H) do echo %%a组:!tem_%%a!&echo.
  38. echo 请按键继续&pause>nul
  39. :::::::::分组:::::::::
  40. :::::::::小组赛:::::::::
  41. rem 按世界杯规则采用积分制,胜一场得3分,平一场得1分,负一场得0分,积分最高的两队小组出线,如出现积分相同的情况,则比较竞胜球,如积分竞胜球还一样,则比较进球数,如还一样则比较世界排名(实际上是抽签);当两队世界排名相差超过20位弱胜强即为出现黑马,黑马出现概率为1/32。
  42. for %%a in (A B C D E F G H) do (
  43.     cls&echo %%a组赛况:&echo.
  44.     set "str=!tem_%%a!"
  45.     for %%b in (!tem_%%a!) do (
  46.         set "tem_%%a=!tem_%%a:%%b=!"
  47.         for %%c in (!tem_%%a!) do (
  48.             set /a a=!random!%%10,b=5
  49.             if !a! equ 0 set /a b=9
  50.             set /a a=!random!%%!b!,%%b_jq=a,b=!random!%%!b!,%%c_jq=b,%%b_jf+=1,%%c_jf+=1,sl=pm_%%c-pm_%%b
  51.             if !sl! gtr 20 (
  52.                if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  53.                if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  54.                set /a hm=!random!%%32
  55.                if !hm! equ 0 (
  56.                   if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a&set "hmd=出现黑马%%c"
  57.                   if !a! lss !b! set /a %%b_jq=a,%%c_jq=b&set "hmd=出现黑马%%c"
  58.                )                           
  59.             )
  60.             if !sl! lss -20 (
  61.                if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  62.                if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  63.                set /a hm=!random!%%32
  64.                if !hm! equ 0 (
  65.                   if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b&set "hmd=出现黑马%%b"
  66.                   if !a! lss !b! set /a %%b_jq=b,%%c_jq=a&set "hmd=出现黑马%%b"
  67.                )                       
  68.             )   
  69.             set /a %%b_js+=%%b_jq-%%c_jq,%%c_js+=%%c_jq-%%b_jq,%%b_jqs+=%%b_jq,%%c_jqs+=%%c_jq
  70.             if !%%b_jq! lss !%%c_jq! set /a %%b_jf-=1,%%c_jf+=2
  71.             if !%%b_jq! gtr !%%c_jq! set /a %%b_jf+=2,%%c_jf-=1
  72.             set "k=%%b VS %%c                  "
  73.             echo !k:~,15!比分!%%b_jq!:!%%c_jq!%tab%!hmd!&echo.&set "hmd="
  74.          )
  75.     )
  76.     for %%b in (!str!) do (
  77.         set "_!%%b_jf!_!%%b_js!_!%%b_jqs!_!pm_%%b!=%%b"     
  78.         echo %%b积!%%b_jf!分,竞胜球!%%b_js!个&echo.
  79.     )
  80.     for /f "tokens=5 delims=_=" %%b in ('set _') do (
  81.         set /a n+=1,m=5-n
  82.         set "%%a_jg=%%b小组第!m! !%%a_jg!"
  83.         if "!m!" leq "2" set "%%a_cx=%%b !%%a_cx!"
  84.     )
  85.     echo %%a组结果:!%%a_jg!&set /a n=0
  86.     for /f "delims==" %%b in ('set _') do set "%%b="
  87.     echo 请按键继续&pause>nul
  88. )
  89. cls&echo 本届世界杯十六强如下:&echo.
  90. for %%a in (A B C D E F G H) do echo %%a组:!%%a_cx!&echo.
  91. echo 请按键继续&pause>nul     
  92. :::::::::小组赛:::::::::
  93. :::::::::八分一决赛:::::::::
  94. rem 按世界杯规则分别由相临两组的四支队伍进行淘汰赛,由前小组第一对阵后小组第二,后小组第一对阵前小组第二,如比赛比分一样则用点球决胜负(5个一组),胜者进入四分一决赛;当两队世界排名相差超过10位弱胜强即为出现黑马,黑马出现概率为1/16。
  95. cls&echo 八分之一决赛赛况:&echo.
  96. for %%a in (A-B C-D E-F G-H) do (
  97.     set "str=%%a"&set "str=!str:-= !"&set /a n=0
  98.     for %%b in (!str!) do (
  99.         set /a n+=1,m=0
  100.         for %%c in (!%%b_cx!) do (
  101.             set /a m+=1
  102.             if !n! equ 1 (
  103.                if !m! equ 1 (
  104.                   set "pk1=%%c !pk1!"
  105.                   ) else (
  106.                   set "pk2=!pk2! %%c"
  107.                )
  108.                ) else (
  109.                if !m! equ 1 (
  110.                   set "pk2=!pk2!-%%c"
  111.                   ) else (
  112.                   set "pk1=%%c-!pk1!"
  113.                )
  114.             )
  115.         )
  116.      )
  117.      for %%a in (!pk1! !pk2!) do (
  118.          for /f "tokens=1,2 delims=-" %%b in ("%%a") do (
  119.              set /a a=!random!%%20,b=5
  120.              if !a! equ 0 set /a b=9
  121.              set /a a=!random!%%!b!,%%b_jq=a,b=!random!%%!b!,%%c_jq=b,sl=pm_%%c-pm_%%b,hm=100
  122.              if !sl! gtr 10 (
  123.                 if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  124.                 if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  125.                 set /a hm=!random!%%16
  126.                 if !hm! equ 0 (
  127.                    if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  128.                    if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  129.                 )                           
  130.              )
  131.              if !sl! lss -10 (
  132.                 if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  133.                 if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  134.                 set /a hm=!random!%%16
  135.                 if !hm! equ 0 (
  136.                    if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  137.                    if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  138.                 )                       
  139.              )
  140.              set "k=%%b VS %%c                                      "
  141.              if !%%b_jq! equ !%%c_jq! (
  142.                 set "dq=(点球)"
  143.                 set /a %%b_jq=0,%%c_jq=0
  144.                    for /l %%d in (1,1,10) do (
  145.                        if !%%b_jq! equ !%%c_jq! for /l %%e in (1,1,5) do set /a %%b_jq+=!random!%%2,%%c_jq+=!random!%%2
  146.                    )
  147.              )
  148.              set "tem8=!tem8! %%b"&set "sc=%%b"
  149.              if !%%b_jq! lss !%%c_jq! set "tem8=!tem8:%%b=! %%c"&set "sc=%%c"
  150.              if !hm! equ 0 set "hmd=(黑马)"
  151.              echo !k:~,15!比分!%%b_jq!:!%%c_jq!!dq!%tab%!sc!!hmd!胜出&echo.&set "dq="&set "sc="&set "hmd="           
  152.         )
  153.      )
  154.      set "pk1="&set "pk2="
  155. )
  156. echo 请按键继续&pause>nul
  157. cls&echo 本届世界杯八强如下:&echo.
  158. for %%a in (%tem8%) do echo %%a&echo.
  159. echo 请按键继续&pause>nul
  160. :::::::::八分一决赛:::::::::
  161. :::::::::四分之一决赛:::::::::
  162. rem 按世界杯规则,八队中以抽签分成四组两两对决,如比赛比分一样则用点球决胜负(5个一组),胜者进入半决赛;当两队世界排名相差超过10位弱胜强即为出现黑马,黑马出现概率为1/8。
  163. cls&echo 四分之一赛况:&echo.
  164. for %%a in (%tem8%) do set "_!random!_%%a=%%a"
  165. set /a n=0
  166. for /f "tokens=2 delims==" %%a in ('set _') do (
  167.     set /a n+=1&set "pk=!pk!-%%a"
  168.     if !n! equ 2 (
  169.        for /f "tokens=1,2 delims=-" %%b in ("!pk!") do (
  170.            set /a a=!random!%%20,b=5
  171.            if !a! equ 0 set /a b=9
  172.            set /a a=!random!%%!b!,%%b_jq=a,b=!random!%%!b!,%%c_jq=b,sl=pm_%%c-pm_%%b,hm=100
  173.            if !sl! gtr 10 (
  174.               if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  175.               if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  176.               set /a hm=!random!%%8
  177.               if !hm! equ 0 (
  178.                  if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  179.                  if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  180.               )                           
  181.            )
  182.            if !sl! lss -10 (
  183.               if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  184.               if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  185.               set /a hm=!random!%%8
  186.               if !hm! equ 0 (
  187.                  if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  188.                  if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  189.               )                       
  190.            )
  191.            set "k=%%b VS %%c                                      "
  192.            if !%%b_jq! equ !%%c_jq! (
  193.               set "dq=(点球)"
  194.               set /a %%b_jq=0,%%c_jq=0
  195.               for /l %%d in (1,1,10) do (
  196.                   if !%%b_jq! equ !%%c_jq! for /l %%e in (1,1,5) do set /a %%b_jq+=!random!%%2,%%c_jq+=!random!%%2
  197.               )
  198.            )
  199.            set "tem4=!tem4! %%b"&set "sc=%%b"
  200.            if !%%b_jq! lss !%%c_jq! set "tem4=!tem4:%%b=! %%c"&set "sc=%%c"
  201.            if !hm! equ 0 set "hmd=(黑马)"
  202.            echo !k:~,15!比分!%%b_jq!:!%%c_jq!!dq!%tab%!sc!!hmd!胜出&echo.&set "dq="&set "sc="&set "hmd="           
  203.         )
  204.         set /a n=0&set "pk="
  205.    )
  206.    
  207. )
  208. echo 请按键继续&pause>nul
  209. for /f "delims==" %%a in ('set _') do set "%%a="
  210. cls&echo 本届世界杯四强如下:&echo.
  211. for %%a in (%tem4%) do echo %%a&echo.
  212. echo 请按键继续&pause>nul
  213. :::::::::四分之一决赛:::::::::
  214. :::::::::半决赛:::::::::
  215. rem 按世界杯规则,四队中以抽签分成两组两两对决,如比赛比分一样则用点球决胜负(5个一组),胜者进入决赛;当两队世界排名相差超过5位弱胜强即为出现黑马,黑马出现概率为1/4。
  216. cls&echo 半决赛赛况:&echo.
  217. for %%a in (%tem4%) do set "_!random!_%%a=%%a"
  218. set /a n=0
  219. for /f "tokens=2 delims==" %%a in ('set _') do (
  220.     set /a n+=1&set "pk=!pk!-%%a"
  221.     if !n! equ 2 (
  222.        for /f "tokens=1,2 delims=-" %%b in ("!pk!") do (
  223.            set /a a=!random!%%20,b=5
  224.            if !a! equ 0 set /a b=9
  225.            set /a a=!random!%%!b!,%%b_jq=a,b=!random!%%!b!,%%c_jq=b,sl=pm_%%c-pm_%%b,hm=100
  226.            if !sl! gtr 5 (
  227.               if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  228.               if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  229.               set /a hm=!random!%%4
  230.               if !hm! equ 0 (
  231.                  if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  232.                  if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  233.               )                           
  234.            )
  235.            if !sl! lss -5 (
  236.               if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  237.               if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  238.               set /a hm=!random!%%4
  239.               if !hm! equ 0 (
  240.                  if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  241.                  if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  242.               )                       
  243.            )
  244.            set "k=%%b VS %%c                                      "
  245.            if !%%b_jq! equ !%%c_jq! (
  246.               set "dq=(点球)"
  247.               set /a %%b_jq=0,%%c_jq=0
  248.               for /l %%d in (1,1,10) do (
  249.                   if !%%b_jq! equ !%%c_jq! for /l %%e in (1,1,5) do set /a %%b_jq+=!random!%%2,%%c_jq+=!random!%%2
  250.               )
  251.            )
  252.            set "tem2=!tem2! %%b"&set "sc=%%b"
  253.            if !%%b_jq! lss !%%c_jq! set "tem2=!tem2:%%b=! %%c"&set "sc=%%c"
  254.            if !hm! equ 0 set "hmd=(黑马)"
  255.            echo !k:~,15!比分!%%b_jq!:!%%c_jq!!dq!%tab%!sc!!hmd!胜出&echo.&set "dq="&set "sc="&set "hmd="           
  256.         )
  257.         set /a n=0&set "pk="
  258.    )
  259.    
  260. )
  261. echo 请按键继续&pause>nul
  262. for /f "delims==" %%a in ('set _') do set "%%a="
  263. cls&echo 本届世界杯决赛队伍如下:&echo.
  264. for %%a in (%tem2%) do echo %%a&echo.
  265. :::::::::半决赛:::::::::
  266. :::::::::决赛:::::::::
  267. rem 颠峰对决,如比赛比分一样则用点球决胜负(5个一组),胜者夺得本届世界杯冠军;当两队世界排名相差超过5位弱胜强即为出现黑马,黑马出现概率为1/4。
  268. cls&echo 决赛赛况:&echo.
  269. for %%a in (%tem2%) do set "pk=!pk!-%%a"
  270. for /f "tokens=1,2 delims=-" %%b in ("%pk%") do (
  271.     set /a a=!random!%%20,b=5
  272.     if !a! equ 0 set /a b=9
  273.     set /a a=!random!%%!b!,%%b_jq=a,b=!random!%%!b!,%%c_jq=b,sl=pm_%%c-pm_%%b,hm=100
  274.     if !sl! gtr 5 (
  275.        if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  276.        if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  277.           set /a hm=!random!%%4
  278.           if !hm! equ 0 (
  279.              if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  280.              if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  281.           )                           
  282.        )
  283.        if !sl! lss -5 (
  284.           if !a! gtr !b! set /a %%b_jq=b,%%c_jq=a
  285.           if !a! lss !b! set /a %%b_jq=a,%%c_jq=b
  286.           set /a hm=!random!%%4
  287.           if !hm! equ 0 (
  288.              if !a! gtr !b! set /a %%b_jq=a,%%c_jq=b
  289.              if !a! lss !b! set /a %%b_jq=b,%%c_jq=a
  290.           )                       
  291.        )
  292.        set "k=%%b VS %%c                                      "
  293.        if !%%b_jq! equ !%%c_jq! (
  294.           set "dq=(点球)"
  295.           set /a %%b_jq=0,%%c_jq=0
  296.           for /l %%d in (1,1,10) do (
  297.               if !%%b_jq! equ !%%c_jq! for /l %%e in (1,1,5) do set /a %%b_jq+=!random!%%2,%%c_jq+=!random!%%2
  298.           )
  299.        )
  300.        set "sc=%%b"
  301.        if !%%b_jq! lss !%%c_jq! set "sc=%%c"
  302.        if !hm! equ 0 set "hmd=(黑马)"
  303.        echo !k:~,15!比分!%%b_jq!:!%%c_jq!!dq!%tab%!sc!!hmd!胜出&echo.&set "dq="           
  304.     )
  305. )
  306. echo 请按键继续&pause>nul
  307. cls&echo 本届世界杯冠军为:%sc% &echo.
  308. :::::::::决赛:::::::::
  309. echo 请按键继续&pause>nul
复制代码
1

评分人数

***共同提高***

好玩,完全random。
努力学习,努力挣分

TOP

修正版

说明:
    1、更新了分组的算法,效率更高;
    2、修正了原版中小组排名计算的错误;
    3、修正了黑马判断;
    4、加入了平局判断;
    5、加入子程序,用call来调用,在牺牲一点效率的同时大幅简化了代码(源文件大小从14k下降到8k);
    6、请复制代码后将代码中的tab变量值换成实际的tab不然会出错。
  1. @echo off&setlocal enabledelayedexpansion
  2. :::::::::初始化变量:::::::::
  3. rem 三十二强及其世界排名
  4. set "list=1-巴西 2-西班牙 4-荷兰 5-意大利 6-德国 7-阿根廷 8-英格兰 83-南非 20-澳大利亚 47-韩国 45-日本 105-朝鲜 14-美国 17-墨西哥 38-洪都拉斯 78-新西兰 30-阿尔及利亚 19-喀麦隆 21-尼日利亚 27-科特迪瓦 32-加纳 31-巴拉圭 18-智利 16-乌拉圭 36-丹麦 9-法国 13-希腊 3-葡萄牙 15-塞尔维亚 34-斯洛伐克 34-斯洛文尼亚 24-瑞士"
  5. for %%a in (%list%) do (
  6.     for /f "tokens=1,2 delims=-" %%b in ("%%a") do set /a "pm_%%c=200-%%b"
  7. )
  8. set "tab=        "
  9. :::::::::初始化变量:::::::::
  10. :::::::::分组:::::::::
  11. rem 按国际足联分组规则确保东道主南非(铁定在A组)和另外七支种子队不在同一组,同时确保各地区各队尽量不在同一组。
  12. echo 本届世界杯三十二强分组情况:&echo.
  13. for %%a in (%list:83-南非=%) do (
  14.     set "str=%%a"&set "str=!str:*-=!"
  15.     if not defined code (
  16.        if not defined flag (
  17.           set "code=BCDEFGH"&set "flag=a"&set /a n=7
  18.           ) else (
  19.           set "code=ABCDEFGH"&set /a n=8
  20.       )
  21.     )
  22.     set /a a=!random!%%!n!
  23.     for %%a in (!a!) do (
  24.         set "a=!code:~%%a,1!
  25.         for %%a in (!a!) do set "tem_%%a=!tem_%%a! !str!"&set "code=!code:%%a=!"&set /a n-=1
  26.     )
  27. )
  28. set "tem_A= 南非 !tem_A!"
  29. for %%a in (A B C D E F G H) do echo %%a组:!tem_%%a!&echo.
  30. echo 请按键继续&pause>nul
  31. :::::::::分组:::::::::
  32. :::::::::小组赛:::::::::
  33. rem 按世界杯规则采用积分制,胜一场得3分,平一场得1分,负一场得0分,积分最高的两队小组出线,如出现积分相同的情况,则比较竞胜球,如积分竞胜球还一样,则比较进球数,如还一样则比较世界排名(实际上是抽签);当两队世界排名相差超过20位弱胜强即为出现黑马,黑马出现概率为1/32。
  34. for %%a in (A B C D E F G H) do (
  35.     cls&echo %%a组赛况:&echo.
  36.     set "str=!tem_%%a!"
  37.     for %%b in (!tem_%%a!) do (
  38.         set "tem_%%a=!tem_%%a:%%b=!"&set /a n=0
  39.         for %%c in (!tem_%%a!) do call :lp %%b %%c 20 32
  40.     )
  41.     for %%b in (!str!) do (
  42.         echo %%b积!%%b_jf!分,竞胜球!%%b_js!个&echo.&set /a %%b_js+=30
  43.         set "var=!var! !%%b_jf!!%%b_js!!%%b_jqs!!pm_%%b!"&set "!%%b_jf!!%%b_js!!%%b_jqs!!pm_%%b!=%%b"     
  44.     )
  45.     for %%b in (!var!) do (
  46.         for %%c in (!var!) do (
  47.             if %%b leq %%c set /a .%%b+=1
  48.         )
  49.         set ".!.%%b!=!%%b!"
  50.     )
  51.     set "str="&set "var="
  52.     for /l %%b in (1,1,4) do (
  53.         set "str=!str! !.%%b!小组第%%b"
  54.         if %%b lss 3 set "%%a_cx=!%%a_cx! !.%%b!"
  55.     )     
  56.     echo %%a组结果:!str!&echo 请按键继续&pause>nul
  57. )
  58. cls&echo 本届世界杯十六强如下:&echo. &set "tem="
  59. for %%a in (A B C D E F G H) do echo %%a组:!%%a_cx!&echo.
  60. echo 请按键继续&pause>nul     
  61. :::::::::小组赛:::::::::
  62. :::::::::八分一决赛:::::::::
  63. rem 按世界杯规则分别由相临两组的四支队伍进行淘汰赛,由前小组第一对阵后小组第二,后小组第一对阵前小组第二,如比赛比分一样则用点球决胜负(5个一组),胜者进入四分一决赛;当两队世界排名相差超过10位弱胜强即为出现黑马,黑马出现概率为1/16。
  64. cls&echo 八分之一决赛赛况:&echo.
  65. for %%a in (A-B C-D E-F G-H) do (
  66.     set "str=%%a"&set "str=!str:-= !"&set /a n=0
  67.     for %%b in (!str!) do (
  68.         set /a n+=1,m=0
  69.         for %%c in (!%%b_cx!) do (
  70.             set /a m+=1
  71.             if !n! equ 1 (
  72.                if !m! equ 1 (
  73.                   set "pk1=%%c !pk1!"
  74.                   ) else (
  75.                   set "pk2=!pk2! %%c"
  76.                )
  77.                ) else (
  78.                if !m! equ 1 (
  79.                   set "pk2=!pk2!-%%c"
  80.                   ) else (
  81.                   set "pk1=%%c-!pk1!"
  82.                )
  83.             )
  84.         )
  85.      )
  86.      for %%a in (!pk1! !pk2!) do for /f "tokens=1,2 delims=-" %%b in ("%%a") do call :lp %%b %%c 10 16 dq
  87.      set "pk1="&set "pk2="
  88. )
  89. echo 请按键继续&pause>nul
  90. cls&echo 本届世界杯八强如下:&echo.
  91. for %%a in (%tem%) do echo %%a&echo.
  92. echo 请按键继续&pause>nul
  93. :::::::::八分一决赛:::::::::
  94. :::::::::四分之一决赛:::::::::
  95. rem 按世界杯规则,八队中以抽签分成四组两两对决,如比赛比分一样则用点球决胜负(5个一组),胜者进入半决赛;当两队世界排名相差超过10位弱胜强即为出现黑马,黑马出现概率为1/8。
  96. cls&echo 四分之一赛况:&echo.
  97. for %%a in (%tem%) do set "_!random!_%%a=%%a"
  98. set /a n=0&set "tem="
  99. for /f "tokens=2 delims==" %%a in ('set _') do (
  100.     set /a n+=1&set "pk=!pk!-%%a"
  101.     if !n! equ 2 (
  102.        for /f "tokens=1,2 delims=-" %%b in ("!pk!") do call :lp %%b %%c 10 8 dq   
  103.        set /a n=0&set "pk="
  104.     )  
  105. )
  106. for /f "delims==" %%a in ('set _') do set "%%a="
  107. echo 请按键继续&pause>nul
  108. cls&echo 本届世界杯四强如下:&echo.
  109. for %%a in (%tem%) do echo %%a&echo.
  110. echo 请按键继续&pause>nul
  111. :::::::::四分之一决赛:::::::::
  112. :::::::::半决赛:::::::::
  113. rem 按世界杯规则,四队中以抽签分成两组两两对决,如比赛比分一样则用点球决胜负(5个一组),胜者进入决赛;当两队世界排名相差超过5位弱胜强即为出现黑马,黑马出现概率为1/4。
  114. cls&echo 半决赛赛况:&echo.
  115. for %%a in (%tem%) do set "_!random!_%%a=%%a"
  116. set /a n=0&set "tem="
  117. for /f "tokens=2 delims==" %%a in ('set _') do (
  118.     set /a n+=1&set "pk=!pk!-%%a"
  119.     if !n! equ 2 (
  120.        for /f "tokens=1,2 delims=-" %%b in ("!pk!") do call :lp %%b %%c 5 4 dq   
  121.        set /a n=0&set "pk="
  122.    )
  123.    
  124. )
  125. echo 请按键继续&pause>nul
  126. for /f "delims==" %%a in ('set _') do set "%%a="
  127. cls&echo 本届世界杯决赛队伍如下:&echo.
  128. for %%a in (%tem2%) do echo %%a&echo.
  129. :::::::::半决赛:::::::::
  130. :::::::::决赛:::::::::
  131. rem 颠峰对决,如比赛比分一样则用点球决胜负(5个一组),胜者夺得本届世界杯冠军;当两队世界排名相差超过5位弱胜强即为出现黑马,黑马出现概率为1/4。
  132. cls&echo 决赛赛况:&echo.
  133. for %%a in (%tem%) do set "pk=!pk!-%%a"
  134. for /f "tokens=1,2 delims=-" %%b in ("%pk%") do call :lp %%b %%c 5 4 dq
  135. echo 请按键继续&pause>nul
  136. cls&echo %sc%,最终夺得本届世界杯冠军!&echo.
  137. echo 请按键继续&pause>nul&goto :eof
  138. :::::::::决赛:::::::::
  139. :::::::::核心代码:::::::::
  140. :lp
  141. set /a a=!random!%%10,b=5&set "dq="&set "hms="&set "sc=平局"
  142. if !a! equ 0 set /a b=9
  143. set /a a=!random!%%b,%1_jq=a,b=!random!%%b,%2_jq=b,%1_jf+=1,%2_jf+=1,sl=pm_%1-pm_%2,hm=!random!%%%4
  144. if !a! lss !b! (
  145.    if !sl! geq %3 (
  146.       if !hm! equ 0 (
  147.          set /a %1_jq=a,%2_jq=b
  148.          ) else (
  149.          set /a %1_jq=b,%2_jq=a
  150.       )
  151.    )
  152.    if !sl! leq -%3 (
  153.       if !hm! equ 0 (
  154.          set /a %1_jq=b,%2_jq=a
  155.          ) else (
  156.          set /a %1_jq=a,%2_jq=b
  157.       )
  158.    )
  159. )
  160. if !a! gtr !b! (
  161.    if !sl! geq %3 (
  162.       if !hm! equ 0 (
  163.          set /a %1_jq=b,%2_jq=a
  164.          ) else (
  165.          set /a %1_jq=a,%2_jq=b
  166.       )
  167.     )
  168.     if !sl! leq -%3 (
  169.        if !hm! equ 0 (
  170.           set /a %1_jq=a,%2_jq=b
  171.           ) else (
  172.           set /a %1_jq=b,%2_jq=a
  173.        )
  174.     )
  175. )
  176. set /a %1_js+=%1_jq-%2_jq,%2_js+=%2_jq-%1_jq
  177. if !%1_jq! lss !%2_jq! (
  178.    set /a %1_jf-=1,%2_jf+=2&set "sc=%2胜出"&set "tem=!tem! %2"
  179.    ) else (
  180.    if !%1_jq! gtr !%2_jq! (
  181.       set /a %1_jf+=2,%2_jf-=1&set "sc=%1胜出"&set "tem=!tem! %1"
  182.       ) else (
  183.       if "%5" neq "" (
  184.          set "dq=(点球)"
  185.          set /a %1_jq=0,%2_jq=0
  186.          for /l %%a in (1,1,10) do if !%1_jq! equ !%2_jq! for /l %%b in (1,1,5) do set /a %1_jq+=!random!%%2,%2_jq+=!random!%%2
  187.          set "tem=!tem! %1"&set "sc=%1胜出"
  188.          if !%1_jq! lss !%2_jq! set "tem=!tem:%1=! %2"&set "sc=%2胜出"
  189.       )
  190.    )
  191. )
  192. set "k=%1 VS %2                  "
  193. set "sl=!sl:-=!"
  194. if !hm! equ 0 if "!sc!" neq "平局" if !sl! geq %3 set "hms=(黑马)"
  195. echo !k:~,15!比分!%1_jq!:!%2_jq!!dq!%tab%!sc!!hms!&echo.
  196. :::::::::核心代码:::::::::
复制代码

[ 本帖最后由 batman 于 2010-6-27 16:45 编辑 ]
***共同提高***

TOP

返回列表