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

[游戏娱乐] 批处理算24点

http://www.cn-dos.net/forum/viewthread.php?tid=45488&fpage=1

经过各位找出缺点,我自己列出了多种特殊情况,基本搞定
已经允许小数,分数了。 例如 8/(3-8/3)=24 这个口算出现分数的。
                                         (3-8/3=1/3 ->8/(1/3)=8*3/1=24)
又或许.... 所以,
接下来能找到一个例子加减乘除算24 而此批处理又算不到的同学
我给+15分
  1. @echo off &setlocal enabledelayedexpansion
  2. title made by 523066680@www.cn-dos.net - 算24.bat
  3. ::::::::::::::::::::::::::::::::::::
  4. ::批处理算24.bat
  5. ::作者:523066680
  6. ::blog http://hi.baidu.com/523066680
  7. ::首发于:http://www.cn-dos.net/forum/viewthread.php?tid=45488&fpage=1
  8. ::::::::::::::::::::::::::::::::::::
  9. :input
  10. for /f "tokens=1 delims==" %%a in ('set') do (set "%%a=")
  11. set "pexit=&pause &cls &goto :input"
  12. set /a i=10,j=11,q=12,k=13
  13. set _+=-
  14. set _-=+
  15. set _*=/
  16. set _/=*
  17. echo, &echo, 算24.bat
  18. echo, &echo, 输入4个扑克牌的数字,[范围: 1 2 3 4 5 6 7 8 9 i j q k ]
  19. echo, &echo, 其中1-9代表1-9 , i代表10 , j代表11 , q代表12 , k代表13
  20. echo, &echo,请正确输入。 示例:  q q 1 2 (或者qq12)
  21. echo, &set /p "str=可以用空格隔开,也可以不用 [exit 退出]: "
  22. echo,
  23. if "%str%"=="" (cls &goto :input)
  24. if "%str%"=="exit" (exit)
  25. call :fo "%str: =%" ""
  26. if "%have%"=="" (echo, &echo,没有答案)
  27. echo,
  28. pause
  29. cls &goto :input
  30. :://////递进结合递归//////列举数字的排列组合//////
  31. :fo
  32. if %1=="" (
  33.     if not "!defx%~2!"=="def" (call :next %~2 &set defx%~2=def)
  34.     goto :eof
  35. )
  36. if not defined _%~1 (set _%~1=-1)
  37. set str=%~1
  38. :foa
  39.   set /a _%~1+=1,foa=_%~1,fob=foa+1
  40.   call :fo "!str:~0,%foa%!!str:~%fob%!" "%~2!str:~%foa%,1!"
  41.   set str=%~1
  42.   set /a foa=_%~1
  43. if not "!str:~%foa%,-1!"=="" (goto :foa)
  44. set "_%~1="
  45. goto :eof
  46. :://////组合运算符的所有排列形式//////对接收到的4个数字进行计算
  47. :next
  48. set num=%~1
  49. set /a na=%num:~0,1%,nb=%num:~1,1%,nc=%num:~2,1%,nd=%num:~3,1%
  50. set /a yn=nb*100/nc*nc,yn2=24*nb/nc*nc-24*nb
  51. set "do=::"
  52. if %yn% equ %nb%00 (set "do=")
  53. %do% set /a spea=(na*10-nb*10/nc)*nd,speb=(na*10+nb*10/nc)*nd
  54. %do% if %spea% equ 240 echo, [ %na% - %nb% / %nc% ] * %nd% = 24 &set have=have %pexit%
  55. %do% if %speb% equ 240 echo, [ %na% + %nb% / %nc% ] * %nd% = 24 &set have=have %pexit%
  56. set /a spec=(na-(nb*nc))*nd
  57. if %spec% equ 24 echo, [ %na% - %nb% * %nc% ] * %nd% = 24 &set have=have %pexit%
  58. if %yn2% equ 0 (set "do=") else (set "do=::")
  59. %do% set /a spef=24*nb/nc-24*nd,speg=-spef
  60. %do% if %spef% equ %na% echo, %na% / [ %nb% / %nc% - %nd% ] = 24  &set have=have %pexit%
  61. %do% if %speg% equ %na% echo, %na% / [ %nd% - %nb% / %nc% ] = 24  &set have=have %pexit%
  62. set "fu=+ - x /"
  63. for %%a in (%fu%) do (
  64. for %%b in (%fu%) do (
  65.   for %%c in (%fu%) do (
  66.   set "fa=%%a" &set "fb=%%b" &set "fc=%%c"
  67.   call :next-1 !fa:x=*! !fb:x=*! !fc:x=*!
  68.   )
  69. )
  70. )
  71. goto :eof
  72. :next-1
  73. set /a count=((na %1 nb) %2 nc) %3 nd
  74. set "do=::"
  75. if %count% equ 24 (set "do=")
  76. ::////通过逆运算检验答案,例如,批处理中 3/2 = 1 而 1*2 不等于 3。
  77. %do% set /a test=((count !_%3! nd) !_%2! nc) !_%1! nb
  78. %do% if %test% neq %na% (goto :next-2)
  79. if %count% equ 24 (echo, { [%na% %1 %nb%] %2 %nc% } %3 %nd% = 24 &set have=have %pexit%)
  80. :next-2
  81. set /a ca=na %1 nb,cb=nc %3 nd,pca=ca !_%1! nb,pcb=cb !_%3! nd
  82. if %cb% equ 0 (goto :eof)
  83. if %pca% neq %na% (goto :eof)
  84. if %pcb% neq %nc% (goto :eof)
  85. set /a count2=ca %2 cb,pcount2=count2 !_%2! cb
  86. if %pcount2% neq %ca% (goto :eof)
  87. if %count2% equ 24 (echo, [%na% %1 %nb%] %2 [%nc% %3 %nd%] = 24 &set have=have %pexit%)
复制代码

特别例子 qq81 (12 12 8 1)
8 8 3 3
6 5 4 1
6 4 3 1
5 5 5 1
6 6 5 5
6 4 k 3

TOP

各位拜拜喽,本人离开网络一个月,这期间谁见着我发帖随便扣分。

文章:

[讨论]Batch Rename's Bug
http://www.cn-dos.net/forum/viewthread.php?tid=45655&fpage=1

[讨论]TalkAboutString
http://www.cn-dos.net/forum/viewthread.php?tid=45654&fpage=1

[分享][讨论]段落重定向方式改进
http://www.cn-dos.net/forum/viewthread.php?tid=45409&fpage=1

[讨论]2次ping1 不等于 1次ping2
http://www.cn-dos.net/forum/viewthread.php?tid=45410&fpage=1

[分享]%var%代替语句执行
http://www.cn-dos.net/forum/viewthread.php?tid=45240&fpage=1

贪吃蛇思路解析 (23楼)
http://www.cn-dos.net/forum/viewthread.php?tid=43369&fpage=1

建立永久的畸形盘符
http://www.cn-dos.net/forum/viewthread.php?tid=41796&fpage=1


作品
[原创]批处理算24点
http://www.cn-dos.net/forum/viewthread.php?tid=45488&fpage=1

[原创]批处理脚本打包工具
http://www.cn-dos.net/forum/viewthread.php?tid=44620&fpage=1

[原创]批处理写大字效果--新年贺卡
http://www.cn-dos.net/forum/viewthread.php?tid=45411&fpage=1

[vbs]满1小时就关机
http://www.cn-dos.net/forum/viewthread.php?tid=45242&fpage=1

[分享]生成待编写的测试脚本
http://www.cn-dos.net/forum/viewthread.php?tid=45250&fpage=1

[原创]举出当前最小和最大的bat文件
http://www.cn-dos.net/forum/viewthread.php?tid=41517&fpage=1

动画特效:画圆、弹球、进度条、起落等
http://www.cn-dos.net/forum/viewthread.php?tid=42124&fpage=1

[原创]纯批处理版贪吃蛇
http://www.cn-dos.net/forum/viewthread.php?tid=43369&fpage=1

[原创]中间渐渐变大的圆
http://www.cn-dos.net/forum/viewthread.php?tid=44785&fpage=1

空间随机游动粒子+贪吃蛇初版
http://www.cn-dos.net/forum/viewthread.php?tid=43059&fpage=1

【视觉类】前进中的道路+飞机大炮
http://www.cn-dos.net/forum/viewthread.php?tid=41333&fpage=1

[原创]001,002,003式的批量重命名
http://www.cn-dos.net/forum/viewthread.php?tid=41643&fpage=1

【视觉类】从中间逐渐扩大再变小的方形框框+变色   
http://www.cn-dos.net/forum/viewthread.php?tid=40711&fpage=1

[数值计算]1-99内整数开根
http://www.cn-dos.net/forum/viewthread.php?tid=43046&fpage=1

时钟--斜体+毫秒(更新,减少cpu和闪烁)   
http://www.cn-dos.net/forum/viewthread.php?tid=41833&fpage=1

[原创]潜水数天,完成了自己满意的数码雨
http://www.cn-dos.net/forum/viewthread.php?tid=42113&fpage=1

【算是月贴】我尽量减少闪烁的批处理大时钟
http://www.cn-dos.net/forum/viewthread.php?tid=41757&fpage=1

[动画]一路小跑,第一集,跳!
http://www.cn-dos.net/forum/viewthread.php?tid=41981&fpage=1

做了一个自己满意的滚动字幕
http://www.cn-dos.net/forum/viewthread.php?tid=39780&fpage=1






水区:
[分享][转载]半截故事
http://www.cn-dos.net/forum/viewthread.php?tid=45521&fpage=1

光速矛盾
http://www.cn-dos.net/forum/viewthread.php?tid=44789&fpage=1

1=0.9999999……?  
http://www.cn-dos.net/forum/viewthread.php?tid=43058&fpage=1

TOP

本帖最后由 523066680 于 2019-1-29 19:52 编辑

nothing

TOP

我被菜了~  请看
http://tieba.baidu.com/f?kz=522864657
10楼

TOP

3377
提示无答案
(3+3/7)*7=24
有一种爱叫放弃

TOP

我也写过贪吃蛇,而且是变色贪吃蛇,吃什么色就变什么色,不过是用按键精灵写的
//请先将画板打开并最大化,保持在前台,如果分辨率不是1280*1024全脚本只有cx,cy需要自己修改!
dim a(60),b(60),vvc(1,13)
x1=350:y1=350:x2=369:y2=350
//x1,2 y1,2是起始蛇线,可以自己重新设置,要求x2,y2>x1,y1,且必须是横线或竖线
cx=39:cy=935:ccx=0:ccy=0
//cx,cy是画板下面黑色方块的坐标,必须自己重新输入!!!!!!!!!!我分辨率是1280*1024
//每个颜色cx+(0-13就是ccx)*gg:cy=cy+(0-1就是ccy)*gg gg是颜色间隔
VBSCall pp=GetPixelColor(cx,cy)
If pp<>"000000"
KeyDown 18,1
KeyPress 67,1
KeyUp 18,1
KeyPress 69,1
Delay 50
KeyDown 18,1
KeyPress 68,1
KeyUp 18,1
KeyPress 9,1
KeyPress 9,1
KeyPress 9,1
SayString 0
KeyPress 9,1
SayString 0
KeyPress 9,1
SayString 0
KeyPress 13,1
EndIf
gg=0:gg1=0:gg2=0
While 1
IfColor cx+gg1,cy,000000,0
gg1=gg1+1
Delay 10
Else
Goto 右非黑
EndIf
EndWhile
Rem 右非黑
While 1
IfColor cx-gg2,cy,000000,0
gg2=gg2+1
Delay 10
Else
Goto 左非黑
EndIf
EndWhile
Rem 左非黑
gg=gg1+gg2-2
//gg是颜色间隔,此步算出每个颜色方块的边长-1
gg=gg+4
//gg是颜色间隔,此步把方块中那4格间隙给补上,如果你的不是4格自己修改
mmx=cx:mmy=cy:vvcx=1:vvcy=0
VBSCall GetPixelColor(mmx,mmy)
For 2
For 13
mmx=mmx+gg
vvc(vvcy,vvcx)=GetPixelColor(mmx,mmy)
vvcx=vvcx+1
EndFor
vvcy=vvcy+1
vvcx=1
mmy=mmy+gg
mmx=cx
EndFor
If x1=x2
xx=0:yy=1:ii=ABS(y2-y1)+1
Else
xx=1:yy=0:ii=ABS(x2-x1)+1
EndIf
i=2
a(1)=x1
b(1)=y1
While i<=ii
a(i)=a(i-1)+xx
b(i)=b(i-1)+yy
i=i+1
EndWhile
MoveTo x1,y1
LeftDown 1
MoveTo x2,y2
LeftUp 1
KeyPress 32,1
i=1
x=a(ii):y=b(ii)
Randomize
ccx=int(Rnd*13+1):ccy=int(Rnd+0.5)
MoveTo cx+(ccx*gg),cy+(ccy*gg)
LeftClick 1
MoveTo int(Rnd*120+300),int(Rnd*120+300)
//这里120和300可以自己设置,是在多大范围内出现随即点
LeftClick 1
bs1=cx:bs2=cy+gg
//画板白色点坐标
GetLastKey v
vv=v
csx=cx:csy=cy
While 1
MoveTo bs1,bs2
LeftClick 1
MoveTo a(i),b(i)
LeftClick 1
MoveTo csx,csy
LeftClick 1
GetLastKey v
If v<>vv and v>=37 and v<=40
If v=38
xx=0:yy=-1:vv=v
ElseIf v=40
xx=0:yy=1:vv=v
ElseIf v=37
xx=-1:yy=0:vv=v
ElseIf v=39
xx=1:yy=0:vv=v
EndIf
EndIf
x=x+xx:y=y+yy
t=1
While t<=ii
If x=a(t) and y=b(t)
Goto 重复
Else
t=t+1
EndIf
EndWhile
Gosub 遇点
Rem 重复
MoveTo x,y
LeftClick 1
a(i)=x:b(i)=y
i=i+1
If i>ii
i=1
EndIf
EndWhile
EndScript
Sub 遇点
IfColor x,y,"FFFFFF",1
ss=GetPixelColor(x,y)
If ss=GetPixelColor(cx,cy)
vvcx=0:vvcy=0
Goto 判色完
EndIf
vvcy=0:vvcx=1
For 2
For 13
If ss=vvc(vvcy,vvcx)
Goto 判色完
EndIf
vvcx=vvcx+1
EndFor
vvcx=1
vvcy=vvcy+1
EndFor
BBB=cint("&H"&left(ss,2))
GGG=cint("&H"&mid(ss,3,2))
RRR=cint("&H"&right(ss,2))
KeyDown 18,1
KeyPress 67,1
KeyUp 18,1
KeyPress 69,1
Delay 50
KeyDown 18,1
KeyPress 68,1
KeyUp 18,1
KeyPress 9,1
KeyPress 9,1
KeyPress 9,1
SayString RRR
KeyPress 9,1
SayString GGG
KeyPress 9,1
SayString BBB
KeyPress 13,1
vvcy=0:vvcx=0
Else
Return
EndIf
Rem 判色完
csx=cx+(vvcx*gg):csy=cy+(vvcy*gg)
//当前画板颜色坐标
ccx=int(Rnd*13+1):ccy=int(Rnd+0.5)
While ccx=vvcx and ccy=vvcy
ccx=int(Rnd*13+1):ccy=int(Rnd+0.5)
Delay 20
EndWhile
MoveTo cx+(ccx*gg),cy+(ccy*gg)
LeftClick 1
MoveTo int(Rnd*120+300),int(Rnd*120+300)
LeftClick 1
ii=ii+1
a(i)=x:b(i)=y
x=x+xx:y=y+yy
i=i+1
MoveTo bs1,bs2
LeftClick 1
MoveTo a(i),b(i)
LeftClick 1
MoveTo csx,csy
LeftClick 1
EndIf
Return

TOP

回复 7楼 的帖子

批处理也可以实现变色
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哇咔咔  我2008说要做贪吃蛇的时候 没人信
结果还是出来了,尽管做的粗糙,但毕竟打破了对做游戏心生畏惧的障碍。

    如今,敢于用批制作游戏的高手们蜂拥群起啊,相信batch ,明天会更牛!

TOP

有些游戏做得确实很棒!

TOP

返回列表