老师布置了一个任务,要求我们做一个抽奖游戏,以下是我个人制作的一个作品与写项目的过程。
我们用到了8个pictureBox控件和一个button,设置好大小,并且编排成一个九宫个形状
添加窗体的背景图片,并添加button的背景图片和文字“抽奖”,可以将pictureBox的BorderStyle设置为Fixed3D这样更美观。
以下是代码
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 int i = 0, rd, cnt = 0, a = 0; 9 PictureBox[] pic = new PictureBox[8]; //定义一个PictureBox的数组 10 11 private void Form1_Load(object sender, EventArgs e) 12 { 13 this.Width = 500; 14 this.Height = 500; 15 foreach (Control picB in this.Controls) //遍历窗体中所有PictureBox,并将窗体的PictureBox加入数组中 16 { 17 if (picB.GetType() == typeof(PictureBox)) 18 { 19 pic[i] = (PictureBox)picB; 20 i++; 21 } 22 } 23 //将奖品的图片加载进对应的PictureBox中 24 pictureBox1.ImageLocation = @"image/奖品1.jpg"; 25 pictureBox2.ImageLocation = @"image/奖品2.jpg"; 26 pictureBox3.ImageLocation = @"image/奖品3.jpg"; 27 pictureBox4.ImageLocation = @"image/奖品4.jpg"; 28 pictureBox5.ImageLocation = @"image/奖品5.jpg"; 29 pictureBox6.ImageLocation = @"image/奖品6.jpg"; 30 pictureBox7.ImageLocation = @"image/奖品7.jpg"; 31 pictureBox8.ImageLocation = @"image/奖品8.jpg"; 32 33 } 34 bool b = true; 35 private void button1_Click_1(object sender, EventArgs e) //打开定时器,并生成一个随机数 36 { 37 timer1.Enabled = true; 38 Random r = new Random(); 39 rd = r.Next(30, 46); 40 if (cnt >= 0) //判断是否是第一次进行抽奖,因为第一次pictureBox大小,位置都是默认的,第二次将是改变的,我们需要恢复 41 { 42 if (b == true) 43 { 44 b = false; 45 return; 46 } 47 pic[cnt].Location = new Point(pic[cnt].Location.X + 10, pic[cnt].Location.Y + 10); 48 } 49 50 } 51 52 private void timer1_Tick(object sender, EventArgs e) 53 { 54 55 if (a % 2 == 0) //定义一个变量,判断是否是2的倍数,从而实现PictureBox大小的动态变化 56 { 57 pic[cnt].Size = new Size(120, 120); //改变PictureBox的大小 58 pic[cnt].BackColor = Color.Red; 59 pic[cnt].Location = new Point(pic[cnt].Location.X - 10, pic[cnt].Location.Y - 10); //改变pictureBox的位置,让它处于原图片的中间位置 60 a++; 61 } 62 else if (a % 2 == 1) 63 { 64 pic[cnt].Size = new Size(100, 100); 65 pic[cnt].Location = new Point(pic[cnt].Location.X + 10, pic[cnt].Location.Y + 10); //恢复原位置,以及大小 66 cnt++; 67 a++; 68 } 69 if (cnt > 7) 70 { 71 cnt = 0; 72 } 73 if (a > rd && a % 2 == 1) //判断生成的随机a的值是否比生成的随机数大,并将对应PictureBox变大,然后停止 74 { 75 76 77 a = 0; 78 timer1.Enabled = false; 79 switch (cnt) //转盘停止后判断奖品是什么,并弹出对话框提示用户 80 { 81 case 7: MessageBox.Show("恭喜您,中奖了!奖品是一部手机"); break; 82 case 6: MessageBox.Show("恭喜您,中奖了!奖品是一副耳机"); break; 83 case 5: MessageBox.Show("恭喜您,中奖了!奖品是5元代金券"); break; 84 case 4: MessageBox.Show("恭喜您,中奖了!奖品是一个蓝牙音箱"); break; 85 case 3: MessageBox.Show("恭喜您,中奖了!奖品是精美礼品一份"); break; 86 case 2: MessageBox.Show("恭喜您,中奖了!奖品是笔记本电脑一台"); break; 87 case 1: MessageBox.Show("恭喜您,中奖了!奖品是遥控飞机一架"); break; 88 case 0: MessageBox.Show("谢谢参与"); break; 89 default: break; 90 } 91 92 } 93 } 94 }
以上为个人想法,大家如有个好的点子评论留言哟