求教学VB2008 数字金字塔&红绿灯[已解决]

Home Home
引用 | 编辑 a0910980869
2009-12-08 16:48
楼主
推文 x2
这两题我不知该怎么着手请大大帮帮我!!
题目如下:
一、写一个程式显示如下的金字塔图案:
             
需要的物件有:Label *1
   
二、请用Light01.gif~Light03.gif( 、 、   )
写一个灯 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 x09818
2009-12-11 11:08
1楼
  
题目分析:
我把结果分成3段

1.填补空白:因为有15层所以第一行填补15-1=14个.第二行填补15-2=13个...以此类推~
解:程式04-07行以一个回圈 由1到 (n-i) 来填补空白~
2.产生顺向字串:第一行1个.第二行2个....~
解:程式08行~利用行数取个位数~累加形成
3.产生反向字串:第一行0个.第二行1个....~
解:利用顺向字串少取1位重复字[Mid(tempstr, 1, Len(Str(tempstr)) - 2)].再作字串反转[StrReverse]即可.

复制程式
 
01        Dim n As Integer = 15 
02        Dim tempstr As String = "" 
03        Label1.Text = "" 
04        For i As Integer = 1 To n 
05            For j As Integer = 1 To (n - i) 
06                Label1.Text &= "  " 
07            Next 
08            tempstr &= Mid(Str(i), Len(Str(i)), 1) 
09            Label1.Text &= tempstr & StrReverse(Mid(tempstr, 1, Len(Str(tempstr)) - 2)) & vbCrLf 
10        Next 


如果Label1属性text预设为空白 则第3行可以省略
如果Label1属性textalign预设为topcenter 则第5~7行可以省略
如果预设只有15层 则第1行可以省略 变数n改为15
反之~要9层..则第1行=15改为=9

ps.大于15层.因为字串长度计算会出问题「字串长度计算因素」~至于为何~请高手详解吧~
另依照题目分析.程式也可以用阵列下去写~请各位同学练习吧~
个人解法~请先进指导~

本帖包含附件
档名: zip 1.rar   (2022-06-09 14:13 / 10 KB)  
执行结果
下载次数:38


献花 x1
引用 | 编辑 x09818
2009-12-11 11:45
2楼
  
依照你的题目解
直接一步一步驱动timer就好~

程式原码有点长.不过可以设定到小时.分.秒.毫秒.
而且是倒数~
复制程式
    Dim hour, minisec, sec, min As Integer
    Private Sub Form3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        hour = 0
        min = 0
        sec = 5
        minisec = 0
        Timer1.Enabled = True
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Enabled = True
        minisec -= 1
        If minisec < 0 Then
            sec -= 1 : minisec = 60
            If sec < 0 Then
                min -= 1 : sec = 59
                If min < 0 Then
                    hour -= 1 : min = 59
                    If hour < 0 Then hour = 0
                End If
            End If
        End If
        Label1.Text = sec + 1
        PictureBox1.Visible = True
        PictureBox2.Visible = False
        PictureBox3.Visible = False
        If hour = 0 And min = 0 And sec = 0 And minisec = 0 Then
            Timer1.Enabled = False
            sec = 3
            Timer2.Enabled = True
        End If
    End Sub
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Timer2.Enabled = True
        minisec -= 1
        If minisec < 0 Then
            sec -= 1 : minisec = 60
            If sec < 0 Then
                min -= 1 : sec = 59
                If min < 0 Then
                    hour -= 1 : min = 59
                    If hour < 0 Then hour = 0
                End If
            End If
        End If
        Label1.Text = sec + 1
        PictureBox1.Visible = False
        PictureBox2.Visible = True
        PictureBox3.Visible = False
        If hour = 0 And min = 0 And sec = 0 And minisec = 0 Then
            Timer2.Enabled = False
            sec = 6
            Timer3.Enabled = True
        End If
    End Sub
    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        Timer3.Enabled = True
        minisec -= 1
        If minisec < 0 Then
            sec -= 1 : minisec = 60
            If sec < 0 Then
                min -= 1 : sec = 59
                If min < 0 Then
                    hour -= 1 : min = 59
                    If hour < 0 Then hour = 0
                End If
            End If
        End If
        Label1.Text = sec + 1
        PictureBox1.Visible = False
        PictureBox2.Visible = False
        PictureBox3.Visible = True
        If hour = 0 And min = 0 And sec = 0 And minisec = 0 Then
            Timer3.Enabled = False
            sec = 5
            Timer1.Enabled = True
        End If
    End Sub
请同学一起练习~

ps. timer属性interval设为1「如此才能动作到毫秒」
预设PictureBox1-3分别为红.黄.绿灯图片.属性Visible预设为False

本帖包含附件
档名: zip 2.rar   (2022-06-09 14:13 / 12 KB)  
执行结果
下载次数:64


献花 x0
引用 | 编辑 saisai123321
2010-05-04 10:12
3楼
  
有冇console ge 写

献花 x0