VERSION 5.00 Begin VB.Form Form10 BorderStyle = 0 'なし Caption = "Form1" ClientHeight = 3195 ClientLeft = 0 ClientTop = 0 ClientWidth = 4680 LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 4680 ShowInTaskbar = 0 'False StartUpPosition = 3 'Windows の既定値 End Attribute VB_Name = "Form10" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Declare Function GetTickCount Lib "kernel32" () As Long Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long Dim objDX As New DirectX7 Dim objDD As DirectDraw7 Dim objDDSPrimary As DirectDrawSurface7 Dim objDDSSecondary As DirectDrawSurface7 Dim objDDSOffScreen As DirectDrawSurface7 Dim ddsd1 As DDSURFACEDESC2 Dim ddsd2 As DDSURFACEDESC2 Dim ddsd3 As DDSURFACEDESC2 Dim bExitLoop As Boolean Dim r As RECT Dim h As Integer Dim i As Integer Dim k As Integer Dim xx As Integer Dim yy As Integer Dim zz As Integer Dim mm As Integer Dim ss As Integer Dim a1 As Integer Dim a2 As Integer Dim a3 As Integer Dim b1 As Integer Dim b2 As Integer Dim b3 As Integer Dim c1 As Integer Dim c2 As Integer Dim c3 As Integer Dim xa As Integer Dim xb As Integer Dim ya As Integer Dim yb As Integer Dim xxa As Single Dim xxb As Single Dim zza As Single Dim zzb As Single Dim xxf As Single Dim zzf As Single Dim pi As Double Dim pi2 As Double Dim ddrval As Long Function MyPath() MyPath = App.Path If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" End If End Function Private Sub Form_Load() Set objDD = objDX.DirectDrawCreate("") Call objDD.SetCooperativeLevel(Me.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN) Call objDD.SetDisplayMode(640, 480, 8, 0, DDSDM_DEFAULT) ShowCursor (False) With ddsd1 .lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT .ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX .lBackBufferCount = 1 End With Set objDDSPrimary = objDD.CreateSurface(ddsd1) Dim ddcaps As DDSCAPS2 ddcaps.lCaps = DDSCAPS_BACKBUFFER Set objDDSSecondary = objDDSPrimary.GetAttachedSurface(ddcaps) objDDSSecondary.GetSurfaceDesc ddsd2 Dim ddsd3 As DDSURFACEDESC2 With ddsd3 .lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH .ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN .lHeight = ddsd2.lHeight .lWidth = ddsd2.lWidth End With Set objDDSOffScreen = objDD.CreateSurface(ddsd3) Call Randomize(GetTickCount()) Call InitHaikei Call Byoga Unload Me End End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single) bExitLoop = True End Sub Private Sub Form_Unload(Cancel As Integer) Call objDD.RestoreDisplayMode Call objDD.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL) ShowCursor (True) DoEvents Set objDDSOffScreen = Nothing Set objDDSSecondary = Nothing Set objDDSPrimary = Nothing Set objDD = Nothing Set objDX = Nothing End Sub Private Sub InitHaikei() With r .Top = 0 .Left = 0 .Right = 640 .Bottom = 480 End With Call objDDSOffScreen.BltColorFill(r, 0) For i = 0 To 100 xx = Int(Rnd() * 630) yy = Int(Rnd() * 200) Call objDDSOffScreen.SetForeColor(RGB(0, 255, 255)) Call objDDSOffScreen.DrawLine(xx, yy, xx + 1, yy) Next For i = 0 To 30 xx = Int(Rnd() * 630) yy = Int(Rnd() * 6) + 220 Call objDDSOffScreen.SetForeColor(RGB(255, 255, 0)) Call objDDSOffScreen.DrawLine(xx, yy, xx + 1, yy) Next For i = 0 To 100 xx = Int(Rnd() * 630) yy = Int(Rnd() * 6) + 226 Call objDDSOffScreen.SetForeColor(RGB(255, 255, 0)) Call objDDSOffScreen.DrawLine(xx, yy, xx + 1, yy) Next End Sub Private Sub Byoga() bExitLoop = False Dim t1 As Double Dim t2 As Double Dim t3 As Double xx = 0 mm = 5 t1 = GetTickCount() pi = 4 * Atn(1) pi2 = pi / 180 a1 = Int(Rnd() * 3) If a1 = 0 Then b1 = Int(Rnd() * 2) + 1 c1 = 0 a2 = Int(Rnd() * 30) + 3 b2 = Int(Rnd() * 12) + 6 c2 = Int(Rnd() * 30) + 3 Else b1 = 0 c1 = Int(Rnd() * 2) + 1 a2 = Int(Rnd() * 12) + 6 b2 = Int(Rnd() * 30) + 3 c2 = Int(Rnd() * 12) + 6 End If If a1 = 0 And b1 = 1 And c1 = 0 Then ss = 1 If a1 = 0 And b1 = 2 And c1 = 0 Then ss = 2 If a1 = 1 And b1 = 0 And c1 = 1 Then ss = 3 If a1 = 1 And b1 = 0 And c1 = 2 Then ss = 4 If a1 = 2 And b1 = 0 And c1 = 1 Then ss = 5 If a1 = 2 And b1 = 0 And c1 = 2 Then ss = 6 If a2 >= 20 Then a3 = 20: b3 = 0: c3 = 0 ElseIf (a2 + b2) >= 20 Then a3 = a2: b3 = 20 - a3: c3 = 0 Else a3 = a2: b3 = b2: c3 = 20 - (a3 + b3) End If Do While Not bExitLoop t2 = GetTickCount() t3 = t2 - t1 If t3 >= 60 Then Select Case ss Case 1 seisi pt1 Case 2 seisi pt2 Case 3 migi pt3 Case 4 migi pt4 Case 5 hidari pt5 Case 6 hidari pt6 End Select Call objDDSPrimary.Flip(Nothing, DDFLIP_WAIT) t1 = t2 mm = mm - 1 If mm <= 0 Then mm = 5 a2 = a2 - 1 End If If a2 <= 0 Then settei End If If a2 >= 20 Then a3 = 20: b3 = 0: c3 = 0 ElseIf (a2 + b2) >= 20 Then a3 = a2: b3 = 20 - a3: c3 = 0 Else a3 = a2: b3 = b2: c3 = 20 - (a3 + b3) End If End If DoEvents Loop End Sub Private Sub seisi() With r .Top = 0 .Left = xx .Right = 640 .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(0, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 0 .Left = 0 .Right = xx .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(640 - xx, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 240 .Left = 0 .Right = 640 .Bottom = 480 End With Call objDDSSecondary.BltColorFill(r, 0) End Sub Private Sub migi() xx = xx + 5 If xx >= 640 Then xx = 0 End If With r .Top = 0 .Left = xx .Right = 640 .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(0, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 0 .Left = 0 .Right = xx .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(640 - xx, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 240 .Left = 0 .Right = 640 .Bottom = 480 End With Call objDDSSecondary.BltColorFill(r, 0) End Sub Private Sub hidari() xx = xx - 5 If xx < 0 Then xx = 639 End If With r .Top = 0 .Left = xx .Right = 640 .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(0, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 0 .Left = 0 .Right = xx .Bottom = 240 End With ddrval = objDDSSecondary.BltFast(640 - xx, 0, objDDSOffScreen, r, DDBLTFAST_WAIT) With r .Top = 240 .Left = 0 .Right = 640 .Bottom = 480 End With Call objDDSSecondary.BltColorFill(r, 0) End Sub Private Sub settei() a1 = b1 a2 = b2 b1 = c1 b2 = c2 If a1 = 0 Then c1 = 0 c2 = Int(Rnd() * 30) + 3 Else c1 = Int(Rnd() * 2) + 1 c2 = Int(Rnd() * 12) + 6 End If If a1 = 0 And b1 = 1 And c1 = 0 Then ss = 1 If a1 = 0 And b1 = 2 And c1 = 0 Then ss = 2 If a1 = 1 And b1 = 0 And c1 = 1 Then ss = 3 If a1 = 1 And b1 = 0 And c1 = 2 Then ss = 4 If a1 = 2 And b1 = 0 And c1 = 1 Then ss = 5 If a1 = 2 And b1 = 0 And c1 = 2 Then ss = 6 End Sub Private Sub pt1() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = -4 / k * 320 + 320 ya = 2 / k * 320 + 240 xb = 4 / k * 320 + 320 yb = 2 / k * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then zz = mm + (a3 - 1) * 5 For k = 5 To b3 * 5 Step 5 xa = ((54 - Cos(k * pi2) * 58) / (Sin(k * pi2) * 58 + zz)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 58 + zz)) * 320 + 240 xb = ((54 - Cos(k * pi2) * 50) / (Sin(k * pi2) * 50 + zz)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 50 + zz)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then h = b3 * 5 xxa = 54 - Cos(h * pi2) * 58 zza = Sin(h * pi2) * 58 + zz xxb = 54 - Cos(h * pi2) * 50 zzb = Sin(h * pi2) * 50 + zz xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To c3 xa = ((xxa + xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb + xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub Private Sub pt2() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = -4 / k * 320 + 320 ya = 2 / k * 320 + 240 xb = 4 / k * 320 + 320 yb = 2 / k * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then zz = mm + (a3 - 1) * 5 For k = 5 To b3 * 5 Step 5 xa = ((-54 + Cos(k * pi2) * 50) / (Sin(k * pi2) * 50 + zz)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 50 + zz)) * 320 + 240 xb = ((-54 + Cos(k * pi2) * 58) / (Sin(k * pi2) * 58 + zz)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 58 + zz)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then h = b3 * 5 xxa = -54 + Cos(h * pi2) * 50 zza = Sin(h * pi2) * 50 + zz xxb = -54 + Cos(h * pi2) * 58 zzb = Sin(h * pi2) * 58 + zz xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To c3 xa = ((xxa - xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb - xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub Private Sub pt3() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = ((54 - Cos(k * pi2) * 58) / (Sin(k * pi2) * 58)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 58)) * 320 + 240 xb = ((54 - Cos(k * pi2) * 50) / (Sin(k * pi2) * 50)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 50)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then h = mm + (a3 - 1) * 5 xxa = 54 - Cos(h * pi2) * 58 zza = Sin(h * pi2) * 58 xxb = 54 - Cos(h * pi2) * 50 zzb = Sin(h * pi2) * 50 xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To b3 xa = ((xxa + xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb + xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then xxf = xxa + xxf * b3 + Cos(h * pi2) * 58 zzf = zza + zzf * b3 - Sin(h * pi2) * 58 For k = 1 To c3 xa = (xxf - Cos((h + k * 5) * pi2) * 58) / (zzf + Sin((h + k * 5) * pi2) * 58) * 320 + 320 ya = 2 / (zzf + Sin((h + k * 5) * pi2) * 58) * 320 + 240 xb = (xxf - Cos((h + k * 5) * pi2) * 50) / (zzf + Sin((h + k * 5) * pi2) * 50) * 320 + 320 yb = 2 / (zzf + Sin((h + k * 5) * pi2) * 50) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub Private Sub pt4() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = ((54 - Cos(k * pi2) * 58) / (Sin(k * pi2) * 58)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 58)) * 320 + 240 xb = ((54 - Cos(k * pi2) * 50) / (Sin(k * pi2) * 50)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 50)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then h = mm + (a3 - 1) * 5 xxa = 54 - Cos(h * pi2) * 58 zza = Sin(h * pi2) * 58 xxb = 54 - Cos(h * pi2) * 50 zzb = Sin(h * pi2) * 50 xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To b3 xa = ((xxa + xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb + xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then xxf = xxa + xxf * b3 - Cos(h * pi2) * 50 zzf = zza + zzf * b3 + Sin(h * pi2) * 50 For k = 1 To c3 xa = (xxf + Cos((h - k * 5) * pi2) * 50) / (zzf - Sin((h - k * 5) * pi2) * 50) * 320 + 320 ya = 2 / (zzf - Sin((h - k * 5) * pi2) * 50) * 320 + 240 xb = (xxf + Cos((h - k * 5) * pi2) * 58) / (zzf - Sin((h - k * 5) * pi2) * 58) * 320 + 320 yb = 2 / (zzf - Sin((h - k * 5) * pi2) * 58) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub Private Sub pt5() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = ((-54 + Cos(k * pi2) * 50) / (Sin(k * pi2) * 50)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 50)) * 320 + 240 xb = ((-54 + Cos(k * pi2) * 58) / (Sin(k * pi2) * 58)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 58)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then h = mm + (a3 - 1) * 5 xxa = -54 + Cos(h * pi2) * 50 zza = Sin(h * pi2) * 50 xxb = -54 + Cos(h * pi2) * 58 zzb = Sin(h * pi2) * 58 xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To b3 xa = ((xxa - xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb - xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then xxf = xxa - xxf * b3 + Cos(h * pi2) * 58 zzf = zza + zzf * b3 + Sin(h * pi2) * 58 For k = 1 To c3 xa = (xxf - Cos((h - k * 5) * pi2) * 58) / (zzf - Sin((h - k * 5) * pi2) * 58) * 320 + 320 ya = 2 / (zzf - Sin((h - k * 5) * pi2) * 58) * 320 + 240 xb = (xxf - Cos((h - k * 5) * pi2) * 50) / (zzf - Sin((h - k * 5) * pi2) * 50) * 320 + 320 yb = 2 / (zzf - Sin((h - k * 5) * pi2) * 50) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub Private Sub pt6() For k = mm To mm + (a3 - 1) * 5 Step 5 xa = ((-54 + Cos(k * pi2) * 50) / (Sin(k * pi2) * 50)) * 320 + 320 ya = (2 / (Sin(k * pi2) * 50)) * 320 + 240 xb = ((-54 + Cos(k * pi2) * 58) / (Sin(k * pi2) * 58)) * 320 + 320 yb = (2 / (Sin(k * pi2) * 58)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next If b3 > 0 Then h = mm + (a3 - 1) * 5 xxa = -54 + Cos(h * pi2) * 50 zza = Sin(h * pi2) * 50 xxb = -54 + Cos(h * pi2) * 58 zzb = Sin(h * pi2) * 58 xxf = Cos((90 - h) * pi2) * 5 zzf = Sin((90 - h) * pi2) * 5 For k = 1 To b3 xa = ((xxa - xxf * k) / (zza + zzf * k)) * 320 + 320 ya = (2 / (zza + zzf * k)) * 320 + 240 xb = ((xxb - xxf * k) / (zzb + zzf * k)) * 320 + 320 yb = (2 / (zzb + zzf * k)) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If If c3 > 0 Then xxf = xxa - xxf * b3 - Cos(h * pi2) * 50 zzf = zza + zzf * b3 - Sin(h * pi2) * 50 For k = 1 To c3 xa = (xxf + Cos((h + k * 5) * pi2) * 50) / (zzf + Sin((h + k * 5) * pi2) * 50) * 320 + 320 ya = 2 / (zzf + Sin((h + k * 5) * pi2) * 50) * 320 + 240 xb = (xxf + Cos((h + k * 5) * pi2) * 58) / (zzf + Sin((h + k * 5) * pi2) * 58) * 320 + 320 yb = 2 / (zzf + Sin((h + k * 5) * pi2) * 58) * 320 + 240 Call objDDSSecondary.SetForeColor(RGB(255, 255, 255)) Call objDDSSecondary.DrawLine(xa, ya, xa + 1, ya) Call objDDSSecondary.DrawLine(xb, yb, xb + 1, yb) Next End If End Sub