经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
Delphi 实现刘谦春晚魔术
来源:cnblogs  作者:homejun  时间:2024/2/23 8:59:48  对本文有异议

看了博友的C# 实现刘谦春晚魔术很好,改成了delphi版的。 

  1. 1 program Project1;
  2. 2
  3. 3 {$APPTYPE CONSOLE}
  4. 4 {$R *.res}
  5. 5
  6. 6 uses
  7. 7 System.SysUtils,
  8. 8 System.Classes;
  9. 9
  10. 10 var
  11. 11 list, removeElement: TStringList;
  12. 12 i, NameCount, insertIndex, directCount, sexCount: Integer;
  13. 13 tmp, element, hiddenEle1, hiddenEle2: String;
  14. 14
  15. 15 procedure Fun1(NameCount: Integer);
  16. 16 begin
  17. 17 if NameCount < list.Count then
  18. 18 begin
  19. 19 for i := 0 to NameCount - 1 do
  20. 20 begin
  21. 21 element := list[0]; // 获取第0个元素
  22. 22 list.Delete(0); // 移除第0个元素
  23. 23 list.Add(element); // 将第0个元素添加到最后
  24. 24 end;
  25. 25
  26. 26 end;
  27. 27 end;
  28. 28
  29. 29 procedure Fun2(forCount: Integer);
  30. 30 begin
  31. 31 // 被删除掉的三张牌
  32. 32 removeElement := TStringList.Create;
  33. 33 for i := 0 to forCount - 1 do
  34. 34 begin
  35. 35 removeElement.Add(list[0]);
  36. 36 list.Delete(0);
  37. 37 end;
  38. 38 Writeln(Format('被删除掉的%D张牌:%s', [forCount, removeElement.CommaText]));
  39. 39 Writeln('删除之后:' + list.CommaText);
  40. 40
  41. 41 // 把拿到的三张牌插到中间
  42. 42 Randomize;
  43. 43 insertIndex := Random(list.Count - 1) + 1; // 生成一个介于第一个和倒数第二个位置之间的随机插入位置
  44. 44 Writeln('插入位置:' + insertIndex.ToString);
  45. 45 for i := removeElement.Count - 1 downto 0 do
  46. 46 begin
  47. 47 list.Insert(insertIndex, removeElement[i]);
  48. 48 end;
  49. 49
  50. 50 end;
  51. 51
  52. 52 procedure Fun3();
  53. 53 begin
  54. 54 // 藏起来第一张牌
  55. 55 hiddenEle1 := list.Strings[0];
  56. 56 list.Delete(0);
  57. 57 end;
  58. 58
  59. 59 procedure Fun4(Count: Integer);
  60. 60 begin
  61. 61 for i := 0 to Count - 1 do
  62. 62 begin
  63. 63 list.Delete(0);
  64. 64 end
  65. 65 end;
  66. 66
  67. 67 procedure Fun5();
  68. 68 begin
  69. 69 for i := 0 to 6 do
  70. 70 begin
  71. 71 element := list[0];
  72. 72 list.Delete(0);
  73. 73 list.Add(element);
  74. 74 end;
  75. 75 end;
  76. 76
  77. 77 function Fun6(sexCount: Integer): string;
  78. 78 var
  79. 79 forCount: Integer;
  80. 80 begin
  81. 81 forCount := 0;
  82. 82 if sexCount = 1 then
  83. 83 forCount := 5 // 男生要5次
  84. 84 else
  85. 85 forCount := 4;
  86. 86 for i := 0 to forCount - 1 do
  87. 87 begin
  88. 88 // 把第一张牌放到数组最后面 (好运留下来)
  89. 89 element := list[0];
  90. 90 list.Delete(0);
  91. 91 list.Add(element);
  92. 92
  93. 93 // 烦恼丢出去
  94. 94 list.Delete(0);
  95. 95 end;
  96. 96 result := list[0];
  97. 97 end;
  98. 98
  99. 99 begin
  100. 100 try
  101. 101 try
  102. 102 list := TStringList.Create;
  103. 103 list.CommaText := 'A,B,C,D,A,B,C,D';
  104. 104 Writeln('初始牌组:' + list.CommaText);
  105. 105 Writeln('请输入你的名字有几个字:');
  106. 106 ReadLn(tmp);
  107. 107 NameCount := tmp.ToInteger;
  108. 108
  109. 109 Fun1(NameCount);
  110. 110 Writeln('变化之后:' + list.CommaText);
  111. 111
  112. 112 Fun2(3);
  113. 113 Writeln('插入三张牌后:' + list.CommaText);
  114. 114 Fun3();
  115. 115 Writeln('藏起来第一张牌后:' + list.CommaText);
  116. 116
  117. 117 Writeln('北方-1 南方-2 不南不北-3,请输入对应数字:');
  118. 118 ReadLn(tmp);
  119. 119 directCount := tmp.ToInteger;
  120. 120 Fun2(directCount);
  121. 121 Writeln('南北方人后:' + list.CommaText);
  122. 122
  123. 123 Writeln('男-1 女-2,请输入对应数字:');
  124. 124 ReadLn(tmp);
  125. 125 sexCount := tmp.ToInteger;
  126. 126 Fun4(sexCount);
  127. 127 Writeln('男女生后:' + list.CommaText);
  128. 128
  129. 129 Fun5();
  130. 130
  131. 131 Writeln('见证奇迹后:' + list.CommaText);
  132. 132
  133. 133 Writeln('开始好运留下了 烦恼丢出去');
  134. 134 hiddenEle2 := Fun6(sexCount);
  135. 135 Writeln(Format('牌1:%s 牌2:%s', [hiddenEle1, hiddenEle2]));
  136. 136
  137. 137 ReadLn;
  138. 138 except
  139. 139 on E: Exception do
  140. 140 Writeln(E.ClassName, ': ', E.Message);
  141. 141 end;
  142. 142
  143. 143 finally
  144. 144 removeElement.Free;
  145. 145 list.Free;
  146. 146
  147. 147 end;
  148. 148
  149. 149 end.

 

原文链接:https://www.cnblogs.com/homejun/p/18018009

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号