看了博友的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.
发表评论