www.pudn.com > ppqiu.zip > Form1.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