加载中…
个人资料
林老师的LOGO_PYTHON_C语言之家
林老师的LOGO_P
YTHON_C语言之家
  • 博客等级:
  • 博客积分:0
  • 博客访问:45,449
  • 关注人气:563
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

玩转扑克牌游戏C

(2022-07-28 09:41:08)
标签:

林老师

pclogo

mswlogo

logo博客

fmslogo

分类: WinXP~7~8~10运行Logo语言
玩转扑克牌游戏 C
玩转扑克牌游戏C
      芜湖试卷的玩牌编程“一扎纸牌N张,从上到下编号为1~N,现将第一张丢掉,第二张放在纸牌的最后,现将第三张丢掉,将第四张放在最后,如此下去,直到手中只剩下一张牌,编程求这张牌原来是几号。”说到底是对从1~N的等差数列的 删除-换位 倒腾。我们运行 C 8 输出的是 8 ,令人将信将疑:到底在这中间发生了什么?怎么就会输出一个 8 ?!所以我们还是很想了解每一次“倒腾”后发生了什么,最终的答案是怎么得来的。现在将程序编写成这样子,就能清楚地看到每个层次的“倒腾”产生的是什么结果。
TO C :N
  MAKE "L []  ;建立一个储存顺序牌号的空表
  FOR[I 1 :N][MAKE "L SE :L :I]  ;建立1~N顺序数字表
  PR :L  ;显示这个表
  C1 :L  ;用递归模拟玩牌过程
END

TO C1 :L   ;模拟玩牌的递归
  IF (COUNT :L)=1 [PR :L STOP] ;在只剩下一张牌时输出表中的牌号
  MAKE "L BF :L             ;规则:将第一张牌丢掉
  IF (COUNT :L)>1 [PR :L]   ;输出“去顶”后的结果
  MAKE "L SE BF :L FIRST :L ;规则:将面上的牌放到最后
  IF (COUNT :L)>1 [PR :L]   ;输出“置底”后的结果
  C1 :L  ;不断循环以上过程
END

现在执行如下命令:

C 8
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8
3 4 5 6 7 8 2
4 5 6 7 8 2
5 6 7 8 2 4
6 7 8 2 4
7 8 2 4 6
8 2 4 6
2 4 6 8
4 6 8
6 8 4
8 4
4 8
8
最终输出的结果确实是 8

再如执行 C 15:
C 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 4 5 6 7 8 9 10 11 12 13 14 15 2
4 5 6 7 8 9 10 11 12 13 14 15 2
5 6 7 8 9 10 11 12 13 14 15 2 4
6 7 8 9 10 11 12 13 14 15 2 4
7 8 9 10 11 12 13 14 15 2 4 6
8 9 10 11 12 13 14 15 2 4 6
9 10 11 12 13 14 15 2 4 6 8
10 11 12 13 14 15 2 4 6 8
11 12 13 14 15 2 4 6 8 10
12 13 14 15 2 4 6 8 10
13 14 15 2 4 6 8 10 12
14 15 2 4 6 8 10 12
15 2 4 6 8 10 12 14
2 4 6 8 10 12 14
4 6 8 10 12 14 2
6 8 10 12 14 2
8 10 12 14 2 6
10 12 14 2 6
12 14 2 6 10
14 2 6 10
2 6 10 14
6 10 14
10 14 6
14 6
6 14
14
输出的答案是 14 。
……

现在我们终于能够看清楚每倒腾一步这一扎纸牌的排序了


PCLogo的程序:
TO C :N
  MAKE "L []  ;建立一个储存顺序牌号的空表
  FOR "I 1 :N[MAKE "L SE :L :I]  ;建立1~N顺序数字表
  PR :L  ;显示这个表
  C1 :L  ;用递归模拟玩牌过程
END

TO C1 :L   ;模拟玩牌的递归
  IF (COUNT :L)=1 [PR :L STOP] ;在只剩下一张牌时输出表中的牌号
  MAKE "L BF :L             ;规则:将第一张牌丢掉
  IF (COUNT :L)>1 [PR :L]   ;输出“去顶”后的结果
  MAKE "L SE BF :L FIRST :L ;规则:将面上的牌放到最后
  IF (COUNT :L)>1 [PR :L]   ;输出“置底”后的结果
  C1 :L  ;不断循环以上过程
END

要搞清楚一个问题  需要深入的思辩

玩转扑克牌游戏C

这个动画有些难 暂时还没有编写出LOGO程序来

玩转扑克牌游戏C

玩转扑克牌游戏C

玩转扑克牌游戏C



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有