186人参与 • 2024-05-12 • Delphi
看了博友的c# 实现刘谦春晚魔术很好,改成了delphi版的。
1 program project1; 2 3 {$apptype console} 4 {$r *.res} 5 6 uses 7 system.sysutils, 8 system.classes; 9 10 var 11 list, removeelement: tstringlist; 12 i, namecount, insertindex, directcount, sexcount: integer; 13 tmp, element, hiddenele1, hiddenele2: string; 14 15 procedure fun1(namecount: integer); 16 begin 17 if namecount < list.count then 18 begin 19 for i := 0 to namecount - 1 do 20 begin 21 element := list[0]; // 获取第0个元素 22 list.delete(0); // 移除第0个元素 23 list.add(element); // 将第0个元素添加到最后 24 end; 25 26 end; 27 end; 28 29 procedure fun2(forcount: integer); 30 begin 31 // 被删除掉的三张牌 32 removeelement := tstringlist.create; 33 for i := 0 to forcount - 1 do 34 begin 35 removeelement.add(list[0]); 36 list.delete(0); 37 end; 38 writeln(format('被删除掉的%d张牌:%s', [forcount, removeelement.commatext])); 39 writeln('删除之后:' + list.commatext); 40 41 // 把拿到的三张牌插到中间 42 randomize; 43 insertindex := random(list.count - 1) + 1; // 生成一个介于第一个和倒数第二个位置之间的随机插入位置 44 writeln('插入位置:' + insertindex.tostring); 45 for i := removeelement.count - 1 downto 0 do 46 begin 47 list.insert(insertindex, removeelement[i]); 48 end; 49 50 end; 51 52 procedure fun3(); 53 begin 54 // 藏起来第一张牌 55 hiddenele1 := list.strings[0]; 56 list.delete(0); 57 end; 58 59 procedure fun4(count: integer); 60 begin 61 for i := 0 to count - 1 do 62 begin 63 list.delete(0); 64 end 65 end; 66 67 procedure fun5(); 68 begin 69 for i := 0 to 6 do 70 begin 71 element := list[0]; 72 list.delete(0); 73 list.add(element); 74 end; 75 end; 76 77 function fun6(sexcount: integer): string; 78 var 79 forcount: integer; 80 begin 81 forcount := 0; 82 if sexcount = 1 then 83 forcount := 5 // 男生要5次 84 else 85 forcount := 4; 86 for i := 0 to forcount - 1 do 87 begin 88 // 把第一张牌放到数组最后面 (好运留下来) 89 element := list[0]; 90 list.delete(0); 91 list.add(element); 92 93 // 烦恼丢出去 94 list.delete(0); 95 end; 96 result := list[0]; 97 end; 98 99 begin 100 try 101 try 102 list := tstringlist.create; 103 list.commatext := 'a,b,c,d,a,b,c,d'; 104 writeln('初始牌组:' + list.commatext); 105 writeln('请输入你的名字有几个字:'); 106 readln(tmp); 107 namecount := tmp.tointeger; 108 109 fun1(namecount); 110 writeln('变化之后:' + list.commatext); 111 112 fun2(3); 113 writeln('插入三张牌后:' + list.commatext); 114 fun3(); 115 writeln('藏起来第一张牌后:' + list.commatext); 116 117 writeln('北方-1 南方-2 不南不北-3,请输入对应数字:'); 118 readln(tmp); 119 directcount := tmp.tointeger; 120 fun2(directcount); 121 writeln('南北方人后:' + list.commatext); 122 123 writeln('男-1 女-2,请输入对应数字:'); 124 readln(tmp); 125 sexcount := tmp.tointeger; 126 fun4(sexcount); 127 writeln('男女生后:' + list.commatext); 128 129 fun5(); 130 131 writeln('见证奇迹后:' + list.commatext); 132 133 writeln('开始好运留下了 烦恼丢出去'); 134 hiddenele2 := fun6(sexcount); 135 writeln(format('牌1:%s 牌2:%s', [hiddenele1, hiddenele2])); 136 137 readln; 138 except 139 on e: exception do 140 writeln(e.classname, ': ', e.message); 141 end; 142 143 finally 144 removeelement.free; 145 list.free; 146 147 end; 148 149 end.
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论