| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2755 人关注过本帖
标题:35+男爸,以前学的是basic,看到个智力小游戏,用Qbasic实现了(提供源程序) ...
只看楼主 加入收藏
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
二月.....

我比你大几天。。。。。。。

授人于鱼,不如授人于渔
早已停用QQ了
2012-10-19 14:10
yahooglz
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-10-18
收藏
得分:0 
风吹过b兄,经测试,还有点小问题。
1、如果刚好是第8次猜出来,会出现
"不好意思,在8次机会里您都没有猜对这个数字,真遗憾!这个数字是" 这句话,8次以内猜对没问题。
2、一开始随机生成的数字会有 0519 这个可能,没有对四位数进行判断.
3、求你了,用窗体,用Text.做吧,我百度了,VB下了,细细看了,亮瞎了!!!全是响应!!!
2012-10-19 14:59
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
一个最接近原效果的带窗体的
原程序算法完全一样,只做了个仿qb中input效果的iInput函数(本想也做个仿locate和color的),为照顾楼主,把窗体的字体设为4号字,应该足够了,楼主也可以在设计时更改字体大小。
新建一工程,窗体大小为width=12300,height=6705(可更改),在窗体中放一个timer控件timer1,一个textbox控件text1,拷贝下列代码,编译运行即可。

Dim kAsc As Integer, startY As Integer

Private Sub Form_KeyPress(KeyAscii As Integer)
  kAsc = KeyAscii
End Sub

Private Sub Form_Load()
  Me.BackColor = 0
  Me.ForeColor = &HFFFFFF
  kAsc = -1
  Timer1.Interval = 500
  Text1.FontSize = Me.FontSize
  Text1.Height = Text1.FontSize * 15
End Sub
Function abcd()
loop2: Cls
'Color 6
'LOCATE 3, 10
Print "   欢迎您,让我们来玩猜数字游戏吧!现在我有一个四位数,您可以猜8次。"
Print "   记住,这个四位数每个数位上的数字是不相同的。"
Print "   还有,您每猜测一次,我都会给出一个提示的,好好利用提示,"
Print "   您肯定会胜利的,把脑筋动起来吧!"
Print "   提示方法:A和B,A表示您猜的数字中有一个数位上的数字与答案的"
Print "   数位相同,数字也相同。B表示您猜的数字中有一个数字与答案中的一个"
Print "   数字相同,但数位不对。"
Print "   例子:比如答案是1234,你猜5243,我给出的提示就是1A2B,1A表示有一个数字对了(指百位上的2),"
Print "   2B表示有两个数字对了(指3和4),但数位不对,您明白了吗?"
'Color 7
Print "   那让我们开始吧!"
loop10: Randomize Timer
a = 0
b = 0
c = 0
d = 0
k = 0
a = Int(Rnd * 10)
b = Int(Rnd * 10)
c = Int(Rnd * 10)
d = Int(Rnd * 10)
If a <> b And a <> c And a <> d And b <> c And b <> d And c <> d Then e = 1000 * a + 100 * b + 10 * c + d Else GoTo loop10
'Color 11
Print "   现在我有这个四位数了。", e
startY = Me.CurrentY
loop5: k = k + 1
If k = 9 Then GoTo loop100
loop20: Print "   这是您第"; k; "次猜数,您猜猜是多少?"
'Color 11
z = Val(iInputBox("请输入:"))
If z < 1000 Or z > 9999 Then Print "   您输入错误了,记住,您要猜的是一个4个数字都不相同的四位数。请重新输入吧!": GoTo loop20
If z = e Then Print "   您太聪明能干了,您猜对了,这个数字就是"; e; "。": GoTo loop150
a1 = 0
b1 = 0
c1 = 0
d1 = 0
a1 = Int(z / 1000)
b1 = Int((z - a1 * 1000) / 100)
c1 = Int((z - a1 * 1000 - b1 * 100) / 10)
d1 = z - a1 * 1000 - b1 * 100 - c1 * 10
If a1 = b1 Or a1 = c1 Or a1 = d1 Or b1 = c1 Or b1 = d1 Or c1 = d1 Then Print "您输入错误了,记住,您要猜的是一个4个数字都不相同的四位数。请重新输入吧!": GoTo loop20
n = 0
m = 0
q = 0
w = 0
o = 0
r = 0
t = 0
y = 0
If a1 = a Then m = 1 Else If a1 = b Then n = 1 Else If a1 = c Then n = 1 Else If a1 = d Then n = 1
If b1 = a Then q = 1 Else If b1 = b Then w = 1 Else If b1 = c Then q = 1 Else If b1 = d Then q = 1
If c1 = a Then o = 1 Else If c1 = b Then o = 1 Else If c1 = c Then r = 1 Else If c1 = d Then o = 1
If d1 = a Then t = 1 Else If d1 = b Then t = 1 Else If d1 = c Then t = 1 Else If d1 = d Then y = 1
m1 = 0
n1 = 0
m1 = m + w + r + y
n1 = n + q + o + t
Print "   这是您第"; k; "次猜数,可惜了,不对,这次的提示是"; m1; "A"; n1; "B"
GoTo loop5
loop100: Print "   不好意思,在8次机会里您都没有猜对这个数字,真遗憾!这个数字是"; e; "。"
loop150: h$ = iInputBox("   重玩一次请输入(Y/y),不想玩了请输入(N/n)")
If h$ = "Y" Or h$ = "y" Then GoTo loop2 Else If h$ = "N" Or h$ = "n" Then GoTo loop200 Else Print "您输入错误,请重新输入!": GoTo loop150
loop200: End
End Function

Private Sub Form_Unload(Cancel As Integer)
  kAsc = 1
End Sub

Private Sub Timer1_Timer()
  Dim a As String
  Timer1.Interval = 0
  abcd
'  a = iInputBox("请输入:")
'  Print a
End Sub
Private Function iInputBox(a As String) As String
  Dim b As String, i As Integer, j As Integer
  If Me.CurrentY > Me.ScaleHeight - Me.FontSize * 15 Then
    Me.CurrentX = 0: Me.CurrentY = startY
    Line (Me.CurrentX, Me.CurrentY)-(Me.ScaleWidth, Me.ScaleHeight), 0, BF
    Me.CurrentX = 0: Me.CurrentY = startY
  End If
  Print a;
  b = "": i = Me.CurrentX: j = Me.CurrentY: Text1.Left = i: Text1.Top = j
  While kAsc <> 13
    While kAsc < 0
      DoEvents
    Wend
    If kAsc >= 0 Then
      If kAsc = 1 Then End
      If kAsc = 8 Then
        If Len(b) > 0 Then b = Left(b, Len(b) - 1)
      Else
        If kAsc > 40 Then b = b & Chr(kAsc)
      End If
      Me.Line (i, j)-(i + (Len(b) + 1) * Me.FontSize * 15, j + (Me.FontSize + 2) * 15), 0, BF
      Me.CurrentX = i: Me.CurrentY = j: Print b;: Text1.Left = Me.CurrentX: Text1.Visible = True
      If kAsc <> 13 Then kAsc = -2
    End If
  Wend
  iInputBox = b
  kAsc = -1
  Print
End Function

猜数字.rar (9.65 KB)
2012-10-20 16:34
yahooglz
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-10-18
收藏
得分:0 
33楼兄弟,结贴了才看见你,十分内疚!
2012-10-21 09:38
yahooglz
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-10-18
收藏
得分:0 
If a<>0 and a <> b And a <> c And a <> d And b <> c And b <> d And c <> d Then e = 1000 * a + 100 * b + 10 * c + d Else GoTo loop10

Print "   现在我有这个四位数了。"

两处要改改,前面要+上千位上的a 不能为零判断
print 这里不要出现答案了
收到的鲜花
  • Artless2012-10-22 13:55 送鲜花  1朵   附言:已经结贴, 还可以评分。
2012-10-21 09:46
yahooglz
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-10-18
收藏
得分:0 
还有个小问题,窗口的高度不够,第四次以后输入,前面的会消失,就看不见前面猜的过程和提示了
2012-10-21 09:55
yahooglz
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-10-18
收藏
得分:0 
哥几个,做好东西了都不测试一下的嘛?
2012-10-21 09:57
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
1.这边是编程论坛,不是编程大卖场。
2.估计您也只是为了解这问题,才注册这帐号,问完就消失的那种,所以费神解答你的问题没意义。
3.更何况你说明了你懒得学,那又何必浪费时间教,愿意教你怎搜代码你就要去拜拜了。
4.没人欠你的,更不是你花钱请的员工,还在线等勒。
5.回你,这样对另一个求上位机下位机的代码的网友公平吗,两套标准吗。
6.或许在别的领域占有一席之地,来别人地盘上也至少谦虚点,装个样子也行。
7.抱歉了,说鄙视过了点,但是也快了。
8.版主这2个字无形中让我很有压力,快帮我彻了吧,我只是存粹来学习的而已。

不要選我當版主
2012-10-21 17:51
快速回复:35+男爸,以前学的是basic,看到个智力小游戏,用Qbasic实现了(提供源程 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042002 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved