£Ã£è£á£ð£ô£å£ò.£µ£µ [ ¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à£±£µ¡§»Äµ¡¿ôɽ¼¨¢ ]
¢£¤Ä¤Å¤¤Ç¤¹
¤µ¤Æ¡¢º£²ó¤ÏÁ°²ó¤Î³¤¤Ç¤¹¡£
¹ÖºÂ¤òÄ̤·¤ÆºîÀ®¤·¤Æ¤¤¤ë¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Ë¡¢»Äµ¡¿ô¤òɽ¼¨¤¹¤ë¤Ù¤¯½àÈ÷¤ò¤·¤¿Á°²ó¡£¤³¤³¤«¤é¤Ï¼ÂºÝ¤Î¥³¡¼¥É¤òµ½Ò¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¡¢¥³¡¼¥É¤ò¤¹¤ó¤Ê¤êÍý²ò¤¹¤ë¤¿¤á¤Ë¤â¡¢Á°²ó¤Î¹ÖºÂ¤ÇºÜ¤»¤¿¿·¤·¤¤¥×¥í¥·¡¼¥¸¥ã¤Î¹½Â¤¤ò¤â¤¦°ìÅÙ¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¿§¤ÎÃ夤¤Æ¤¤¤ëÉôʬ¤òº£²ó½¤Àµ¤·¤Þ¤¹¡£
½ÅÍפʤΤϡ¢¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸»à¤Î¾õÂ֤䡢±é½ÐÃæ¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ¡¢½èÍý¤¬Ê¬´ô¤¹¤ë¤È¤¤¤¦»ÅÁȤߤǤ¹¡£
¾å¤Î¹½Â¤¿Þ¤ò¤è¤¯¸«¤Ê¤¬¤é¡¢¥²¡¼¥àÃæ¤Î¼ÂºÝ¤Îή¤ì¤ò¥¤¥á¡¼¥¸¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬¡¢º£¸½ºß¡¢À¸¤¤Æ¤¤¤ë¤Î¤«¤¤¤Ê¤¤¤Î¤«¡¢¤½¤ì¤Ë¤è¤Ã¤ÆÀÖ¤¤»ú¤Ç½ñ¤«¤ì¤¿
¤â¤·¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¤È¤¹¤ë¤È¡¢¡ØÉü³è»þ¤Î±é½Ð¡Ù¤«¡Ø¥×¥ì¥¤¥ä¡¼¤Î½èÍý¡Ù¤Î¤¤¤º¤ì¤«¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£µÕ¤Ë»à¤ó¤Ç¤¤¤ë¤È¤¹¤ë¤È¡¢¡Ø»àË´»þ¤Î±é½Ð¡Ù¤Ë½èÍý¤¬°Ü¤ê¤Þ¤¹¤Í¡£
¤¿¤À¤·¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤µ¤é¤Ë¤â¤¦°ìÃʳ¬¤Îʬ´ô¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤¬ÀĤ¤»ú¤Î
¤³¤³¤Ç¤Ï¡¢º£¸½ºß¡¢±é½Ð¤ò¤·¤Æ¤¤¤ëºÇÃæ¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ½èÍý¤¬Ê¬´ô¤·¤Þ¤¹¡£¤â¤·¤â±é½ÐÃæ¤Ç¤¢¤ì¤Ð¡¢¤½¤ì¤Ë±þ¤¸¤¿±é½Ð½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¤·¡¢±é½ÐÃæ¤Ç¤Ê¤±¤ì¤Ð¡¢¤³¤ì¤ÏÄ̾ï¤Î¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤òÁàºî¤Ç¤¤ë¾õÂ֤Ȥ¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤¶¤Ã¤¯¤ê¤È¤·¤¿Î®¤ì¤Ï¡¢¤Ê¤ó¤È¤Ê¤¯Íý²ò¤Ç¤¤Þ¤¹¤«¡©
¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¤Î¤«¤É¤¦¤«¡¢¤½¤·¤Æ¡¢À¸¤¤Æ¤¤¤¿¤È¤·¤¿¤é±é½ÐÃæ¤Ê¤Î¤«¤É¤¦¤«¡£¤Þ¤º¤Ï¤½¤ì¤ò¾ò·ïʬ´ô¤Ë¤è¤Ã¤ÆÈ½ÃǤ·¤Þ¤¹¡£¥«¡¼¥½¥ë¥¡¼¤Ç¥¥ã¥é¥¯¥¿¡¼¤òÁàºî¤Ç¤¤ë¤È¤¤Ï¡ØÀ¸¤¤Æ¤¤¤Æ±é½Ð¤·¤Æ¤¤¤Ê¤¤¤È¤¡Ù¤È¤¤¤¦¤³¤È¤Ç¤¹¤Í¡£¤³¤Î¹Í¤¨Êý¤ò¤è¤¯Íý²ò¤·¤¿¤¦¤¨¤Ç¡¢¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤µ¤Æ¡¢¤Ê¤ó¤À¤«¥«¥é¥Õ¥ë¤Ê¥³¡¼¥É¤Ë¤Ê¤Ã¤Á¤ã¤¤¤Þ¤·¤¿¡£
¿§¤ÎÃ夤¤Æ¤¤¤ëÉôʬ¤¬º£²óÊѹ¹¤Ë¤Ê¤Ã¤¿Éôʬ¤Ç¤¹¡£Àè¤Û¤É¤Î¹½Â¤¿Þ¤È¡¢Æ±¤¸Í×ÎΤǿ§¤¬Ã夤¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤è¤¯¸«Èæ¤Ù¤Æ¤ß¤ë¤È¤Ê¤ó¤È¤Ê¤¯¹½Â¤¤¬¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£
¤Þ¤º¤ÏÎ理Îʸ»úÉôʬ¡£¤³¤³¤Ïñ½ã¤ËÄɲ䵤줿Éôʬ¤Ç¤¹¡£¥³¡¼¥É¤òÄɲ乤ë¤Ë¤¢¤¿¤ê¡¢¿·¤¿¤ËɬÍפȤʤëÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢Íð¿ô¤ò»ÈÍѤ¹¤ë¤Î¤Ç
¤µ¤Æ¡¢¤½¤Î¼¡¤ÏÀÖ¤¤»ú¤Î
Í×ÁÇ
¤½¤·¤ÆÀĤ¤»ú¤Ç½ñ¤«¤ì¤Æ¤¤¤ë
¾å¤Î¤Û¤¦¤Ç½Ð¤Æ¤¯¤ë²«¿§¤¤»ú¤Î½èÍý¤Ç¤Ï¡¢¡ØÉü³è»þ¤Î±é½Ð¡Ù¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢¥¥ã¥é¥¯¥¿¡¼¤¬²èÌ̤β¼¤Î¤Û¤¦¤«¤é¡¢¤æ¤Ã¤¯¤ê¤ÈÅо줹¤ë¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤Þ¤¹¡£
¥¥ã¥é¥¯¥¿¡¼¤Î½Ä°ÌÃÖ¤¬¡¢°ìÄê¤ÎºÂɸ¤Ë㤹¤ë¤Þ¤Ç¡¢¤¹¤³¤·¤º¤Ä¥¥ã¥é¥¯¥¿¡¼¤ò°Üư¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£»ØÄꤵ¤ì¤¿ºÂɸ¤Þ¤ÇÅþ㤷¤¿¤é¡¢±é½Ð¤ò½ª¤ï¤é¤»¤ë¤¿¤á¤ËÍ×ÁÇ
¤³¤³¤Þ¤Ç¤¬¡¢¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Î½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢Éü³è»þ¤Î±é½Ð¤«¡¢¤¢¤ë¤¤¤Ï¥«¡¼¥½¥ë¥¡¼¤ÇÁàºî¤Ç¤¤ë¾õÂÖ¤«¤Î¤¤¤º¤ì¤«¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Í¡£
¢£¤½¤ì¤¸¤ã»àË´»þ¤Î½èÍý¤Ï¡©
¤µ¤Æ¼¡¤Ï¥¥ã¥é¥¯¥¿¡¼¤¬»à¤ó¤Ç¤¤¤ë¾ì¹ç¤Î½èÍý¤Ç¤¹¡£
²¼¤Î¤Û¤¦¤Ë¤¢¤ë²«¿§¤¤»ú¤ÎÉôʬ¤¬¤³¤ì¤Ë¤¢¤¿¤ê¤Þ¤¹¡£
¤³¤³¤Ï¾¯¤·Ê£»¨¤Ê¤Î¤Ç¡¢È´¿è¤·¤¿¥³¡¼¥É¤òºÜ¤»¤Þ¤¹¡£
¤Þ¤º¡¤ÎÉôʬ¤Ç¤¹¡£
¤³¤³¤Ç¤ÏÍ×ÁÇ
¥ë¡¼¥×¤¹¤ë¤¿¤Ó¤Ë¥×¥é¥¹£±¤º¤ÄÁý¤ä¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¤«¤é¡¢±é½Ð¤¬»Ï¤Þ¤Ã¤Æ¤«¤é¡¢¤É¤Î¤¯¤é¤¤¤Î»þ´Ö¤¬·Ð¤Ã¤Æ¤¤¤ë¤Î¤«¤Ï¡¢Í×ÁÇ
¤½¤ì¤òƧ¤Þ¤¨¤Æ¢¤ÎÉôʬ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
¤³¤³¤Ç¤Ï¡¢Í×ÁÇ
¥¥ã¥é¥¯¥¿¡¼¤Î²£°ÌÃÖ¤ä½Ä°ÌÃÖ¤òÀßÄꤷ¤Æ¡¢¤µ¤é¤ËÀ¸¤¤Æ¤¤¤ë¾õÂÖ¤ËÌ᤹¤¿¤á¡¢Í×ÁÇ
¤½¤·¤Æ¡¢»Äµ¡¿ô¤òɽ¤¹ÊÑ¿ô
¤½¤Î¸å¡¢ÊÑ¿ô
ÊÑ¿ô
ÊÑ¿ô
¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤é¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢»Äµ¡¿ô¤òɽ¤¹¥¤¥á¡¼¥¸¥³¥ó¥È¥í¡¼¥ë¡Ø
³¤¤¤Æ¤¤ÎÉôʬ¡£Â¿Ê¬¥³¡¼¥É¤ò¸«¤¿¤À¤±¤Ç¡¢¤³¤ì¤¬²¿¤ò¤·¤Æ¤¤¤ë¥³¡¼¥É¤Ê¤Î¤«¤ï¤«¤ë¿Í¤Ï¾¯¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£¼ÂºÝ¤Ë¤Ï¤³¤ó¤Ê¤³¤È¤·¤Ê¤¯¤Æ¤â¤¤¤¤¤ó¤Ç¤¹¤¬¡¢¡Ø±é½Ð¡Ù¤È¤¤¤¦°ÕÌ£¤Ç¤Ï·ë¹½½ÅÍפÊÉôʬ¤À¤È¸Ä¿ÍŪ¤Ë¤Ï»×¤¤¤Þ¤¹¡£
¼Â¤Ï¤³¤Î¤¤ÎÉôʬ¤Ï¡¢ÈïÃÆ¤·¤¿¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬Çúȯ¤·¤Æ¤¤¤ë¥·¡¼¥ó¤ò±é½Ð¤·¤Æ¤¤¤Þ¤¹¡£
Ũ¥¥ã¥é¥¯¥¿¡¼¤Ê¤é¤Þ¤À¤·¤â¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬ÈïÃÆ¤·¤Æ¤·¤Þ¤Ã¤¿¤È¤¤Ë¡¢Ã±È¯¤ÎÇúȯ¤Ç½ª¤ï¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ï¤Ê¤ó¤À¤«¼ä¤·¤¤µ¤¤¬¤·¤Þ¤¹¡£¤³¤ì¤Ï¤«¤Ê¤ê¸Ä¿ÍŪ¤Ê°Õ¸«¤Ç¤¹¤¬¡£
¤½¤³¤Ç¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤Î»àË´»þ¤Î±é½Ð¤È¤·¤Æ¡¢Éü³è¤¹¤ë¤Þ¤Ç¤Î´Ö£¹¥ë¡¼¥×¤´¤È¤ËÇúȯ¤Î¥¨¥Õ¥§¥¯¥È¤òÊ£¿ô²óɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
Çúȯ¥¨¥Õ¥§¥¯¥È¤ÎȯÀ¸¤¹¤ëºÂɸ¤â¥é¥ó¥À¥à¤Ë·è¤á¤Æ¤¤¤ë¤Î¤Ç¡¢¥¥ã¥é¥¯¥¿¡¼¤¬Êø¤ìÍî¤Á¤ë¤è¤¦¤Ë²¿ÅÙ¤âÇúȯ¤·¤Æ¤¤¤ë¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£
¿ʬ¤³¤ì¤Ï¼ÂºÝ¤Ëư¤¯¤Î¤ò¸«¤Æ¤â¤é¤Ã¤¿¤Û¤¦¤¬¤ï¤«¤ê¤ä¤¹¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤Ê¡£¸ÀÍÕ¤ÇÀâÌÀ¤¹¤ë¤Î¤¬Æñ¤·¤¤¡Ä¡Ä¡£¹ÖºÂ¤ÎºÇ¸å¤Ë¡¢¥µ¥ó¥×¥ë¤Ø¤Î¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤è¤«¤Ã¤¿¤é¤½¤Á¤é¤«¤é¥µ¥ó¥×¥ë¤òÍî¤È¤·¤Æ¡¢¼ÂºÝ¤Ë¸«¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¤Û¤¦¤¬¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£
¤È¤ê¤¢¤¨¤º¡¢¤³¤³¤Þ¤Ç¤ÎÁ´¥³¡¼¥É¤ò·ÇºÜ¤·¤Þ¤¹¤Î¤Ç¡¢¤ä¤ëµ¤¤Î¤¢¤ëÊý¤Ï¼«ÎϤǽ¤Àµ¤·¤Æ¤ß¤ë¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£
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 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 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
Sub Init()
With Player_Data
.X = 100
.Y = 210
.W = 3
.H = 3
.Lif = 1
.Typ = 0
.Par = 1
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
With UserForm1.Player
.Visible = True
.Top = 200
End With
End Sub
Sub Main()
Dim Flg As Boolean
Dim Stm As Long
Call Init
Flg = False
Do Until Flg
Stm = GetTickCount
Total_Count = Total_Count + 1
Call Stage_Count
Call Player_Action
Call P_Shot_Action
Call Enemy_Action
Call E_Shot_Action
Call Burst_Action
DoEvents
Do
Call Sleep(1)
Loop Until GetTickCount - Stm > 30
If GetAsyncKeyState(Esc_Key) < 0 Then Flg = True
Loop
End Sub
Sub Stage_Count()
Randomize
Select Case Total_Count Mod 200
Case 0
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 1)
Case 50
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 2)
Case 100
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 3)
End Select
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
MsgBox "Game Over"
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
Exit For
End If
End If
End If
End If
End If
Next
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
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
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 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
¤Á¤Ê¤ß¤Ë¡¢¤³¤³¤Þ¤Ç¤Î¾õÂÖ¤À¤È¡¢°ìÅÙ¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤â¡¢¤ª¤«¤Þ¤¤¤Ê¤·¤Ç¥¥ã¥é¥¯¥¿¡¼¤¬Åо줷³¤±¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤Þ¤À̤´°À®¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¾ÍèŪ¤Ë¤Ï¡¢¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤Ã¤¿¤é¥²¡¼¥à¤¬½ª¤ï¤Ã¤Æ¤·¤Þ¤¦¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¤¬¡¢¤½¤ì¤Ï¤Þ¤¿¼¡²ó°Ê¹ß¡¢¤¬¤ó¤Ð¤Ã¤Æ¤ß¤ë¤³¤È¤Ë¤·¤Þ¤·¤ç¤¦¡£
¤Þ¤º¤Ï¡¢¥µ¥ó¥×¥ë¤ò¤´Í÷ĺ¤¯¤Ê¤ê¡¢¥³¡¼¥É¤ò¼«ÎϤÇÄ´À°¤¹¤ë¤Ê¤ê¤·¤Æ¤¤¤¿¤À¤¤¤Æ¡¢º£²ó¤Þ¤Ç¤ÎÆâÍÆ¤ò¼ÂÁõ¤µ¤»¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥µ¥ó¥×¥ë¥À¥¦¥ó¥í¡¼¥É¡¡¢Í¡¡¥³¥Á¥é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£¡ÊÊÌ´Û¡Ë
¢£³Ê¸À
½çÈ֤˾ò·ï¤Ë±è¤Ã¤Æ¹Í¤¨¤ë
Á´ÂΤι½¿Þ¤ò¤è¤¯Íý²ò¤¹¤ë
¤ä¤äÊ£»¨¤Ç¤¹¤¬¡¢¤Ò¤È¤Ä¤Ò¤È¤Ä½çÈÖ¤ËÍý²ò¤¹¤ë¤³¤È¤¬ÂçÀڤǤ¹¡£
¤µ¤Æ¡¢º£²ó¤ÏÁ°²ó¤Î³¤¤Ç¤¹¡£
¹ÖºÂ¤òÄ̤·¤ÆºîÀ®¤·¤Æ¤¤¤ë¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Ë¡¢»Äµ¡¿ô¤òɽ¼¨¤¹¤ë¤Ù¤¯½àÈ÷¤ò¤·¤¿Á°²ó¡£¤³¤³¤«¤é¤Ï¼ÂºÝ¤Î¥³¡¼¥É¤òµ½Ò¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¡¢¥³¡¼¥É¤ò¤¹¤ó¤Ê¤êÍý²ò¤¹¤ë¤¿¤á¤Ë¤â¡¢Á°²ó¤Î¹ÖºÂ¤ÇºÜ¤»¤¿¿·¤·¤¤¥×¥í¥·¡¼¥¸¥ã¤Î¹½Â¤¤ò¤â¤¦°ìÅÙ¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
If À¸¤¤Æ¤¤¤ë¤« = À¸¤¤Æ¤¤¤ë Then
If ±é½ÐÃæ¤«¤É¤¦¤« = ±é½ÐÃæ Then
Éü³è»þ¤Î±é½Ð
Else
¥¡¼ÆþÎÏȽÄê½èÍý
¤Ï¤ß¤À¤·Ëɻ߽èÍý
¥·¥ç¥Ã¥È¤ò·â¤Ä¤«¤É¤¦¤«¤ÎȽÃÇ
End If
Else
»àË´»þ¤Î±é½Ð
End If
¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¾å¤Î½èÍý
If ±é½ÐÃæ¤«¤É¤¦¤« = ±é½ÐÃæ Then
Éü³è»þ¤Î±é½Ð
Else
¥¡¼ÆþÎÏȽÄê½èÍý
¤Ï¤ß¤À¤·Ëɻ߽èÍý
¥·¥ç¥Ã¥È¤ò·â¤Ä¤«¤É¤¦¤«¤ÎȽÃÇ
End If
Else
»àË´»þ¤Î±é½Ð
End If
¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¾å¤Î½èÍý
¿§¤ÎÃ夤¤Æ¤¤¤ëÉôʬ¤òº£²ó½¤Àµ¤·¤Þ¤¹¡£
½ÅÍפʤΤϡ¢¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸»à¤Î¾õÂ֤䡢±é½ÐÃæ¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ¡¢½èÍý¤¬Ê¬´ô¤¹¤ë¤È¤¤¤¦»ÅÁȤߤǤ¹¡£
¾å¤Î¹½Â¤¿Þ¤ò¤è¤¯¸«¤Ê¤¬¤é¡¢¥²¡¼¥àÃæ¤Î¼ÂºÝ¤Îή¤ì¤ò¥¤¥á¡¼¥¸¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬¡¢º£¸½ºß¡¢À¸¤¤Æ¤¤¤ë¤Î¤«¤¤¤Ê¤¤¤Î¤«¡¢¤½¤ì¤Ë¤è¤Ã¤ÆÀÖ¤¤»ú¤Ç½ñ¤«¤ì¤¿
Ifʸ¤ÎÉôʬ¤Ç½èÍý¤¬Ê¬¤«¤ì¤Þ¤¹¡£¤â¤·¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¤È¤¹¤ë¤È¡¢¡ØÉü³è»þ¤Î±é½Ð¡Ù¤«¡Ø¥×¥ì¥¤¥ä¡¼¤Î½èÍý¡Ù¤Î¤¤¤º¤ì¤«¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£µÕ¤Ë»à¤ó¤Ç¤¤¤ë¤È¤¹¤ë¤È¡¢¡Ø»àË´»þ¤Î±é½Ð¡Ù¤Ë½èÍý¤¬°Ü¤ê¤Þ¤¹¤Í¡£
¤¿¤À¤·¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤µ¤é¤Ë¤â¤¦°ìÃʳ¬¤Îʬ´ô¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤¬ÀĤ¤»ú¤Î
Ifʸ¤Çɽ¤µ¤ì¤Æ¤¤¤ëÉôʬ¤Ë¤¢¤¿¤ê¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢º£¸½ºß¡¢±é½Ð¤ò¤·¤Æ¤¤¤ëºÇÃæ¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ½èÍý¤¬Ê¬´ô¤·¤Þ¤¹¡£¤â¤·¤â±é½ÐÃæ¤Ç¤¢¤ì¤Ð¡¢¤½¤ì¤Ë±þ¤¸¤¿±é½Ð½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¤·¡¢±é½ÐÃæ¤Ç¤Ê¤±¤ì¤Ð¡¢¤³¤ì¤ÏÄ̾ï¤Î¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤òÁàºî¤Ç¤¤ë¾õÂ֤Ȥ¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤¶¤Ã¤¯¤ê¤È¤·¤¿Î®¤ì¤Ï¡¢¤Ê¤ó¤È¤Ê¤¯Íý²ò¤Ç¤¤Þ¤¹¤«¡©
¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¤Î¤«¤É¤¦¤«¡¢¤½¤·¤Æ¡¢À¸¤¤Æ¤¤¤¿¤È¤·¤¿¤é±é½ÐÃæ¤Ê¤Î¤«¤É¤¦¤«¡£¤Þ¤º¤Ï¤½¤ì¤ò¾ò·ïʬ´ô¤Ë¤è¤Ã¤ÆÈ½ÃǤ·¤Þ¤¹¡£¥«¡¼¥½¥ë¥¡¼¤Ç¥¥ã¥é¥¯¥¿¡¼¤òÁàºî¤Ç¤¤ë¤È¤¤Ï¡ØÀ¸¤¤Æ¤¤¤Æ±é½Ð¤·¤Æ¤¤¤Ê¤¤¤È¤¡Ù¤È¤¤¤¦¤³¤È¤Ç¤¹¤Í¡£¤³¤Î¹Í¤¨Êý¤ò¤è¤¯Íý²ò¤·¤¿¤¦¤¨¤Ç¡¢¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
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
MsgBox "Game Over"
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
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
MsgBox "Game Over"
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
¤µ¤Æ¡¢¤Ê¤ó¤À¤«¥«¥é¥Õ¥ë¤Ê¥³¡¼¥É¤Ë¤Ê¤Ã¤Á¤ã¤¤¤Þ¤·¤¿¡£
¿§¤ÎÃ夤¤Æ¤¤¤ëÉôʬ¤¬º£²óÊѹ¹¤Ë¤Ê¤Ã¤¿Éôʬ¤Ç¤¹¡£Àè¤Û¤É¤Î¹½Â¤¿Þ¤È¡¢Æ±¤¸Í×ÎΤǿ§¤¬Ã夤¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤è¤¯¸«Èæ¤Ù¤Æ¤ß¤ë¤È¤Ê¤ó¤È¤Ê¤¯¹½Â¤¤¬¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£
¤Þ¤º¤ÏÎ理Îʸ»úÉôʬ¡£¤³¤³¤Ïñ½ã¤ËÄɲ䵤줿Éôʬ¤Ç¤¹¡£¥³¡¼¥É¤òÄɲ乤ë¤Ë¤¢¤¿¤ê¡¢¿·¤¿¤ËɬÍפȤʤëÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢Íð¿ô¤ò»ÈÍѤ¹¤ë¤Î¤Ç
Randomize¤ò»È¤Ã¤Æ¡¢Íð¿ô¥¸¥§¥Í¥ì¡¼¥¿¤ò½é´ü²½¤·¤Æ¤¤¤Þ¤¹¡£Randomize¤Ë¤Ä¤¤¤Æ¤Ï¡¢°ÊÁ°¤Î¹ÖºÂ¤Ç¾Ü¤·¤¯²òÀ⤷¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤ï¤«¤é¤Ê¤¤¿Í¤Ï¤½¤Á¤é¤âÊ»¤»¤Æ¤É¤¦¤¾(Chapter12¤ò»²¾È)¡£¤µ¤Æ¡¢¤½¤Î¼¡¤ÏÀÖ¤¤»ú¤Î
Ifʸ¤Ç¡¢¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¤«»à¤ó¤Ç¤¤¤ë¤«¤ò¥Á¥§¥Ã¥¯¤·¤Æ½èÍý¤òʬ´ô¤·¤Þ¤¹¡£Í×ÁÇ
Lif¤¬¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸Â¸¾õÂÖ¤òɽ¤·¤Æ¤ª¤ê¡¢¤³¤ÎÉôʬ¤¬£°¤è¤êÂ礤±¤ì¤Ð¡¢¥¥ã¥é¥¯¥¿¡¼¤ÏÀ¸¤¤Æ¤¤¤Þ¤¹¡£µÕ¤Ë£°°Ê²¼¤À¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¥¥ã¥é¥¯¥¿¡¼¤Ï»à¤ó¤Ç¤¤¤ë¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Í¡£¤½¤·¤ÆÀĤ¤»ú¤Ç½ñ¤«¤ì¤Æ¤¤¤ë
Ifʸ¤Ç¤Ï¡¢±é½Ð¤ò¹Ô¤Ã¤Æ¤¤¤ëºÇÃæ¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£±é½Ð¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¡¢Í×ÁÇPar¤¬´ÉÍý¤·¤Þ¤¹¡£¤³¤ÎÍ×ÁǤÎÃͤ¬£°°Ê³°¤Î»þ¤Ë¤Ï¡¢²¿¤«¤·¤é¤Î±é½Ð¤ò¹Ô¤Ã¤Æ¤¤¤ëºÇÃæ¤È¤·¤Æ¹Í¤¨¤Þ¤¹¡£¾å¤Î¤Û¤¦¤Ç½Ð¤Æ¤¯¤ë²«¿§¤¤»ú¤Î½èÍý¤Ç¤Ï¡¢¡ØÉü³è»þ¤Î±é½Ð¡Ù¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢¥¥ã¥é¥¯¥¿¡¼¤¬²èÌ̤β¼¤Î¤Û¤¦¤«¤é¡¢¤æ¤Ã¤¯¤ê¤ÈÅо줹¤ë¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤Þ¤¹¡£
¥¥ã¥é¥¯¥¿¡¼¤Î½Ä°ÌÃÖ¤¬¡¢°ìÄê¤ÎºÂɸ¤Ë㤹¤ë¤Þ¤Ç¡¢¤¹¤³¤·¤º¤Ä¥¥ã¥é¥¯¥¿¡¼¤ò°Üư¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£»ØÄꤵ¤ì¤¿ºÂɸ¤Þ¤ÇÅþ㤷¤¿¤é¡¢±é½Ð¤ò½ª¤ï¤é¤»¤ë¤¿¤á¤ËÍ×ÁÇ
Par¤Ë£°¤òÂåÆþ¤·¤Þ¤¹¡£¤³¤³¤Ç£°¤òÂåÆþ¤·¤¿¤³¤È¤Ë¤è¤Ã¤Æ¡¢¼¡²ó¤Î¥ë¡¼¥×¤«¤é¤Ï¥¥ã¥é¥¯¥¿¡¼¤òÄ̾ïÄ̤ꥫ¡¼¥½¥ë¥¡¼¤ÇÁàºî¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤³¤Þ¤Ç¤¬¡¢¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Î½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¥¥ã¥é¥¯¥¿¡¼¤¬À¸¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢Éü³è»þ¤Î±é½Ð¤«¡¢¤¢¤ë¤¤¤Ï¥«¡¼¥½¥ë¥¡¼¤ÇÁàºî¤Ç¤¤ë¾õÂÖ¤«¤Î¤¤¤º¤ì¤«¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Í¡£
¢£¤½¤ì¤¸¤ã»àË´»þ¤Î½èÍý¤Ï¡©
¤µ¤Æ¼¡¤Ï¥¥ã¥é¥¯¥¿¡¼¤¬»à¤ó¤Ç¤¤¤ë¾ì¹ç¤Î½èÍý¤Ç¤¹¡£
²¼¤Î¤Û¤¦¤Ë¤¢¤ë²«¿§¤¤»ú¤ÎÉôʬ¤¬¤³¤ì¤Ë¤¢¤¿¤ê¤Þ¤¹¡£
¤³¤³¤Ï¾¯¤·Ê£»¨¤Ê¤Î¤Ç¡¢È´¿è¤·¤¿¥³¡¼¥É¤òºÜ¤»¤Þ¤¹¡£
.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
MsgBox "Game Over"
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
'¡If .Par > 50 Then
'¢.X = 100
.Y = 210
.Lif = 1
.Par = 1
Player_Stock = Player_Stock - 1
Select Case Player_Stock
Case Is < 0
MsgBox "Game Over"
'£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
¤Þ¤º¡¤ÎÉôʬ¤Ç¤¹¡£
¤³¤³¤Ç¤ÏÍ×ÁÇ
Par¤ÎÃͤò¥×¥é¥¹£±¤·¤Æ¤¤¤Þ¤¹¤Í¡£¤³¤ì¤Ï²¿¤Î¤¿¤á¤«¤È¤¤¤¤¤Þ¤¹¤È¡¢Í×ÁÇPar¤ò¥«¥¦¥ó¥¿¤ÎÌò³ä¤È¤·¤Æ»È¤¦¤¿¤á¤Ç¤¹¡£¥ë¡¼¥×¤¹¤ë¤¿¤Ó¤Ë¥×¥é¥¹£±¤º¤ÄÁý¤ä¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¤«¤é¡¢±é½Ð¤¬»Ï¤Þ¤Ã¤Æ¤«¤é¡¢¤É¤Î¤¯¤é¤¤¤Î»þ´Ö¤¬·Ð¤Ã¤Æ¤¤¤ë¤Î¤«¤Ï¡¢Í×ÁÇ
Par¤ÎÃͤòÄ´¤Ù¤ë¤³¤È¤Ç¤ï¤«¤ê¤Þ¤¹¡£¤¿¤¯¤µ¤ó¥«¥¦¥ó¥È¤µ¤ì¤¿¤¢¤È¤Ç¤¢¤ì¤Ð¡¢Â礤ÊÃͤ¬Æþ¤Ã¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¤·¡¢µÕ¤Ë¤Þ¤À¤¢¤Þ¤ê»þ´Ö¤¬·Ð¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¾®¤µ¤ÊÃͤ¬Æþ¤Ã¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£¤½¤ì¤òƧ¤Þ¤¨¤Æ¢¤ÎÉôʬ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
¤³¤³¤Ç¤Ï¡¢Í×ÁÇ
Par¤¬£µ£°¤è¤ê¤âÂ礤ÊÃͤˤʤäƤ¤¤ë¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤Þ¤¹¤Í¡£¤â¤·¤â£µ£°¤è¤ê¤âÂ礤ʿôÃͤˤʤë¤Þ¤Ç»þ´Ö¤¬·Ð¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤³¤Ç»àË´»þ¤Î±é½Ð¤ò½ª¤ï¤ê¤Ë¤·¤Æ¡¢Éü³è»þ¤Î½èÍý¤Ø°Ü¹Ô¤µ¤»¤Þ¤¹¡£¥¥ã¥é¥¯¥¿¡¼¤Î²£°ÌÃÖ¤ä½Ä°ÌÃÖ¤òÀßÄꤷ¤Æ¡¢¤µ¤é¤ËÀ¸¤¤Æ¤¤¤ë¾õÂÖ¤ËÌ᤹¤¿¤á¡¢Í×ÁÇ
Lif¤Ë£±¤òÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Éü³è»þ¤Î±é½Ð¤ò¹Ô¤ï¤»¤ë¤¿¤á¤Ë¡¢Í×ÁÇPar¤Ë¤â£±¤òÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ¡¢»Äµ¡¿ô¤òɽ¤¹ÊÑ¿ô
Player_Stock¤ò¤Ò¤È¤Ä¸º¤é¤·¤Þ¤¹¡£¤³¤ì¤Ç»Äµ¡¿ô¤¬¤Ò¤È¤Ä¾¯¤Ê¤¯¤Ê¤ë¤ï¤±¤Ç¤¹¤Í¡£¤½¤Î¸å¡¢ÊÑ¿ô
Player_Stock¤ÎÃͤ˱þ¤¸¤ÆSelect Caseʸ¤Ç½èÍý¤òʬ´ô¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤¬£¤Ç¤¹¡£ÊÑ¿ô
Player_Stock¤ÎÃͤϵ¬ÄêÃͤǣ²¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£ÊÑ¿ô
Player_Stock¤ÎÃͤ¬¡¢£±¤À¤Ã¤¿¤È¤¤Ï£±²ó»à¤ó¤Ç¤·¤Þ¤Ã¤¿¤³¤È¤Ë¤Ê¤ê¡¢£°¤À¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¤¹¤Ç¤Ë£²²ó»à¤ó¤Ç¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤â¤·¤â¤³¤³¤¬¥Þ¥¤¥Ê¥¹¤À¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢£³²ó»à¤ó¤À¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤«¤é¡¢¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ¡¢¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Î¾õÂ֤ˤʤ俤³¤È¤òÄÌÃΤ·¤Æ¤¤¤Þ¤¹¡£¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤é¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢»Äµ¡¿ô¤òɽ¤¹¥¤¥á¡¼¥¸¥³¥ó¥È¥í¡¼¥ë¡Ø
Stock1¡¦Stock2 ¡Ù¤òŬµ¹Èóɽ¼¨¤Ë¤·¤Æ¤¤¤Þ¤¹¡£Â³¤¤¤Æ¤¤ÎÉôʬ¡£Â¿Ê¬¥³¡¼¥É¤ò¸«¤¿¤À¤±¤Ç¡¢¤³¤ì¤¬²¿¤ò¤·¤Æ¤¤¤ë¥³¡¼¥É¤Ê¤Î¤«¤ï¤«¤ë¿Í¤Ï¾¯¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£¼ÂºÝ¤Ë¤Ï¤³¤ó¤Ê¤³¤È¤·¤Ê¤¯¤Æ¤â¤¤¤¤¤ó¤Ç¤¹¤¬¡¢¡Ø±é½Ð¡Ù¤È¤¤¤¦°ÕÌ£¤Ç¤Ï·ë¹½½ÅÍפÊÉôʬ¤À¤È¸Ä¿ÍŪ¤Ë¤Ï»×¤¤¤Þ¤¹¡£
¼Â¤Ï¤³¤Î¤¤ÎÉôʬ¤Ï¡¢ÈïÃÆ¤·¤¿¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬Çúȯ¤·¤Æ¤¤¤ë¥·¡¼¥ó¤ò±é½Ð¤·¤Æ¤¤¤Þ¤¹¡£
Ũ¥¥ã¥é¥¯¥¿¡¼¤Ê¤é¤Þ¤À¤·¤â¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬ÈïÃÆ¤·¤Æ¤·¤Þ¤Ã¤¿¤È¤¤Ë¡¢Ã±È¯¤ÎÇúȯ¤Ç½ª¤ï¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ï¤Ê¤ó¤À¤«¼ä¤·¤¤µ¤¤¬¤·¤Þ¤¹¡£¤³¤ì¤Ï¤«¤Ê¤ê¸Ä¿ÍŪ¤Ê°Õ¸«¤Ç¤¹¤¬¡£
¤½¤³¤Ç¡¢¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤Î»àË´»þ¤Î±é½Ð¤È¤·¤Æ¡¢Éü³è¤¹¤ë¤Þ¤Ç¤Î´Ö£¹¥ë¡¼¥×¤´¤È¤ËÇúȯ¤Î¥¨¥Õ¥§¥¯¥È¤òÊ£¿ô²óɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
Mod±é»»»Ò¤ò»È¤Ã¤Æ¡¢Í×ÁÇPar¤ÎÃͤ¬£µ£°¤è¤ê¤âÂ礤¯¤Ê¤ë¤Þ¤Ç¤Î´Ö¡¢²¿ÅÙ¤«Çúȯ¤Î¥¨¥Õ¥§¥¯¥È¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Çúȯ¥¨¥Õ¥§¥¯¥È¤ÎȯÀ¸¤¹¤ëºÂɸ¤â¥é¥ó¥À¥à¤Ë·è¤á¤Æ¤¤¤ë¤Î¤Ç¡¢¥¥ã¥é¥¯¥¿¡¼¤¬Êø¤ìÍî¤Á¤ë¤è¤¦¤Ë²¿ÅÙ¤âÇúȯ¤·¤Æ¤¤¤ë¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£
¿ʬ¤³¤ì¤Ï¼ÂºÝ¤Ëư¤¯¤Î¤ò¸«¤Æ¤â¤é¤Ã¤¿¤Û¤¦¤¬¤ï¤«¤ê¤ä¤¹¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤Ê¡£¸ÀÍÕ¤ÇÀâÌÀ¤¹¤ë¤Î¤¬Æñ¤·¤¤¡Ä¡Ä¡£¹ÖºÂ¤ÎºÇ¸å¤Ë¡¢¥µ¥ó¥×¥ë¤Ø¤Î¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤è¤«¤Ã¤¿¤é¤½¤Á¤é¤«¤é¥µ¥ó¥×¥ë¤òÍî¤È¤·¤Æ¡¢¼ÂºÝ¤Ë¸«¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¤Û¤¦¤¬¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£
¤È¤ê¤¢¤¨¤º¡¢¤³¤³¤Þ¤Ç¤ÎÁ´¥³¡¼¥É¤ò·ÇºÜ¤·¤Þ¤¹¤Î¤Ç¡¢¤ä¤ëµ¤¤Î¤¢¤ëÊý¤Ï¼«ÎϤǽ¤Àµ¤·¤Æ¤ß¤ë¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£
'ɸ½à¥â¥¸¥å¡¼¥ëÀèÆ¬Éôʬ
'¢¡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 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 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
'Çúȯ¥¨¥Õ¥§¥¯¥È¤Î¼ÂºÝ¤ÎÂ礤µ'½é´ü²½¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ãSub Init()
With Player_Data
.X = 100
.Y = 210
.W = 3
.H = 3
.Lif = 1
.Typ = 0
.Par = 1
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
With UserForm1.Player
.Visible = True
.Top = 200
End With
End Sub
'¥á¥¤¥ó¥×¥í¥»¥¹¤òôÅö¤¹¤ë¥×¥í¥·¡¼¥¸¥ãSub Main()
Dim Flg As Boolean
Dim Stm As Long
Call Init
Flg = False
Do Until Flg
Stm = GetTickCount
Total_Count = Total_Count + 1
Call Stage_Count
Call Player_Action
Call P_Shot_Action
Call Enemy_Action
Call E_Shot_Action
Call Burst_Action
DoEvents
Do
Call Sleep(1)
Loop Until GetTickCount - Stm > 30
If GetAsyncKeyState(Esc_Key) < 0 Then Flg = True
Loop
End Sub
'Ũ¥¥ã¥é¥¯¥¿¡¼¤Î½Ð¸½´ÉÍý¥×¥í¥·¡¼¥¸¥ãSub Stage_Count()
Randomize
Select Case Total_Count Mod 200
Case 0
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 1)
Case 50
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 2)
Case 100
Call Enemy_Begin(Int(Rnd * 120) + 40, -10, 3)
End Select
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
MsgBox "Game Over"
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
Exit For
End If
End If
End If
End If
End If
Next
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
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
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 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
¤Á¤Ê¤ß¤Ë¡¢¤³¤³¤Þ¤Ç¤Î¾õÂÖ¤À¤È¡¢°ìÅÙ¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤â¡¢¤ª¤«¤Þ¤¤¤Ê¤·¤Ç¥¥ã¥é¥¯¥¿¡¼¤¬Åо줷³¤±¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤Þ¤À̤´°À®¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¾ÍèŪ¤Ë¤Ï¡¢¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Ë¤Ê¤Ã¤¿¤é¥²¡¼¥à¤¬½ª¤ï¤Ã¤Æ¤·¤Þ¤¦¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¤¬¡¢¤½¤ì¤Ï¤Þ¤¿¼¡²ó°Ê¹ß¡¢¤¬¤ó¤Ð¤Ã¤Æ¤ß¤ë¤³¤È¤Ë¤·¤Þ¤·¤ç¤¦¡£
¤Þ¤º¤Ï¡¢¥µ¥ó¥×¥ë¤ò¤´Í÷ĺ¤¯¤Ê¤ê¡¢¥³¡¼¥É¤ò¼«ÎϤÇÄ´À°¤¹¤ë¤Ê¤ê¤·¤Æ¤¤¤¿¤À¤¤¤Æ¡¢º£²ó¤Þ¤Ç¤ÎÆâÍÆ¤ò¼ÂÁõ¤µ¤»¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥µ¥ó¥×¥ë¥À¥¦¥ó¥í¡¼¥É¡¡¢Í¡¡¥³¥Á¥é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£¡ÊÊÌ´Û¡Ë
¢£³Ê¸À
½çÈ֤˾ò·ï¤Ë±è¤Ã¤Æ¹Í¤¨¤ë
Á´ÂΤι½¿Þ¤ò¤è¤¯Íý²ò¤¹¤ë
¤ä¤äÊ£»¨¤Ç¤¹¤¬¡¢¤Ò¤È¤Ä¤Ò¤È¤Ä½çÈÖ¤ËÍý²ò¤¹¤ë¤³¤È¤¬ÂçÀڤǤ¹¡£





