'
[email protected]'!!!先把Form1的BorderStyle属性设为0-None
Option Explicit
Option Base 1
Dim WithEvents Tim As Timer '定时器
Dim CmdTxt$(12), CmdA!(6, 2), Ctr(8) As Byte, CmdRGB(0 To 6, 3) As Byte '窗体按钮相关,分别是显示字符,地址,"控制开关",颜色...
'ctr(6)=1时计时器interval=0,ctr(7)=1时,按下方向键无效
Dim r! '步距(蛇身宽度)
Dim Word$() '蛇身
Dim A!() '蛇身的地址
Dim ColorPoint() As Byte, wRGB() As Byte '用于指示和存储字符对象的颜色
Dim PNum% '实时显示字符数
Dim DirCode% '决定着蛇头的运动方向
Dim Txt$ '句子(决定蛇长)
Dim row As Byte, col As Byte '行,列数(决定窗口内最多能容纳多少蛇身字符)
Dim WordSize As Integer '字体大小(也决定了窗口总尺寸大小),(窗体大小=wordsize*r*行,列数)
Sub GameOver(t As String)
Ctr(8) = 1
Me.FontSize = WordSize * 1.5
Me.ForeColor = vbRed
If Me.TextWidth(t) <= Me.Width Then
CurrentX = (Me.Width - Me.TextWidth(t)) / 2
CurrentY = (Me.Height - Me.TextHeight(t)) / 2
Print t
Else
Dim n As Byte
CurrentY = (Me.Height - Me.TextHeight(t)) / 2 - Me.TextHeight(t)
For n = 1 To Len(t)
If CurrentX + Me.TextWidth(Mid(t, n, 1)) < Me.Width Then
Print Mid(t, n, 1);
Else
CurrentX = 0
CurrentY = CurrentY + r * 2
Print Mid(t, n, 1);
End If
Next
End If
End Sub
Sub SetSnake() '创建一条蛇
Dim t$, n%, i As Byte
Me.FontSize = WordSize
r = Me.TextHeight("蛇") '步距大小(字高)
Me.Width = r * col: Me.Height = r * row '场地大小
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 '居中显示
CmdA(1, 1) = 0: CmdA(1, 2) = Me.Height - r * 1.5 * 2 '//设置按钮在屏幕上显示的地址:
CmdA(2, 1) = 0: CmdA(2, 2) = Me.Height - r * 1.5
CmdA(3, 1) = Me.Width - r * 1.5: CmdA(3, 2) = 0
CmdA(4, 1) = Me.Width - r * 1.5: CmdA(4, 2) = r * 1.5
CmdA(5, 1) = Me.Width - r * 1.5: CmdA(5, 2) = r * 3
CmdA(6, 1) = CmdA(5, 1): CmdA(6, 2) = CmdA(5, 2)
Do '//句子输入 (输入的这句话将化为蛇身):
t = Trim(InputBox("游戏开始前,请您先在下框中输入一句话吧:" & Chr(13) & "[或者随便复制一段文本粘贴到下框中]" & Chr(13) & Chr(13) & "[▲若想让字符以不同的颜色显示,请用空格隔开]", "游戏开始前", "I LOVE YOU FOREVER ☆"))
Txt = Replace(t, " ", "") '去除所有空格
If Txt = "" Then
End
ElseIf Len(Txt) < 3 Then
n = MsgBox(Len(Txt) & "个字符也太少了点吧,这句话至少要由3个字符组成(不计空格)" & Chr(13) & Chr(13) & " >>> 请您重新输入 <<<", 0, "提示")
End If
Loop While Len(Txt) < 3
For n = 1 To Len(t) '//去除句子中多余的空格:
t = Replace(t, " ", " ")
Next
t = t & " "
ReDim Word$(Len(Txt)), A!(Len(Txt), 2), wRGB(Len(t) - Len(Txt), 3) As Byte, ColorPoint(Len(t) - Len(Txt)) As Byte '划分内存空间
i = 0 '//蛇身颜色指示器:
For n = 1 To Len(t)
If Mid(t, n, 1) = " " Then
i = i + 1
ColorPoint(i) = n - i