十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我用多线程写的,你可以参考下。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了玛曲免费建站欢迎大家使用!
系统界面图如下:(注:重置功能为清除已经中奖号码,回归1-100都可以中奖状态。)
代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Threading.Thread g_Thread = null;
Listint g_list = new Listint();
int g_Num = 0;
delegate void g_delegate();
/// summary
/// 开始
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void button2_Click(object sender, EventArgs e)
{
if(g_list.Count==100)
{
MessageBox.Show("所有数字已使用,请重置!");
return;
}
button3.Enabled = true;
Random r = new Random();
g_delegate dele= ChangeTxt;
g_Thread = new System.Threading.Thread(() =
{
while(this.IsDisposed==false)
{
g_Num = r.Next(1, 100);
if(g_list.Contains(g_Num))
{
g_Num = 1;
}
while(g_list.Contains(g_Num))
{
g_Num++;
}
this.Invoke(dele);
System.Threading.Thread.Sleep(50);
}
});
g_Thread.Start();
}
void ChangeTxt()
{
label2.Text = g_Num.ToString();
}
/// summary
/// 停止
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void button3_Click(object sender, EventArgs e)
{
//if(g_Thread.ThreadState==System.Threading.ThreadState.Running)
{
g_Thread.Abort();
g_list.Add(Convert.ToInt32(label2.Text));
}
button3.Enabled = false;
}
/// summary
/// 重置
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void button1_Click(object sender, EventArgs e)
{
g_list.Clear();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
System.Environment.Exit(0);
}
}
这是一个转盘 转到的位置是随机的 具体奖品需要你自己定 我就不帮你了..... 这一句 If c 95 Then Timer1.Interval = 0 这个95 改的越小 停的越快,转到的位置重复的几率也就越大 . 代码细看看, 数值都是活的 可以根据自己需要改.
'添加控件 timer1 command1 line1
Dim x1%, y1%
Dim a As String
Private Sub Command1_Click()
a = 0
Timer1.Interval = 50
End Sub
Private Sub form_load()
Me.AutoRedraw = True
x1 = Me.Width \ 2
y1 = (Me.Height - 405) \ 2
Line1.x1 = x1: Line1.y1 = y1
Me.DrawWidth = 5
Me.Circle (x1, y1), 3000
Line1.BorderWidth = 5
Line1.BorderColor = QBColor(14)
End Sub
Private Sub Timer1_Timer()
Randomize
c = Int((100) * Rnd + 1)
a = a + 1
If a 24 Then Timer1.Interval = 100
If a 40 Then Timer1.Interval = 200
If a 48 Then
Timer1.Interval = 300
If c 95 Then Timer1.Interval = 0
End If
b = (3.14 / 8) * a
Line1.X2 = Line1.x1 + (3000 * Sin(b))
Line1.Y2 = Line1.y1 - (3000 * Cos(b))
End Sub
把你的代码发出来。
你这种方式的程序只能弄一等奖吧,为什么会有二等奖三等奖?
获奖次数跟电话号码什么关系,为什么不能重复?同一个号码不能多次获奖?那就不是重复的问题,你的提问有些不清不楚。
暂定的解决方案——
把随机生成的电话号码,赋值给公共数组,如果公共数组中存在新生成的电话号码,那么重新生成电话号码,如果电话号码不在数组中存在,那么将电话号码加入到数组中。重复以上过程,直至喊停。