c#自制抽奖小程序

初始化代码

界面效果如下:

实现旋转是使用的改变控件大小,背景颜色(把padding设置4可以看见背景颜色)。

 1 Random random = new Random();
 2         SoundPlayer sp = new SoundPlayer(Resources.Untitled_Project);
 3         int circle;
 4         int index;
 5         int stopNum;
 6         bool flag = true;//奇数和偶数的标志,为true表示偶数
 7         private void Button_Click(object sender, EventArgs e)
 8         {
 9             circle = random.Next(5, 8);//随机产生旋转的圈数
10             stopNum = random.Next(0, 8);//随机确定选择抽中奖品的下标
11             button.Enabled = false;
12             time.Interval = 10;
13             index = 0;
14             flag = true;
15             sp.Play();
16             time.Start();
17         }
18 
19         private void time_Tick(object sender, EventArgs e)
20         {
21             if (flag)//放大picturebox,实现转动效果
22             {
23                 pictures[index].Size = new Size(103, 103);
24                 pictures[index].BackColor = Color.YellowGreen;
25                 flag = false;
26             }
27             else if (flag == false)//将原来的picturebox缩放回原来的尺寸
28             {
29                 pictures[index].Size = new Size(95, 95);
30                 pictures[index].BackColor = Color.White;
31                 index++;
32                 flag = true;
33             }
34             if (index == 8)
35             {
36                 index = 0;
37                 circle -= circle > 0 ? 1 : 0;//每次转动8次,旋转的圈数-1
38             }
39             //倒数两圈慢
40             time.Interval = circle > 2 ? 10 : 100;
41             if (circle == 0 && index == stopNum)
42             {
43                 pictures[index].Size = new Size(103, 103);
44                 pictures[index].BackColor = Color.YellowGreen;
45                 pictures[index].Location = new Point(pictures[index].Location.X - 4, pictures[index].Location.Y - 4);
46                 StopRotate(index);
47                 pictures[index].Size = new Size(95, 95);
48                 pictures[index].BackColor = Color.White;
49                 pictures[index].Location = new Point(pictures[index].Location.X + 4, pictures[index].Location.Y + 4);
50             }
51         }
旋转代码

停止再加上一个简单的概率会有点不了不流畅。

 1  private void StopRotate(int sum)
 2         {
 3             string message = null;
 4             switch (index)
 5             {
 6                 case 0: if (random.Next(0, 2) == stopNum) message = "恭喜获取保温杯一个"; else { circle = 1; stopNum = 2; } break;//1/2  14  7%
 7                 case 1: if (random.Next(0, 3) == stopNum) message = "恭喜获取体重秤一个"; else { circle = 1; stopNum = 5; } break;//1/3  21  4%
 8                 case 2: message = "谢谢惠顾"; break;
 9                 case 3: if (random.Next(3, 7) == stopNum) message = "恭喜获取台灯一个"; else { circle = 1; stopNum = 5; } break;//1/4   28   3%
10                 case 4: if (random.Next(0, 5) == stopNum) message = "恭喜获取耳机一个"; else { circle = 1; stopNum = 5; } break;//1/4  28   3%
11                 case 5: message = "谢谢惠顾"; break;
12                 case 6: if (random.Next(6, 8) == stopNum) message = "恭喜获取电动牙刷一个"; else { circle = 1; stopNum = 2; } break;//1/2  1/14   7&
13                 case 7: if (random.Next(7, 10) == stopNum) message = "恭喜获取时钟一个"; else { circle = 1; stopNum = 2; } break;//1/3   1/21    4%
14             }
15             if (message != null)
16             {
17                 sp.Stop();
18                 time.Stop();//先关闭定时器
19                 MessageBox.Show(message);
20                 this.button.Enabled = true;
21             }
22         }
停止代码

简单的旋转程序就完成了。

转载于:https://www.cnblogs.com/xuejie-shool/p/10915503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值