想用VB做一个抽奖程序,用手机号抽奖,滚动各个数字~~大侠帮忙呀!
手机号中的各个数字都是滚动的,能配背景音乐,不知道哪位大侠能帮帮忙不~~~或者有其他的方案也行,,谢谢啦。。。 --------------------编程问答-------------------- 这个简单啊
随机的整就行了 --------------------编程问答-------------------- 补充:这一串手机号是放在文本文件中的,每次启动时从文本文件中读取手机号 --------------------编程问答-------------------- 不过又是增加一个文件读取和数据分析而已…… --------------------编程问答--------------------
其实,抽奖算法就是随机数的应用,瞬间完成。
你在电视上看到滚动的那个,只是视觉噱头。你用 Timer 就可以实现这样的功能。
--------------------编程问答-------------------- --------------------编程问答-------------------- 随机取数 --------------------编程问答-------------------- 很厉害!不错呀!可是这会重复啊!怎么才能做到不重复出现呢? --------------------编程问答-------------------- 呵,我是不是有点笨哦,, --------------------编程问答-------------------- --------------------编程问答-------------------- 我的备选手机号为130个左右,
Loop Until i <> Combo1.ListIndex And i < Combo1.ListCount And Combo1.ItemData(i) = 0
这条语句会出现“无效属性数组索引”错误
怎么回事呢? --------------------编程问答-------------------- 有人回复不??? --------------------编程问答-------------------- 试试:
Do
Do
i = Rnd * Combo1.ListCount
Loop Until i < Combo1.ListCount
Loop Until i <> Combo1.ListIndex And Combo1.ItemData(i) = 0
Combo1.ListIndex = i
Combo1.ItemData(i) = 1
--------------------编程问答-------------------- 死循环哦,,%>_<%~~ --------------------编程问答-------------------- 是啊,都显示过了,就死循环了。所以说,你的手机号必须足够多。
1 秒种滚动 20 个,你那 130 个手机号也就滚 6.5 秒。
实际上,外层判断也不必检查是否与当前记录相同了,因为不允许重复:
Do
Do
i = Rnd * Combo1.ListCount
Loop Until i < Combo1.ListCount
Loop Until Combo1.ItemData(i) = 0
Combo1.ListIndex = i
Combo1.ItemData(i) = 1
要不,你就滚慢点儿。1 秒滚 5 个,够滚 26 秒。
不允许重复的问题,在于对先滚到的手机号,也就是已经看到的手机号不公平。因为停的时候,一定没他神马事了。
--------------------编程问答--------------------
很多问题,不在代码。
先用脑子想一想。
--------------------编程问答--------------------
还有,每次重新滚动之前,要将所有记录的 ItemData 清零:
For i = 0 To Combo1.ListCount - 1
Combo1.ItemData(i) = 0
Next i
--------------------编程问答-------------------- 使用随机数函数Rnd,必须设置随机种子randomize(),不然程序打开后会重复 --------------------编程问答-------------------- 其实我觉得这个本身设计是不是有点问题呀,是不是不要用Combobox。把所有数据读进来,让到一个数组里面去。
让这些手机号死命滚动,然后停,出现过一次的,就做个标记,下次不能再出现了,然后让剩余的再死命滚动,然后依此类推。。。这样公平吧~~ --------------------编程问答--------------------
你想用数组,当然可以。
不过,VB 的精髓就是使用控件来简化代码。
你觉得使用数组和 Combo 控件在逻辑上有什么本质的区别吗?Combo 的 ItemData 在这里就是标记。
看问题,要看本质,也就是逻辑。具体实现是次要的。
--------------------编程问答-------------------- --------------------编程问答-------------------- 添加音乐的话,再加一个 Windows MediaPlayer 控件,属性设置成隐藏,自定义里添加音乐文件的地址,设成自动启动,打开程序的话就自动播放了。 --------------------编程问答-------------------- 哇,大家都好厉害呀!!~ --------------------编程问答-------------------- 哇,大家都好厉害呀!!~
补充:VB , 基础类