老师布置了一个任务,要求我们做一个抽奖游戏,以下是我个人制作的一个作品与写项目的过程。

我们用到了8个pictureBox控件和一个button,设置好大小,并且编排成一个九宫个形状

添加窗体的背景图片,并添加button的背景图片和文字“抽奖”,可以将pictureBox的BorderStyle设置为Fixed3D这样更美观。

以下是代码

 public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

         , rd, cnt = , a = ;
         PictureBox[] pic = ];   //定义一个PictureBox的数组

         private void Form1_Load(object sender, EventArgs e)
         {
             ;
             ;
             foreach (Control picB in this.Controls)         //遍历窗体中所有PictureBox,并将窗体的PictureBox加入数组中
             {
                 if (picB.GetType() == typeof(PictureBox))
                 {
                     pic[i] = (PictureBox)picB;
                     i++;
                 }
             }
             //将奖品的图片加载进对应的PictureBox中
             pictureBox1.ImageLocation = @"image/奖品1.jpg";
             pictureBox2.ImageLocation = @"image/奖品2.jpg";
             pictureBox3.ImageLocation = @"image/奖品3.jpg";
             pictureBox4.ImageLocation = @"image/奖品4.jpg";
             pictureBox5.ImageLocation = @"image/奖品5.jpg";
             pictureBox6.ImageLocation = @"image/奖品6.jpg";
             pictureBox7.ImageLocation = @"image/奖品7.jpg";
             pictureBox8.ImageLocation = @"image/奖品8.jpg";

         }
         bool b = true;
         private void button1_Click_1(object sender, EventArgs e)    //打开定时器,并生成一个随机数
         {
             timer1.Enabled = true;
             Random r = new Random();
             rd = r.Next(, );
             )                         //判断是否是第一次进行抽奖,因为第一次pictureBox大小,位置都是默认的,第二次将是改变的,我们需要恢复
             {
                 if (b == true)
                 {
                     b = false;
                     return;
                 }
                 pic[cnt].Location = , pic[cnt].Location.Y + );
             }

         }

         private void timer1_Tick(object sender, EventArgs e)
         {

              == )                           //定义一个变量,判断是否是2的倍数,从而实现PictureBox大小的动态变化
             {
                 pic[cnt].Size = , );     //改变PictureBox的大小
                 pic[cnt].BackColor = Color.Red;
                 pic[cnt].Location = , pic[cnt].Location.Y - ); //改变pictureBox的位置,让它处于原图片的中间位置
                 a++;
             }
              == )
             {
                 pic[cnt].Size = , );
                 pic[cnt].Location = , pic[cnt].Location.Y + ); //恢复原位置,以及大小
                 cnt++;
                 a++;
             }
             )
             {
                 cnt = ;
             }
              == )                 //判断生成的随机a的值是否比生成的随机数大,并将对应PictureBox变大,然后停止
             {

                 a = ;
                 timer1.Enabled = false;
                 switch (cnt)                                     //转盘停止后判断奖品是什么,并弹出对话框提示用户
                 {
                     : MessageBox.Show("恭喜您,中奖了!奖品是一部手机"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是一副耳机"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是5元代金券"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是一个蓝牙音箱"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是精美礼品一份"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是笔记本电脑一台"); break;
                     : MessageBox.Show("恭喜您,中奖了!奖品是遥控飞机一架"); break;
                     : MessageBox.Show("谢谢参与"); break;
                     default: break;
                 }

             }
         }
     }

以上为个人想法,大家如有个好的点子评论留言哟

利用C# 窗体设计 写一个抽奖游戏的更多相关文章

  1. 利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客挖掘机 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  2. Python 写一个俄罗斯方块游戏

    使用 Python 的 PyGame 库写一个俄罗斯方块游戏的逐步指南 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人 ...

  3. JavaScript写一个拼图游戏

    拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)?  因为图片是一整张jpg或 ...

  4. Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互

    框架的东西太复杂也难以讲通,直接上代码: 一.首先得配置环境 和导入必要的jar包 有一些重要的如下: Filter文件夹下的SafetyFilter.java   model文件夹下的 Global ...

  5. 利用SpringBoot+Logback手写一个简单的链路追踪

    目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...

  6. 【编程教室】PONG - 100行代码写一个弹球游戏

    大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...

  7. 如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

    OK, 废话不多说,这些天在写C#代码时突然对于IDE提示有了一些想法,之前也有了解过,不过并没有深入. 先看个截图: 一段再简单不过的代码了,大家注意看到 count 字段下面的绿色波浪线了吗,我们 ...

  8. (二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

    上一篇我们讲了如何建立一个简单的Roslyn分析项目如分析检查我们的代码. 今天我们主要介绍各个项目中具体的作用以及可视化分析工具. 还是这种截图,可以看到解决方案下一共有三个项目. Analyzer ...

  9. 用C++基础语句写一个五子棋游戏

    (这是一个颜色会变化的呦) #include <iostream> using namespace std; int b[][]; int n; int m; void qipan() { ...

随机推荐

  1. C#类继承中构造函数的执行序列

    不知道大家在使用继承的过程中有木有遇到过调用构造函数时没有按照我们预期的那样执行呢?一般情况下,出现这样的问题往往是因为类继承结构中的某个基类没有被正确实例化,或者没有正确给基类构造函数提供信息,如果 ...

  2. git添加秘钥提示Key is already in use

    种种原因,需要修改git账号的秘钥. 操作如下: 1.删除系统上.ssh下的known_hosts文件  (一般在这个路径下C:\Users\Administrator\.ssh)如果账号不是Admi ...

  3. 工具(5): 极简开发文档编写(How-to)

    缘起 一个合格的可维护项目,必须要有足够的文档,因此一个项目开发到一定阶段后需要适当的编写文档.项目的类型多种多样,有许多项目属于内部项目,例如一个内部的开发引擎,或者一个本身就是面向开发者的项目. ...

  4. linux 下安装 php kafka 扩展

    我们使用官方推荐 php kafka 扩展 phpkafka,由于该扩展是基于 librdkafka 开发,所以我们首先需要安装 librdkafka 下载地址:http://kafka.apache ...

  5. eclipse中查看字节码

    1:在线安装ByteCode插件 打开Eclipse Go to"Help -> Install new Software... -> Work with:"中选择By ...

  6. CentOS 安装 Ansible 以及连接Windows server的办法

    1. CentOS机器上面按住那ansible yum install ansible 2. 安装 pywinrm  如果不安装 这个的话  ansible 会提示 没有 winrm 模块 注意需要先 ...

  7. mysql 小结

    Mariadb proxy maxscale01.test.com maxscale02.test.com Mariadb Galera Cluster db01.test.com db02.test ...

  8. pdfplumber库解析pdf格式

    参考地址:https://github.com/jsvine/pdfplumber 简单的pdf转换文本: import pdfplumber with pdfplumber.open(path) a ...

  9. Comet OJ - Contest #1

    A:随便怎么暴力. #include<bits/stdc++.h> using namespace std; #define ll long long #define N 25 char ...

  10. 工厂模式如何返回Spring的Bean

    工厂返回的可以是一个具体的对象,比如造一辆车,可以返回一个自行车对象,或者汽车对象. 但是在Spring 中需要工厂返回一个具体的Service,这就是一个抽象工厂了 一种方法是反射,个人觉得这种方式 ...