¢£¥·¥ç¥Ã¥È´ØÏ¢¤Î½èÍý¤µ¤¡¡¢¤¤¤è¤¤¤èº£²ó¤Î¹ÖºÂ¤Ç¡¢Ä¹¤«¤Ã¤¿¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Î¹ÖºÂ¤âºÇ¸å¤Ç¤¹¡£µ¤¹ç¤òÆþ¤ì¤Æ´èÄ¥¤ê¤Þ¤·¤ç¤¦¡£
¤½¤ì¤Ç¤Ï¡¢Á°²óÀë¸À¤·¤¿¤È¤ª¤ê¡¢º£²ó¤Ï¥·¥ç¥Ã¥È´ØÏ¢¤Î½èÍý¤ò°ìµ¤¤Ë¤ä¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤Þ¤º¤Ï¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬Êü¤Ã¤¿¥·¥ç¥Ã¥È¤Î½èÍý¤«¤é¸«¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
Sub P_Shot_Action()
Dim L As Long
Dim LL As Long
For L = 0 To 4
With P_Shot_Data(L)
If .Vis Then
.Y = .Y - 6
If .Y < -5 Then .Vis = False
For LL = 0 To 9
If Enemy_Data(LL).Lif > 0 Then
If .X - 2 < Enemy_Data(LL).X + Enemy_Data(LL).W Then
If .X + 2 > Enemy_Data(LL).X - Enemy_Data(LL).W Then
If .Y - 2 < Enemy_Data(LL).Y + Enemy_Data(LL).H Then
If .Y + 2 > Enemy_Data(LL).Y - Enemy_Data(LL).H Then
.Vis = False
With Enemy_Data(LL)
Call Burst_Begin(.X, .Y)
.Lif = 0
End With
Score = Score + 100
Exit For
End If
End If
End If
End If
End If
Next
If Boss_Data.Lif > 0 Then
If .X - 2 < Boss_Data.X + Boss_Data.W Then
If .X + 2 > Boss_Data.X - Boss_Data.W Then
If .Y - 2 < Boss_Data.Y + Boss_Data.H Then
If .Y + 2 > Boss_Data.Y - Boss_Data.H Then
.Vis = False
With Boss_Data
Call Burst_Begin(.X, .Y)
.Lif = .Lif - 1
End With
Score = Score + 50
End If
End If
End If
End If
End If
With UserForm1.Controls("P_Shot" & L + 1)
If P_Shot_Data(L).Vis Then
.Left = P_Shot_Data(L).X - Shot_Size
.Top = P_Shot_Data(L).Y - Shot_Size
Else
.Visible = False
End If
End With
End If
End With
Next
End Sub
¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Ï¡¢Ä̾ï¤Î¥¶¥³Å¨¥¥ã¥é¥¯¥¿¡¼¤È¤Ï°ã¤¦¹½Â¤ÂÎÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢¥·¥ç¥Ã¥È¤È¤Î¾×ÆÍȽÄê¤âÆÈ¼«¤Ë¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Äɲäµ¤ì¤Æ¤¤¤ë¤Î¤ÏÎ理Çɽ¼¨¤µ¤ì¤Æ¤¤¤ëÉôʬ¤À¤±¤Ç¤¹¡£
¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤¤¤ë¤³¤È¤Ï¡¢Ä̾ï¤Î¾×ÆÍȽÄê¤ÈÁ´¤¯Æ±¤¸¤³¤È¤ò¤·¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Î°ÌÃÖ¤ÈÂ礤µ¡¢¤³¤ì¤ò¸µ¤Ë¾×ÆÍ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«·×»»¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤Í¡£
¥Ý¥¤¥ó¥È¤Ï¡¢Î理Îʸ»ú¤Î°ìÈֺǽé¤Î¹Ô¤ÎÉôʬ¡£¤³¤³¤Ç¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬Â¸ºß¤·¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Æ¤¤¤Þ¤¹¡£Â¸ºß¤·¤Æ¤¤¤Ê¤¤¤È¤¤Ë¾×ÆÍȽÄê¤ò¹Ô¤¦É¬ÍפÏ̵¤¤¤Î¤Ç¡¢¤³¤³¤Ç¤½¤ì¤òȽÃǤ·¤Æ¤«¤é¾×ÆÍȽÄê¤Î½èÍý¤Ë°Ü¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£
¢£Å¨¥¥ã¥é¥¯¥¿¡¼¤Î¥·¥ç¥Ã¥È¤µ¤Æ¡¢¼¡¤ËŨ¥¥ã¥é¥¯¥¿¡¼¤Î¥·¥ç¥Ã¥È¤Þ¤ï¤ê¤ò½¤Àµ¤·¤Þ¤·¤ç¤¦¡£
Á°²ó¤Î¹ÖºÂ¤ÇºÜ¤»¤¿¥³¡¼¥É¤ÎÃæ¤Ë¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬Êü¤Ä¥·¥ç¥Ã¥È¤Î½èÍý¤¬¤¢¤ê¤Þ¤·¤¿¡£¤½¤³¤Ç¤Ï¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬£µ¼ïÎà¤Î¥·¥ç¥Ã¥È¤ò·â¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢º£¸½ºß¤Ï£³¼ïÎà¤Î¥·¥ç¥Ã¥È¤·¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
¤³¤³¤Ç¤Ï¡¢¥·¥ç¥Ã¥È¤Î¼ïÎà¤Ë±þ¤¸¤Æ½èÍý¤¬Ê¬¤«¤ì¤ë¤è¤¦¤Ë¡¢Å¬µ¹¡¢¥³¡¼¥É¤Î½¤ÀµµÚ¤ÓÄɲäò¹Ô¤¤¤Þ¤·¤ç¤¦¡£
¤Þ¤º¤Ï¡¢¥·¥ç¥Ã¥È¤òÀ¸À®¤¹¤ë¥×¥í¥·¡¼¥¸¥ã¤Î½¤Àµ¤«¤é¤Ç¤¹¡£
¥·¥ç¥Ã¥È¤ÎÀ¸À®Ãʳ¬¤Ç¡¢¥·¥ç¥Ã¥È¤Î¼ïÎà¤Ë±þ¤¸¤Æ¡¢²èÁü¤¬ÊѲ½¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤¹¡£
Sub E_Shot_Begin(X As Single, Y As Single, Typ As Long)
Dim L As Long
For L = 0 To 9
With E_Shot_Data(L)
If Not .Vis Then
.X = X
.Y = Y
.Typ = Typ
.Vis = True
With UserForm1.Controls("E_Shot" & L + 1)
.Visible = True
Select Case Typ
Case 1, 2, 3
.Picture = UserForm1.E_Shot_s1.Picture
Case Else
.Picture = UserForm1.E_Shot_s2.Picture
End Select
End With
Exit For
End If
End With
Next
End Sub
¤µ¤Æ¡¢Îп§¤Ë¤Ê¤Ã¤Æ¤¤¤ëÉôʬ¤¬º£²óÄɲ䵤줿Éôʬ¤Ç¤¹¤¬¡¢²¿¤ò¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤«¡¢¤Ê¤ó¤È¤Ê¤¯¤ï¤«¤ê¤Þ¤¹¤«¡©
¤³¤³¤Ç¤Ï¡¢¥·¥ç¥Ã¥È¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ¡¢²èÁü¤¬ÀÚ¤êÂØ¤ï¤ë¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤Þ¤¹¡£
Á°¡¹²ó¤Î¹ÖºÂ¤Ç¡¢¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¾å¤Ë¥·¥ç¥Ã¥ÈÍѤθ¶²è¤È¤Ê¤ë¥¤¥á¡¼¥¸¥³¥ó¥È¥í¡¼¥ë¤òÇÛÃÖ¤·¤Þ¤·¤¿¡£¡Ø
E_Shot_s1¡¦
E_Shot_s2¡Ù¤¬¤³¤ì¤Ë¤¢¤¿¤ê¤Þ¤¹¡£
¥·¥ç¥Ã¥È¤Î¥¿¥¤¥×¤¬¡¢£±¤«£²¤«£³¤Î¾ì¹ç¤Ë¤Ï¡¢ÀĤ¤¥·¥ç¥Ã¥È¤Î¤Û¤¦¤ò»È¤¤¤Þ¤¹¡£ÀĤ¤¥·¥ç¥Ã¥È¤Î²èÁü¤Ï
E_Shot_s1¤Î²èÁü¤ò»È¤¤¤Þ¤¹¡£
¤½¤·¤Æ¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ï
E_Shot_s2¤Î²èÁü¤ò»È¤¤¤Þ¤¹¡£º£²ó¤Ï£´ÈÖÌܤȣµÈÖÌܤΥ·¥ç¥Ã¥È¤òÄɲä·¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¤Õ¤¿¤Ä¤Î¥·¥ç¥Ã¥È¤Ï
E_Shot_s2¤ò¸¶²è¤È¤·¤Æ»ÈÍѤ·¤ÆÉ½¼¨¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤Ç½¤Àµ¤·¤Æ¤¤¤ë¤Î¤Ï¤³¤³¤À¤±¤Ç¤¹¡£´Êñ¤Ç¤¹¤Í¡£
¤µ¤ÆÌäÂê¤Ï¼¡¤Ç¤¹¡£
¥·¥ç¥Ã¥È¤Î£´ÈÖÌܤȣµÈÖÌÜ¡¢¤³¤ì¤¬¤É¤Î¤è¤¦¤Êư¤¤ò¤¹¤ë¤Î¤«¤òÄêµÁ¤·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£¤½¤ì¤¬¼¡¤Î¥³¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£¤Á¤ç¤Ã¤ÈŤ¤¤Ç¤¹¤¬¡¢¿§¤Ä¤¤ÎÉôʬ¤Ë¹Ê¤Ã¤Æ¹Í¤¨¤ì¤ÐÂç¾æÉפÀ¤È»×¤¤¤Þ¤¹¡£
Sub E_Shot_Action()
Dim L As Long
Dim LL As Long
For L = 0 To 9
With E_Shot_Data(L)
If .Vis Then
Select Case .Typ
Case 1
.Y = .Y + 4.5
Case 2
.X = .X + 0.5
.Y = .Y + 3.5
Case 3
.X = .X - 0.5
.Y = .Y + 3.5
Case 4
If .X < Player_Data.X Then
.X = .X + 1.5
Else
.X = .X - 1.5
End If
.Y = .Y + 2
Case 5
.Y = .Y + 6
End Select
If .X > 205 Then .Vis = 0
If .Y > 205 Then .Vis = 0
If .X < -5 Then .Vis = 0
If .Y < -5 Then .Vis = 0
If .X - 2 < Player_Data.X + Player_Data.W Then
If .X + 2 > Player_Data.X - Player_Data.W Then
If .Y - 2 < Player_Data.Y + Player_Data.H Then
If .Y + 2 > Player_Data.Y - Player_Data.H Then
.Vis = False
With Player_Data
Call Burst_Begin(.X, .Y)
.Lif = 0
End With
End If
End If
End If
End If
With UserForm1.Controls("E_Shot" & L + 1)
If E_Shot_Data(L).Vis Then
.Left = E_Shot_Data(L).X - Shot_Size
.Top = E_Shot_Data(L).Y - Shot_Size
Else
.Visible = False
End If
End With
End If
End With
Next
End Sub
¥·¥ç¥Ã¥È¤Î£´ÈÖÌܤϡ¢´Ê°×Ū¤ÊÄÉÈøÃÆ¤Ç¤¹¡£
¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤Î¸½ºß¤Î²£°ÌÃÖ¤òÄ´¤Ù¤Æ¡¢¤½¤ÎÊý¸þ¤Ø°Üư¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¥·¥ç¥Ã¥È¤Î°ÌÃÖ¤è¤ê¥×¥ì¥¤¥ä¡¼¤¬º¸¤Ë¤¤¤ì¤Ð¡¢¥·¥ç¥Ã¥È¤âº¸¤Ø¸þ¤«¤¦¤È¤¤¤¦¶ñ¹ç¤Ç¤¹¤Í¡£
ÄÉÈøÃÆ¤È¤¤¤¦¤Î¤Ï¡¢ËÜʪ¤ò¤ä¤í¤¦¤È¤¹¤ë¤È·ë¹½ÂçÊѤʤΤǡ¢º£²ó¤Ï´Ê°×Ū¤Ê¼ÂÁõ¤Ëα¤á¤Æ¤¤¤Þ¤¹¡£²£°ÌÃÖ¤òÄ´¤Ù¤Æ¤½¤ÎÊý³Ñ¤Ø°Üư¤µ¤»¤ë¤À¤±¤Ê¤é¡¢·ë¹½´Êñ¤Ç¤¹¤«¤é¤Í¡£
£µÈÖÌܤΥ·¥ç¥Ã¥È¤Ï¡¢Ã±¤Ë²¼Êý¸þ¤Ø¤Þ¤Ã¤¹¤°¿Ê¤à¤À¤±¤Ç¤¹¡£¤¿¤À¤·¡¢£±²ó¤Î¥ë¡¼¥×¤Ç°Üư¤¹¤ëµ÷Î¥¤¬¾¯¡¹Â礤á¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¤Ä¤Þ¤ê¹â®°Üư¤¹¤ë¥·¥ç¥Ã¥È¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤ËÄɲ乤ë¤Î¤Ï¤³¤ì¤À¤±¤ÇOK¤Ç¤¹¡£
¤½¤·¤Æ¡¢¤³¤ì¤Ç½¤Àµ¤Î¤Û¤ÜÁ´¤Æ¤¬´°Î»¤·¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¢£¤Þ¤È¤á¤¤¤ä¤¡¡¢Ä¹¤«¤Ã¤¿¡£ËÜÅö¤ËŤ«¤Ã¤¿¡£
¤Ò¤È¤Ä¤ÎºîÉʤòºî¤ê¾å¤²¤ë¤È¤¤¤¦¤³¤È¤Ï¡¢ËÜÅö¤ËÂçÊѤÊÏ«ÎϤò»È¤¤¤Þ¤¹¡£¼ê´Ö¤â¡¢º¬µ¤¤â¡¢ÊÂÂçÄñ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤½¤ì¤À¤±¤Ë¡¢ÂçÄñ¤Î¥×¥í¥°¥é¥à¤È¤¤¤¦¤Î¤Ï¡¢ÅÓÃæ¤Ç³«È¯¤¬»ß¤Þ¤Ã¤Æ¤·¤Þ¤¤¡¢Ì¤´°À®¤Ë½ª¤ï¤ë¤³¤È¤¬Â¿¤¤¤Î¤Ç¤¹¡£
¤·¤«¤·¡¢°ÊÁ°¤Ë¤â¸À¤¤¤Þ¤·¤¿¤¬¡¢¥²¡¼¥à¤òºîÀ®¤¹¤ë¾å¤Ç¤È¤Æ¤âÂçÀڤʤ³¤È¤Î¤Ò¤È¤Ä¤¬¡¢
¤È¤ê¤¢¤¨¤º´°À®¤µ¤»¤ë¤È¤¤¤¦¤³¤È¤Ê¤Î¤Ç¤¹¡£
¸æÂ÷¤ò¤¤¤¯¤éʤ٤Ƥ⡢¤Ò¤È¤Ä¤ÎºîÉʤ¬½ÐÍè¾å¤¬¤é¤Ê¤«¤Ã¤¿¤é°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó¡£¤¨¤é¤½¤¦¤Ê¤³¤È¤ò¸À¤Ã¤Æ¡¢Ãμ±¤Ð¤Ã¤«¤ê¤¿¤¯¤µ¤ó»ý¤Ã¤Æ¤¤¤Æ¤â¡¢ºîÉʤò»Å¾å¤²¤é¤ì¤Ê¤¤¤¦¤Á¤Ï°ì¿ÍÁ°¤È¤Ï¸À¤¨¤Þ¤»¤ó¡£
¿¾¯´ÊÁǤʤâ¤Î¤Ç¤¢¤Ã¤Æ¤â¡¢¤½¤ì¤¬´°À®ÉʤǤ¢¤ë¤Ê¤é¤Ð¡¢¤½¤ì¤Ï¤¢¤Ê¤¿¤Ë¤È¤Ã¤Æ¤È¤Æ¤â°ÕÌ£¤Î¤¢¤ë¤â¤Î¤Î¤Ï¤º¤Ç¤¹¡£´Êñ¤Ê¥³¡¼¥É¤·¤«½ñ¤±¤Ê¤¯¤Æ¤â¡¢Æñ¤·¤¤¤³¤È¤Ï¤ï¤«¤é¤Ê¤¯¤Æ¤â¡¢ÅØÎϤÎËö¤ËºîÉʤò»Å¾å¤²¤¿¤È¤¤Ë¤Ï¡¢¤¢¤Ê¤¿¤ÏΩÇÉ¤Ê¥×¥í¥°¥é¥Þ¡¼¤Ç¤¹¡£
»ä¤¬Á´¤Æ¤Î¥³¡¼¥É¤ò¸ø³«¤·¤Æ¤¤¤ë¤È¤¤¤¦ÅÔ¹ç¾å¡¢¥³¥Ô¡¼¤¹¤ë¤À¤±¤Ç¤âư¤¯¥²¡¼¥à¤Ï½ÐÍè¾å¤¬¤ê¤Þ¤¹¡£¤Ç¤â¡¢¤³¤³¤Ë¤É¤Î¤è¤¦¤Ê¥¨¥Ã¥»¥ó¥¹¤ò²Ã¤¨¤Æ¤¤¤¯¤«¤Ï¤¢¤Ê¤¿¼¡Âè¡£¤É¤Î¤è¤¦¤Ë±þÍѤ·¤ÆÀ¸¤«¤·¤Æ¤¤¤¯¤Î¤«¤â¤¢¤Ê¤¿¼¡Âè¤Ç¤¹¡£
²¿ÅÙ¤â¸À¤¤¤Þ¤¹¤¬¡¢»ä¤¬¤Ç¤¤ë¤Î¤Ï¡¢³§¤µ¤ó¤Î¤ª¼êÅÁ¤¤¡¢Æ»°ÆÆâ¤À¤±¤Ç¤¹¡£
¤³¤Î¹ÖºÂ¤òÄ̤·¤ÆÆÀ¤¿Ãμ±¤Ç¡¢³§¤µ¤ó¤¬ÆÈ¼«¤ÎÀ¤³¦¤òɽ¸½¤·¤Æ¤¤¤¯¤³¤È¤òÀڤ˴ꤤ¤Þ¤¹¡£
¤È¤Ë¤«¤¯¡¢¤³¤³¤Þ¤Çº¬µ¤¶¯¤¯¿Ê¤á¤Æ¤¤Æ¤¯¤À¤µ¤Ã¤¿³§¤µ¤ó¡£ËÜÅö¤Ë¤ªÈè¤ìÍͤǤ·¤¿¡£
ºÇ¸å¤Ë¥³¡¼¥É¤òÁ´¤Æ·ÇºÜ¤·¤Æ¤ª¤¤Þ¤¹¡£¹ÖºÂ¤ÎºÇ¸å¤Ë¤Ï¡¢¥µ¥ó¥×¥ë¤Î¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤âŽ¤Ã¤Æ¤ª¤¤Þ¤¹¡£¤³¤ì¤é¤ò»²¹Í¤Ë¡¢´èÄ¥¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¹ÖºÂ¡¡Á´¥³¡¼¥É·ÇºÜ'ɸ½à¥â¥¸¥å¡¼¥ëÀèÆ¬Éôʬ
'¢¡API¡¡Àë¸À
Declare Function GetTickCount Lib "kernel32" () As Long
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long)
'¢£¥¥ã¥é¥¯¥¿¡¼¡¡¹½Â¤ÂÎÀë¸À
Type Chara
X As Single
Y As Single
W As Single
H As Single
Lif As Long
Typ As Long
Par As Long
End Type
'¢£¥·¥ç¥Ã¥È¡¡¹½Â¤ÂÎÀë¸À
Type Shot
X As Single
Y As Single
Vis As Boolean
Typ As Long
End Type
'¢£ÈÆÍÑ¥ª¥Ö¥¸¥§¥¯¥È¡¡¹½Â¤ÂÎÀë¸À
Type Obj
X As Single
Y As Single
W As Single
H As Single
Par As Long
End Type
'¡ü¥¥ã¥é¥¯¥¿¡¼¡¡ÊÑ¿ôÀë¸À
Public Player_Data As Chara
Public Enemy_Data(9) As Chara
Public Boss_Data As Chara
'¡ü¥·¥ç¥Ã¥È¡¡ÊÑ¿ôÀë¸À
Public P_Shot_Data(4) As Shot
Public E_Shot_Data(9) As Shot
'¡üÈÆÍÑ¥ª¥Ö¥¸¥§¥¯¥È¡¡ÊÑ¿ôÀë¸À
Public Burst_Data(2) As Obj
'¡ý¤½¤Î¾¡¡ÊÑ¿ôÀë¸À
Public Shot_Interval As Long
Public Total_Count As Long '¥²¡¼¥àÃæ¤Î¥«¥¦¥ó¥¿
Public Player_Stock As Long '¥×¥ì¥¤¥ä¡¼¤Î»Äµ¡¿ô
Public Score As Long '¥²¡¼¥à¤Î¥¹¥³¥¢
Public Boss_Begin As Boolean '¥Ü¥¹¤¬½Ð¸½¤·¤Æ¤¤¤ë¤«¤É¤¦¤«
Public Game_Mode As Long '¸½ºß¤Î¥²¡¼¥à¥â¡¼¥É
'£°¡á¥¿¥¤¥È¥ë
'£±¡á¥²¡¼¥àÃæ
'£²¡á¥²¡¼¥à¥ª¡¼¥Ð¡¼
'£³¡á¥²¡¼¥à¥¯¥ê¥¢
'¢¥Äê¿ôÀë¸À
Public Const Left_Key As Long = 37 '¥«¡¼¥½¥ëº¸
Public Const Up_Key As Long = 38 '¥«¡¼¥½¥ë¾å
Public Const Right_Key As Long = 39 '¥«¡¼¥½¥ë±¦
Public Const Down_Key As Long = 40 '¥«¡¼¥½¥ë²¼
Public Const Esc_Key As Long = 27 '£Å£ó£ã¥¡¼
Public Const Shot_Key As Long = 90 '£Ú¥¡¼
Public Const Player_Size As Single = 9
'¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤Î¼ÂºÝ¤ÎÂ礤µ
Public Const Shot_Size As Single = 3
'ÃÆ³Æ¼ï¤Î¼ÂºÝ¤ÎÂ礤µ
Public Const Enemy_Size As Single = 9
'Ũ¥¥ã¥é¥¯¥¿¡¼¤Î¼ÂºÝ¤ÎÂ礤µ
Public Const Burst_Size As Single = 15
'Çúȯ¥¨¥Õ¥§¥¯¥È¤Î¼ÂºÝ¤ÎÂ礤µ
Public Const Boss_size As Single = 15
'¥Ü¥¹¤Î¼ÂºÝ¤ÎÂ礤µ
'½é´ü²½¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ã
Sub Init()
With Player_Data
.X = 100
.Y = 210
.W = 3
.H = 3
.Lif = 1
.Typ = 0
.Par = 1
End With
With Boss_Data
.X = 0
.Y = 0
.W = 0
.H = 0
.Lif = 0
.Typ = 0
.Par = 0
End With
Erase P_Shot_Data
Erase E_Shot_Data
Erase Enemy_Data
Erase Burst_Data
Shot_Interval = 0
Total_Count = 0
Player_Stock = 2
Score = 0
Game_Mode = 0
Boss_Begin = False
With UserForm1.Player
.Visible = True
.Top = 200
End With
UserForm1.Lab_Score.Caption = "00000000"
End Sub
'¥á¥¤¥ó¥×¥í¥»¥¹¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ã
Sub Main()
Dim Flg As Boolean
Dim Stm As Long
Init
Flg = False
Do Until Flg
Stm = GetTickCount
Total_Count = Total_Count + 1
Select Case Game_Mode
Case 0
Call Tytle_Action
Case 1
Call Stage_Count
Call Player_Action
Call Enemy_Action
Call P_Shot_Action
Call E_Shot_Action
Call Burst_Action
If Boss_Begin Then Boss_Action
UserForm1.Lab_Score.Caption = Format(Score, "00000000")
Case 2
MsgBox "Game Over!!"
Flg = True
Case 3
MsgBox "Clear!!"
Flg = True
End Select
DoEvents
Do
Call Sleep(1)
Loop Until GetTickCount - Stm > 30
If GetAsyncKeyState(27) < 0 Then Flg = True
Loop
End Sub
'¥¿¥¤¥È¥ë¤Î¥¢¥¯¥·¥ç¥ó¤ò´ÉÍý¤¹¤ë¥×¥í¥·¡¼¥¸¥ã
Sub Tytle_Action()
With UserForm1
.Lab_Cap1.Left = .Lab_Cap1.Left + 3
.Lab_Cap2.Left = .Lab_Cap2.Left - 3
If .Lab_Cap1.Left > 200 Then
.Lab_Cap1.Visible = False
.Lab_Cap2.Visible = False
Game_Mode = 1
End If
End With
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼¤Î½Ð¸½´ÉÍý¥×¥í¥·¡¼¥¸¥ã
Sub Stage_Count()
Dim TCMOD As Long
Randomize
TCMOD = Total_Count Mod 1000
If Total_Count < 2000 Then
Select Case TCMOD
Case 100, 150, 600, 650, 700, 750
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 1)
Case 200, 350, 450, 500, 800, 950
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 2)
Case 250, 300, 400, 550, 850, 900
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 3)
End Select
Else
If Total_Count = 2000 Then
With Boss_Data
.X = 100
.Y = -20
.W = 8
.H = 8
.Lif = 50
.Par = 0
.Typ = 0
End With
Boss_Begin = True
UserForm1.Boss.Visible = True
End If
End If
End Sub
'¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ã
Sub Player_Action()
Dim S As Single
Dim SS As Single
Randomize
With Player_Data
If .Lif > 0 Then
If .Par > 0 Then
If .Y > 180 Then
.Y = .Y - 1
Else
.Par = 0
End If
Else
If GetAsyncKeyState(Left_Key) < 0 Then .X = .X - 3
If GetAsyncKeyState(Up_Key) < 0 Then .Y = .Y - 3
If GetAsyncKeyState(Right_Key) < 0 Then .X = .X + 3
If GetAsyncKeyState(Down_Key) < 0 Then .Y = .Y + 3
If .X - Player_Size < 0 Then .X = Player_Size
If .X + Player_Size > 200 Then .X = 200 - Player_Size
If .Y - Player_Size < 0 Then .Y = Player_Size
If .Y + Player_Size > 200 Then .Y = 200 - Player_Size
If Shot_Interval = 0 Then
If GetAsyncKeyState(Shot_Key) < 0 Then
Call P_Shot_Begin(.X, .Y, 1)
Shot_Interval = 1
End If
Else
Shot_Interval = Shot_Interval + 1
If Shot_Interval > 7 Then Shot_Interval = 0
End If
End If
Else
.Par = .Par + 1
If .Par > 50 Then
.X = 100
.Y = 210
.Lif = 1
.Par = 1
Player_Stock = Player_Stock - 1
Select Case Player_Stock
Case Is < 0
Game_Mode = 2
Case 0
UserForm1.Stock1.Visible = False
Case 1
UserForm1.Stock2.Visible = False
End Select
Else
If .Par Mod 9 = 1 Then
S = Int(Rnd * 20) - 9
SS = Int(Rnd * 20) - 9
Call Burst_Begin(.X + S, .Y + SS)
End If
End If
End If
With UserForm1.Player
.Left = Player_Data.X - Player_Size
.Top = Player_Data.Y - Player_Size
End With
End With
End Sub
'¥·¥ç¥Ã¥ÈÀ¸À®¥×¥í¥·¡¼¥¸¥ã
Sub P_Shot_Begin(X As Single, Y As Single, Typ As Long)
Dim L As Long
For L = 0 To 4
With P_Shot_Data(L)
If Not .Vis Then
.X = X
.Y = Y
.Typ = Typ
.Vis = True
UserForm1.Controls("P_Shot" & L + 1).Visible = True
Exit For
End If
End With
Next
End Sub
'¥·¥ç¥Ã¥È°Üư´ÉÍý¥×¥í¥·¡¼¥¸¥ã
Sub P_Shot_Action()
Dim L As Long
Dim LL As Long
For L = 0 To 4
With P_Shot_Data(L)
If .Vis Then
.Y = .Y - 6
If .Y < -5 Then .Vis = False
For LL = 0 To 9
If Enemy_Data(LL).Lif > 0 Then
If .X - 2 < Enemy_Data(LL).X + Enemy_Data(LL).W Then
If .X + 2 > Enemy_Data(LL).X - Enemy_Data(LL).W Then
If .Y - 2 < Enemy_Data(LL).Y + Enemy_Data(LL).H Then
If .Y + 2 > Enemy_Data(LL).Y - Enemy_Data(LL).H Then
.Vis = False
With Enemy_Data(LL)
Call Burst_Begin(.X, .Y)
.Lif = 0
End With
Score = Score + 100
Exit For
End If
End If
End If
End If
End If
Next
If Boss_Data.Lif > 0 Then
If .X - 2 < Boss_Data.X + Boss_Data.W Then
If .X + 2 > Boss_Data.X - Boss_Data.W Then
If .Y - 2 < Boss_Data.Y + Boss_Data.H Then
If .Y + 2 > Boss_Data.Y - Boss_Data.H Then
.Vis = False
With Boss_Data
Call Burst_Begin(.X, .Y)
.Lif = .Lif - 1
End With
Score = Score + 50
End If
End If
End If
End If
End If
With UserForm1.Controls("P_Shot" & L + 1)
If P_Shot_Data(L).Vis Then
.Left = P_Shot_Data(L).X - Shot_Size
.Top = P_Shot_Data(L).Y - Shot_Size
Else
.Visible = False
End If
End With
End If
End With
Next
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼À¸À®¥×¥í¥·¡¼¥¸¥ã
Sub Enemy_Begin(X As Single, Y As Single, Typ As Long)
Dim L As Long
For L = 0 To 9
With Enemy_Data(L)
If .Lif = 0 Then
.X = X
.Y = Y
.W = 5
.H = 5
.Typ = Typ
.Lif = 1
.Par = 0
With UserForm1.Controls("Enemy" & L + 1)
.Visible = True
Select Case Typ
Case 1
.Picture = UserForm1.Enemy_s1.Picture
Case 2, 3
.Picture = UserForm1.Enemy_s2.Picture
End Select
End With
Exit For
End If
End With
Next
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ã
Sub Enemy_Action()
Dim L As Long
Dim TCMOD
TCMOD = Total_Count Mod 30
For L = 0 To 9
With Enemy_Data(L)
If .Lif > 0 Then
Select Case .Typ
Case 1
.Y = .Y + 1.5
Case 2
.X = .X + 0.5
.Y = .Y + 1
Case 3
.X = .X - 0.5
.Y = .Y + 1
End Select
If .X > 220 Then .Lif = 0
If .Y > 220 Then .Lif = 0
If .X < -20 Then .Lif = 0
If .Y < -20 Then .Lif = 0
If TCMOD = 0 Then
Select Case .Typ
Case 2
.Typ = 3
Case 3
.Typ = 2
End Select
Call E_Shot_Begin(.X, .Y + 2, .Typ)
End If
End If
End With
With UserForm1.Controls("Enemy" & L + 1)
If Enemy_Data(L).Lif > 0 Then
.Left = Enemy_Data(L).X - Enemy_Size
.Top = Enemy_Data(L).Y - Enemy_Size
Else
.Visible = False
End If
End With
Next
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼¥·¥ç¥Ã¥ÈÀ¸À®¥×¥í¥·¡¼¥¸¥ã
Sub E_Shot_Begin(X As Single, Y As Single, Typ As Long)
Dim L As Long
For L = 0 To 9
With E_Shot_Data(L)
If Not .Vis Then
.X = X
.Y = Y
.Typ = Typ
.Vis = True
With UserForm1.Controls("E_Shot" & L + 1)
.Visible = True
Select Case Typ
Case 1, 2, 3
.Picture = UserForm1.E_Shot_s1.Picture
Case Else
.Picture = UserForm1.E_Shot_s2.Picture
End Select
End With
Exit For
End If
End With
Next
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼¥·¥ç¥Ã¥È°Üư´ÉÍý¥×¥í¥·¡¼¥¸¥ã
Sub E_Shot_Action()
Dim L As Long
Dim LL As Long
For L = 0 To 9
With E_Shot_Data(L)
If .Vis Then
Select Case .Typ
Case 1
.Y = .Y + 4.5
Case 2
.X = .X + 0.5
.Y = .Y + 3.5
Case 3
.X = .X - 0.5
.Y = .Y + 3.5
Case 4
If .X < Player_Data.X Then
.X = .X + 1.5
Else
.X = .X - 1.5
End If
.Y = .Y + 2
Case 5
.Y = .Y + 6
End Select
If .X > 205 Then .Vis = 0
If .Y > 205 Then .Vis = 0
If .X < -5 Then .Vis = 0
If .Y < -5 Then .Vis = 0
If .X - 2 < Player_Data.X + Player_Data.W Then
If .X + 2 > Player_Data.X - Player_Data.W Then
If .Y - 2 < Player_Data.Y + Player_Data.H Then
If .Y + 2 > Player_Data.Y - Player_Data.H Then
.Vis = False
With Player_Data
Call Burst_Begin(.X, .Y)
.Lif = 0
End With
End If
End If
End If
End If
With UserForm1.Controls("E_Shot" & L + 1)
If E_Shot_Data(L).Vis Then
.Left = E_Shot_Data(L).X - Shot_Size
.Top = E_Shot_Data(L).Y - Shot_Size
Else
.Visible = False
End If
End With
End If
End With
Next
End Sub
'¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Î°Üư´ÉÍý¥×¥í¥·¡¼¥¸¥ã
Sub Boss_Action()
Dim S As Single
Dim SS As Single
Dim TCMOD
Randomize
TCMOD = Total_Count Mod 500
With Boss_Data
If .Lif > 0 Then
If .Y < 30 Then
.Y = .Y + 1
Else
If .Par > 0 Then
.X = .X + 2
If .X > 160 Then
.X = 160
.Par = 0
End If
Else
.X = .X - 2
If .X < 40 Then
.X = 40
.Par = 1
End If
End If
End If
Select Case TCMOD
Case 50, 70, 90, 110, 130, 150
.Typ = 1
Case 60, 80, 100, 140
.Typ = 2
Case 80, 120, 160
.Typ = 3
Case 200, 230, 260, 290, 320
.Typ = 4
Case 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450
.Typ = 5
Case Else
.Typ = 0
End Select
If .Typ <> 0 Then Call E_Shot_Begin(.X, .Y + 5, .Typ)
Else
.Par = .Par + 1
If .Par < 100 Then
If .Par Mod 10 = 0 Then
S = Int(Rnd * 25) - 13
SS = Int(Rnd * 25) - 13
Call Burst_Begin(.X + S, .Y + SS)
End If
Else
Game_Mode = 3
Boss_Begin = False
End If
End If
End With
With UserForm1.Boss
If Boss_Begin Then
.Left = Boss_Data.X - Boss_size
.Top = Boss_Data.Y - Boss_size
Else
.Visible = False
End If
End With
End Sub
'Çúȯ¥¨¥Õ¥§¥¯¥ÈÀ¸À®¥×¥í¥·¡¼¥¸¥ã
Sub Burst_Begin(X As Single, Y As Single)
Dim L As Long
For L = 0 To 2
With Burst_Data(L)
If .Par = 0 Then
.X = X
.Y = Y
.W = Burst_Size
.H = Burst_Size
.Par = 1
UserForm1.Controls("Burst" & L + 1).Visible = True
Exit For
End If
End With
Next
End Sub
'Çúȯ¥¨¥Õ¥§¥¯¥È´ÉÍý¥×¥í¥·¡¼¥¸¥ã
Sub Burst_Action()
Dim L As Long
Dim Pict As Long
For L = 0 To 2
With Burst_Data(L)
If .Par > 0 Then
Select Case .Par
Case 1
Pict = 1
Case 2, 3
Pict = 2
Case 4, 5
Pict = 3
Case 6, 7
Pict = 4
Case 8
Pict = 5
Case 9
.Par = -1
End Select
.Par = .Par + 1
With UserForm1.Controls("Burst" & L + 1)
If Burst_Data(L).Par > 0 Then
.Left = Burst_Data(L).X - Burst_Size
.Top = Burst_Data(L).Y - Burst_Size
.Picture = UserForm1.Controls("Burst_s" & Pict).Picture
Else
.Visible = False
End If
End With
End If
End With
Next
End Sub
'ɸ½à¥â¥¸¥å¡¼¥ë¤Ï¤³¤³¤Þ¤Ç
'¤³¤³¤«¤é²¼¤Ï¥Õ¥©¡¼¥à¥â¥¸¥å¡¼¥ë¤Ëµ½Ò
'¥³¥Þ¥ó¥É¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È
Private Sub Com_Start_Click()
Com_Start.Enabled = False
Call Main
Unload UserForm1
End Sub
'¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¤Î¥¯¥¨¥ê¥¯¥í¡¼¥¹¥¤¥Ù¥ó¥È
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
End
End Sub
'¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¤Î¥¤¥Ë¥·¥ã¥é¥¤¥º¥¤¥Ù¥ó¥È
Private Sub UserForm_Initialize()
UserForm1.Width = 220
End Sub
¥µ¥ó¥×¥ë¥À¥¦¥ó¥í¡¼¥É¡¡¢Í¡¡
¥³¥Á¥é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£¡ÊÊÌ´Û¡Ë
¢£³Ê¸À
¤Þ¤º¤Ï´°À®¤µ¤»¤ë¤³¤È¤¬ÂçÀÚ
¤¢¤È¤ÏÅØÎϤȹ©É×¼¡Âè¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Îư¤¤Ê¤É¡¢¥µ¥ó¥×¥ë¤ÈÊ»ÍѤ·¤Æ¤ß¤ë¤È¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£