⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 一个类似乒乓球的游戏
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Air Hockey"
   ClientHeight    =   6225
   ClientLeft      =   6135
   ClientTop       =   2505
   ClientWidth     =   3495
   LinkTopic       =   "Form1"
   ScaleHeight     =   6225
   ScaleWidth      =   3495
   Begin VB.HScrollBar cpu 
      Height          =   255
      LargeChange     =   20
      Left            =   720
      Max             =   150
      Min             =   30
      SmallChange     =   5
      TabIndex        =   2
      Top             =   5880
      Value           =   70
      Width           =   2775
   End
   Begin VB.Timer Timer1 
      Interval        =   1
      Left            =   2280
      Top             =   1560
   End
   Begin VB.PictureBox Picture1 
      Height          =   5775
      Left            =   0
      ScaleHeight     =   5715
      ScaleWidth      =   3435
      TabIndex        =   0
      Top             =   0
      Width           =   3495
      Begin VB.Shape paddle2 
         FillColor       =   &H00FF0000&
         FillStyle       =   0  'Solid
         Height          =   255
         Left            =   600
         Shape           =   3  'Circle
         Top             =   240
         Width           =   255
      End
      Begin VB.Line Line3 
         BorderWidth     =   10
         X1              =   1320
         X2              =   2160
         Y1              =   0
         Y2              =   0
      End
      Begin VB.Line Line2 
         BorderWidth     =   10
         X1              =   1320
         X2              =   2160
         Y1              =   5640
         Y2              =   5640
      End
      Begin VB.Shape paddle1 
         FillColor       =   &H000000FF&
         FillStyle       =   0  'Solid
         Height          =   255
         Left            =   1200
         Shape           =   3  'Circle
         Top             =   4800
         Width           =   255
      End
      Begin VB.Shape puck 
         FillStyle       =   0  'Solid
         Height          =   255
         Left            =   600
         Shape           =   3  'Circle
         Top             =   3360
         Width           =   255
      End
      Begin VB.Line Line1 
         X1              =   0
         X2              =   3480
         Y1              =   2880
         Y2              =   2880
      End
      Begin VB.Label Scorered 
         Caption         =   "0"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   18
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00000080&
         Height          =   375
         Left            =   2880
         TabIndex        =   4
         Top             =   3000
         Width           =   375
      End
      Begin VB.Label Scoreblue 
         Caption         =   "0"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   18
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H8000000D&
         Height          =   375
         Left            =   2880
         TabIndex        =   3
         Top             =   2400
         Width           =   375
      End
   End
   Begin VB.Label Label1 
      Caption         =   "CPU skill"
      Height          =   375
      Left            =   0
      TabIndex        =   1
      Top             =   5880
      Width           =   735
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim puckx As Single, pucky As Single, vpuckx As Single, vpucky As Single
Dim padx1 As Single, padx2 As Single, pady1 As Single, pady2 As Single
Dim pad2x1 As Single, pad2x2 As Single, pad2y1 As Single, pad2y2 As Single
Dim touche As Boolean, touche1 As Boolean
Dim gagne As Boolean
Private Sub Form_Load()
Picture1.MousePointer = 2
puckx = puck.Left
pucky = puck.Top
vpuckx = 0
vpucky = 200
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
paddle1.Left = X - 120
paddle1.Top = max(Y - 120, Line1.Y1)
End Sub
Function max(ByVal a As Single, ByVal b As Single)
If a > b Then
    max = a
    Else
    max = b
End If
End Function
Function min(ByVal a As Single, ByVal b As Single)
If a > b Or a < 0 Then
    min = b
    Else
    min = a
End If
End Function

Private Sub Timer1_Timer()
Dim a As Single
If gagne = True Then
    vpuckx = 100
    vpucky = 0
    If pucky < 100 Then
        Scorered.Caption = Scorered.Caption + 1
        MsgBox max(Scorered.Caption, Scoreblue.Caption) & " to " & min(Scorered.Caption, Scoreblue.Caption), vbDefaultButton1, "Red goal"
        
        Else
        Scoreblue.Caption = Scoreblue.Caption + 1
        MsgBox max(Scorered.Caption, Scoreblue.Caption) & " to " & min(Scorered.Caption, Scoreblue.Caption), vbDefaultButton1, "Blue goal"
    End If
    pucky = Line1.Y1
    gagne = False
    Exit Sub
End If
If vpucky > 0 Or Abs(vpucky) < 15 Then
    touche = False
    Else
    touche1 = False
End If
If puckx < 0 Then
    Beep
    vpuckx = -0.8 * vpuckx
    puckx = -puckx
End If
If pucky < 0 Then
    If puckx < Line3.X2 And puckx > Line3.X1 Then
        gagne = True
        Exit Sub
    End If
    Beep
    vpucky = -0.8 * vpucky
    pucky = -pucky
End If
If puckx > 3200 Then
    Beep
    vpuckx = -0.8 * vpuckx
    puckx = 2 * 3200 - puckx
End If
If pucky > 5480 Then
    If puckx < Line3.X2 And puckx > Line3.X1 Then
        gagne = True
        Exit Sub
    End If
    Beep
    vpucky = -0.8 * vpucky
    pucky = 2 * 5480 - pucky
End If
puckx = puckx + vpuckx
pucky = pucky + vpucky
puck.Left = puckx
puck.Top = pucky
padx1 = padx2
pady1 = pady2
pad2x1 = pad2x2
pad2y1 = pad2y2
padx2 = paddle1.Left
pady2 = paddle1.Top
If puckx > pad2x2 Then
    paddle2.Left = paddle2.Left + min(vpuckx, cpu.Value)
    Else
    paddle2.Left = paddle2.Left - min(Abs(vpuckx), cpu.Value)
End If
pad2x2 = paddle2.Left
If pucky < Line1.X1 And vpucky < 20 Then
    If pad2y2 - pucky > -240 Then
        paddle2.Top = paddle2.Top - 240
        pad2y2 = paddle2.Top
        Else
        paddle2.Top = paddle2.Top + 100
        pad2y2 = paddle2.Top
    End If
    Else
    If pucky < 500 And pucky > pad2y2 Then
        paddle2.Top = paddle2.Top + 100
        pad2y2 = paddle2.Top
        Else
        If paddle2.Top > 0 Then
            paddle2.Top = paddle2.Top - 120
            pad2y2 = paddle2.Top
        End If
    End If
End If

If Not (touche) And ((puckx - padx2) ^ 2 + (pucky - pady2) ^ 2) ^ (1 / 2) < 240 Then
    a = 240 / ((puckx - padx2) ^ 2 + (pucky - pady2) ^ 2) ^ (1 / 2)
    puckx = padx2 + a * (puckx - padx2)
    pucky = pady2 + a * (pucky - pady2)
    Beep
    touche = True
    nvitesse vpuckx, vpucky, puckx - padx2 + 0.05, pady2 - pucky
    vpuckx = vpuckx + (padx2 - padx1) * Abs(puckx - padx2) / 240
    vpucky = vpucky + (pady2 - pady1) * Abs(pucky - pady2) / 240
End If
If Not (touche1) And ((puckx - pad2x2) ^ 2 + (pucky - pad2y2) ^ 2) ^ (1 / 2) < 240 Then
    a = 240 / ((puckx - padx2) ^ 2 + (pucky - pady2) ^ 2) ^ (1 / 2)
    puckx = pad2x2 + a * (puckx - pad2x2)
    pucky = pad2y2 + a * (pucky - pad2y2)
    Beep
    touche1 = True
    nvitesse vpuckx, vpucky, puckx - pad2x2 + 0.05, pad2y2 - pucky
    vpuckx = vpuckx + (pad2x2 - pad2x1) * Abs(puckx - pad2x2) / 240
    vpucky = vpucky + (pad2y2 - pad2y1) * Abs(pucky - pad2y2) / 240
End If
End Sub
Sub nvitesse(vx As Single, vy As Single, dx As Single, dy As Single)
Dim angle As Single
Dim vx1, vy1 As Single
angle = Atn(dy / dx)
vx1 = vy * Cos(angle) + vx * Sin(angle)
vy1 = vy * Sin(angle) - vx * Cos(angle)
vx = vx1 * Sin(angle) + vy1 * Cos(angle)
vy = vx1 * Cos(angle) - vy1 * Sin(angle)
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -