£Ã£è£á£ð£ô£å£ò.£¶£° [ ¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à£²£°¡§¤¤¤è¤¤¤è´°À®STG ]
¢£¥·¥ç¥Ã¥È´ØÏ¢¤Î½èÍý
¤µ¤¡¡¢¤¤¤è¤¤¤èº£²ó¤Î¹ÖºÂ¤Ç¡¢Ä¹¤«¤Ã¤¿¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Î¹ÖºÂ¤âºÇ¸å¤Ç¤¹¡£µ¤¹ç¤òÆþ¤ì¤Æ´èÄ¥¤ê¤Þ¤·¤ç¤¦¡£
¤½¤ì¤Ç¤Ï¡¢Á°²óÀë¸À¤·¤¿¤È¤ª¤ê¡¢º£²ó¤Ï¥·¥ç¥Ã¥È´ØÏ¢¤Î½èÍý¤ò°ìµ¤¤Ë¤ä¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤Þ¤º¤Ï¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬Êü¤Ã¤¿¥·¥ç¥Ã¥È¤Î½èÍý¤«¤é¸«¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Ï¡¢Ä̾ï¤Î¥¶¥³Å¨¥¥ã¥é¥¯¥¿¡¼¤È¤Ï°ã¤¦¹½Â¤ÂÎÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢¥·¥ç¥Ã¥È¤È¤Î¾×ÆÍȽÄê¤âÆÈ¼«¤Ë¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Äɲäµ¤ì¤Æ¤¤¤ë¤Î¤ÏÎ理Çɽ¼¨¤µ¤ì¤Æ¤¤¤ëÉôʬ¤À¤±¤Ç¤¹¡£
¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤¤¤ë¤³¤È¤Ï¡¢Ä̾ï¤Î¾×ÆÍȽÄê¤ÈÁ´¤¯Æ±¤¸¤³¤È¤ò¤·¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Î°ÌÃÖ¤ÈÂ礤µ¡¢¤³¤ì¤ò¸µ¤Ë¾×ÆÍ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«·×»»¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤Í¡£
¥Ý¥¤¥ó¥È¤Ï¡¢Î理Îʸ»ú¤Î°ìÈֺǽé¤Î¹Ô¤ÎÉôʬ¡£¤³¤³¤Ç¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬Â¸ºß¤·¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Æ¤¤¤Þ¤¹¡£Â¸ºß¤·¤Æ¤¤¤Ê¤¤¤È¤¤Ë¾×ÆÍȽÄê¤ò¹Ô¤¦É¬ÍפÏ̵¤¤¤Î¤Ç¡¢¤³¤³¤Ç¤½¤ì¤òȽÃǤ·¤Æ¤«¤é¾×ÆÍȽÄê¤Î½èÍý¤Ë°Ü¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£
¢£Å¨¥¥ã¥é¥¯¥¿¡¼¤Î¥·¥ç¥Ã¥È
¤µ¤Æ¡¢¼¡¤ËŨ¥¥ã¥é¥¯¥¿¡¼¤Î¥·¥ç¥Ã¥È¤Þ¤ï¤ê¤ò½¤Àµ¤·¤Þ¤·¤ç¤¦¡£
Á°²ó¤Î¹ÖºÂ¤ÇºÜ¤»¤¿¥³¡¼¥É¤ÎÃæ¤Ë¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬Êü¤Ä¥·¥ç¥Ã¥È¤Î½èÍý¤¬¤¢¤ê¤Þ¤·¤¿¡£¤½¤³¤Ç¤Ï¡¢¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤¬£µ¼ïÎà¤Î¥·¥ç¥Ã¥È¤ò·â¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢º£¸½ºß¤Ï£³¼ïÎà¤Î¥·¥ç¥Ã¥È¤·¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
¤³¤³¤Ç¤Ï¡¢¥·¥ç¥Ã¥È¤Î¼ïÎà¤Ë±þ¤¸¤Æ½èÍý¤¬Ê¬¤«¤ì¤ë¤è¤¦¤Ë¡¢Å¬µ¹¡¢¥³¡¼¥É¤Î½¤ÀµµÚ¤ÓÄɲäò¹Ô¤¤¤Þ¤·¤ç¤¦¡£
¤Þ¤º¤Ï¡¢¥·¥ç¥Ã¥È¤òÀ¸À®¤¹¤ë¥×¥í¥·¡¼¥¸¥ã¤Î½¤Àµ¤«¤é¤Ç¤¹¡£
¥·¥ç¥Ã¥È¤ÎÀ¸À®Ãʳ¬¤Ç¡¢¥·¥ç¥Ã¥È¤Î¼ïÎà¤Ë±þ¤¸¤Æ¡¢²èÁü¤¬ÊѲ½¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤¹¡£
¤µ¤Æ¡¢Îп§¤Ë¤Ê¤Ã¤Æ¤¤¤ëÉôʬ¤¬º£²óÄɲ䵤줿Éôʬ¤Ç¤¹¤¬¡¢²¿¤ò¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤«¡¢¤Ê¤ó¤È¤Ê¤¯¤ï¤«¤ê¤Þ¤¹¤«¡©
¤³¤³¤Ç¤Ï¡¢¥·¥ç¥Ã¥È¤Î¥¿¥¤¥×¤Ë¤è¤Ã¤Æ¡¢²èÁü¤¬ÀÚ¤êÂØ¤ï¤ë¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤Þ¤¹¡£
Á°¡¹²ó¤Î¹ÖºÂ¤Ç¡¢¥æ¡¼¥¶¡¼¥Õ¥©¡¼¥à¾å¤Ë¥·¥ç¥Ã¥ÈÍѤθ¶²è¤È¤Ê¤ë¥¤¥á¡¼¥¸¥³¥ó¥È¥í¡¼¥ë¤òÇÛÃÖ¤·¤Þ¤·¤¿¡£¡Ø
¥·¥ç¥Ã¥È¤Î¥¿¥¤¥×¤¬¡¢£±¤«£²¤«£³¤Î¾ì¹ç¤Ë¤Ï¡¢ÀĤ¤¥·¥ç¥Ã¥È¤Î¤Û¤¦¤ò»È¤¤¤Þ¤¹¡£ÀĤ¤¥·¥ç¥Ã¥È¤Î²èÁü¤Ï
¤½¤·¤Æ¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ï
¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤Ç½¤Àµ¤·¤Æ¤¤¤ë¤Î¤Ï¤³¤³¤À¤±¤Ç¤¹¡£´Êñ¤Ç¤¹¤Í¡£
¤µ¤ÆÌäÂê¤Ï¼¡¤Ç¤¹¡£
¥·¥ç¥Ã¥È¤Î£´ÈÖÌܤȣµÈÖÌÜ¡¢¤³¤ì¤¬¤É¤Î¤è¤¦¤Êư¤¤ò¤¹¤ë¤Î¤«¤òÄêµÁ¤·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£¤½¤ì¤¬¼¡¤Î¥³¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£¤Á¤ç¤Ã¤ÈŤ¤¤Ç¤¹¤¬¡¢¿§¤Ä¤¤ÎÉôʬ¤Ë¹Ê¤Ã¤Æ¹Í¤¨¤ì¤ÐÂç¾æÉפÀ¤È»×¤¤¤Þ¤¹¡£
¥·¥ç¥Ã¥È¤Î£´ÈÖÌܤϡ¢´Ê°×Ū¤ÊÄÉÈøÃÆ¤Ç¤¹¡£
¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤Î¸½ºß¤Î²£°ÌÃÖ¤òÄ´¤Ù¤Æ¡¢¤½¤ÎÊý¸þ¤Ø°Üư¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¥·¥ç¥Ã¥È¤Î°ÌÃÖ¤è¤ê¥×¥ì¥¤¥ä¡¼¤¬º¸¤Ë¤¤¤ì¤Ð¡¢¥·¥ç¥Ã¥È¤âº¸¤Ø¸þ¤«¤¦¤È¤¤¤¦¶ñ¹ç¤Ç¤¹¤Í¡£
ÄÉÈøÃÆ¤È¤¤¤¦¤Î¤Ï¡¢ËÜʪ¤ò¤ä¤í¤¦¤È¤¹¤ë¤È·ë¹½ÂçÊѤʤΤǡ¢º£²ó¤Ï´Ê°×Ū¤Ê¼ÂÁõ¤Ëα¤á¤Æ¤¤¤Þ¤¹¡£²£°ÌÃÖ¤òÄ´¤Ù¤Æ¤½¤ÎÊý³Ñ¤Ø°Üư¤µ¤»¤ë¤À¤±¤Ê¤é¡¢·ë¹½´Êñ¤Ç¤¹¤«¤é¤Í¡£
£µÈÖÌܤΥ·¥ç¥Ã¥È¤Ï¡¢Ã±¤Ë²¼Êý¸þ¤Ø¤Þ¤Ã¤¹¤°¿Ê¤à¤À¤±¤Ç¤¹¡£¤¿¤À¤·¡¢£±²ó¤Î¥ë¡¼¥×¤Ç°Üư¤¹¤ëµ÷Î¥¤¬¾¯¡¹Â礤á¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¤Ä¤Þ¤ê¹â®°Üư¤¹¤ë¥·¥ç¥Ã¥È¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤ËÄɲ乤ë¤Î¤Ï¤³¤ì¤À¤±¤ÇOK¤Ç¤¹¡£
¤½¤·¤Æ¡¢¤³¤ì¤Ç½¤Àµ¤Î¤Û¤ÜÁ´¤Æ¤¬´°Î»¤·¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¢£¤Þ¤È¤á
¤¤¤ä¤¡¡¢Ä¹¤«¤Ã¤¿¡£ËÜÅö¤ËŤ«¤Ã¤¿¡£
¤Ò¤È¤Ä¤ÎºîÉʤòºî¤ê¾å¤²¤ë¤È¤¤¤¦¤³¤È¤Ï¡¢ËÜÅö¤ËÂçÊѤÊÏ«ÎϤò»È¤¤¤Þ¤¹¡£¼ê´Ö¤â¡¢º¬µ¤¤â¡¢ÊÂÂçÄñ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤½¤ì¤À¤±¤Ë¡¢ÂçÄñ¤Î¥×¥í¥°¥é¥à¤È¤¤¤¦¤Î¤Ï¡¢ÅÓÃæ¤Ç³«È¯¤¬»ß¤Þ¤Ã¤Æ¤·¤Þ¤¤¡¢Ì¤´°À®¤Ë½ª¤ï¤ë¤³¤È¤¬Â¿¤¤¤Î¤Ç¤¹¡£
¤·¤«¤·¡¢°ÊÁ°¤Ë¤â¸À¤¤¤Þ¤·¤¿¤¬¡¢¥²¡¼¥à¤òºîÀ®¤¹¤ë¾å¤Ç¤È¤Æ¤âÂçÀڤʤ³¤È¤Î¤Ò¤È¤Ä¤¬¡¢¤È¤ê¤¢¤¨¤º´°À®¤µ¤»¤ë¤È¤¤¤¦¤³¤È¤Ê¤Î¤Ç¤¹¡£
¸æÂ÷¤ò¤¤¤¯¤éʤ٤Ƥ⡢¤Ò¤È¤Ä¤ÎºîÉʤ¬½ÐÍè¾å¤¬¤é¤Ê¤«¤Ã¤¿¤é°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó¡£¤¨¤é¤½¤¦¤Ê¤³¤È¤ò¸À¤Ã¤Æ¡¢Ãμ±¤Ð¤Ã¤«¤ê¤¿¤¯¤µ¤ó»ý¤Ã¤Æ¤¤¤Æ¤â¡¢ºîÉʤò»Å¾å¤²¤é¤ì¤Ê¤¤¤¦¤Á¤Ï°ì¿ÍÁ°¤È¤Ï¸À¤¨¤Þ¤»¤ó¡£
¿¾¯´ÊÁǤʤâ¤Î¤Ç¤¢¤Ã¤Æ¤â¡¢¤½¤ì¤¬´°À®ÉʤǤ¢¤ë¤Ê¤é¤Ð¡¢¤½¤ì¤Ï¤¢¤Ê¤¿¤Ë¤È¤Ã¤Æ¤È¤Æ¤â°ÕÌ£¤Î¤¢¤ë¤â¤Î¤Î¤Ï¤º¤Ç¤¹¡£´Êñ¤Ê¥³¡¼¥É¤·¤«½ñ¤±¤Ê¤¯¤Æ¤â¡¢Æñ¤·¤¤¤³¤È¤Ï¤ï¤«¤é¤Ê¤¯¤Æ¤â¡¢ÅØÎϤÎËö¤ËºîÉʤò»Å¾å¤²¤¿¤È¤¤Ë¤Ï¡¢¤¢¤Ê¤¿¤ÏΩÇÉ¤Ê¥×¥í¥°¥é¥Þ¡¼¤Ç¤¹¡£
»ä¤¬Á´¤Æ¤Î¥³¡¼¥É¤ò¸ø³«¤·¤Æ¤¤¤ë¤È¤¤¤¦ÅÔ¹ç¾å¡¢¥³¥Ô¡¼¤¹¤ë¤À¤±¤Ç¤âư¤¯¥²¡¼¥à¤Ï½ÐÍè¾å¤¬¤ê¤Þ¤¹¡£¤Ç¤â¡¢¤³¤³¤Ë¤É¤Î¤è¤¦¤Ê¥¨¥Ã¥»¥ó¥¹¤ò²Ã¤¨¤Æ¤¤¤¯¤«¤Ï¤¢¤Ê¤¿¼¡Âè¡£¤É¤Î¤è¤¦¤Ë±þÍѤ·¤ÆÀ¸¤«¤·¤Æ¤¤¤¯¤Î¤«¤â¤¢¤Ê¤¿¼¡Âè¤Ç¤¹¡£
²¿ÅÙ¤â¸À¤¤¤Þ¤¹¤¬¡¢»ä¤¬¤Ç¤¤ë¤Î¤Ï¡¢³§¤µ¤ó¤Î¤ª¼êÅÁ¤¤¡¢Æ»°ÆÆâ¤À¤±¤Ç¤¹¡£
¤³¤Î¹ÖºÂ¤òÄ̤·¤ÆÆÀ¤¿Ãμ±¤Ç¡¢³§¤µ¤ó¤¬ÆÈ¼«¤ÎÀ¤³¦¤òɽ¸½¤·¤Æ¤¤¤¯¤³¤È¤òÀڤ˴ꤤ¤Þ¤¹¡£
¤È¤Ë¤«¤¯¡¢¤³¤³¤Þ¤Çº¬µ¤¶¯¤¯¿Ê¤á¤Æ¤¤Æ¤¯¤À¤µ¤Ã¤¿³§¤µ¤ó¡£ËÜÅö¤Ë¤ªÈè¤ìÍͤǤ·¤¿¡£
ºÇ¸å¤Ë¥³¡¼¥É¤òÁ´¤Æ·ÇºÜ¤·¤Æ¤ª¤¤Þ¤¹¡£¹ÖºÂ¤ÎºÇ¸å¤Ë¤Ï¡¢¥µ¥ó¥×¥ë¤Î¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤âŽ¤Ã¤Æ¤ª¤¤Þ¤¹¡£¤³¤ì¤é¤ò»²¹Í¤Ë¡¢´èÄ¥¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¹ÖºÂ¡¡Á´¥³¡¼¥É·ÇºÜ
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
¥µ¥ó¥×¥ë¥À¥¦¥ó¥í¡¼¥É¡¡¢Í¡¡¥³¥Á¥é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£¡ÊÊÌ´Û¡Ë
¢£³Ê¸À
¤Þ¤º¤Ï´°À®¤µ¤»¤ë¤³¤È¤¬ÂçÀÚ
¤¢¤È¤ÏÅØÎϤȹ©É×¼¡Âè
¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Îư¤¤Ê¤É¡¢¥µ¥ó¥×¥ë¤ÈÊ»ÍѤ·¤Æ¤ß¤ë¤È¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£
¤µ¤¡¡¢¤¤¤è¤¤¤èº£²ó¤Î¹ÖºÂ¤Ç¡¢Ä¹¤«¤Ã¤¿¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Î¹ÖºÂ¤âºÇ¸å¤Ç¤¹¡£µ¤¹ç¤òÆþ¤ì¤Æ´èÄ¥¤ê¤Þ¤·¤ç¤¦¡£
¤½¤ì¤Ç¤Ï¡¢Á°²óÀë¸À¤·¤¿¤È¤ª¤ê¡¢º£²ó¤Ï¥·¥ç¥Ã¥È´ØÏ¢¤Î½èÍý¤ò°ìµ¤¤Ë¤ä¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤Þ¤º¤Ï¥×¥ì¥¤¥ä¡¼¥¥ã¥é¥¯¥¿¡¼¤¬Êü¤Ã¤¿¥·¥ç¥Ã¥È¤Î½èÍý¤«¤é¸«¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
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
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
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
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
¥µ¥ó¥×¥ë¥À¥¦¥ó¥í¡¼¥É¡¡¢Í¡¡¥³¥Á¥é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£¡ÊÊÌ´Û¡Ë
¢£³Ê¸À
¤Þ¤º¤Ï´°À®¤µ¤»¤ë¤³¤È¤¬ÂçÀÚ
¤¢¤È¤ÏÅØÎϤȹ©É×¼¡Âè
¥Ü¥¹¥¥ã¥é¥¯¥¿¡¼¤Îư¤¤Ê¤É¡¢¥µ¥ó¥×¥ë¤ÈÊ»ÍѤ·¤Æ¤ß¤ë¤È¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£





