Ads by Google
¿·¤·¤¤µ»ö¤ò½ñ¤¯»ö¤Ç¹¹ð¤¬¾Ã¤»¤Þ¤¹¡£
½é¿´¼Ô¤Ç¤â¤¤Ã¤È¤Ç¤¤ë¡ª
£Å£ø£ã£å£ì¤µ¤¨»ý¤Ã¤Æ¤¤¤ì¤ÐÆÃÊ̤ʥ½¥Õ¥È¤ÏÉÔÍסª
¤¹¤°¤Ë¤Ç¤â»Ï¤á¤é¤ì¤ë´Êñ¥²¡¼¥à¥×¥í¥°¥é¥ß¥ó¥°¡ª
º£¤¹¤°»Ï¤á¤è¤¦¡ª
¥µ¥ó¥×¥ë¤ä¥²¡¼¥à¤Î¥À¥¦¥ó¥í¡¼¥É¤¬¤Ç¤¤ëÊ̴ۤ⹥ɾ±¿±ÄÃæ¤Ç¤¹¡£
¤´°Õ¸«¤ä¤´¼ÁÌä¡¢¥²¡¼¥à¤Î´¶ÁÛÅù¤Ï·Ç¼¨ÈĤޤǤªµ¤·Ú¤Ë¡£À§Èó¡¢³§¤µ¤ó¤ÎÀ¼¤òʹ¤«¤»¤Æ¤¯¤À¤µ¤¤¡£±¿±Ä¡¢³«È¯¤ÎÎå¤ß¤Ë¤Ê¤ê¤Þ¤¹¡£
³Æ¼ï¥À¥¦¥ó¥í¡¼¥É¤Ï¥³¥Á¥é ¢
|
°Õ¸«¡¦´¶ÁÛ¡¦¼ÁÌä¤Ï¥³¥Á¥é ¢
|
| ±ÆÁÒ¸Ë Shadow warehouse | ¥µ¥Ý¡¼¥È·Ç¼¨ÈÄ |
¥Ö¥í¥°¤ÎÁ´ÂÎÁü¤Ï¥³¥Á¥é ¢
|
¥ê¥ó¥¯¤Î¥Ú¡¼¥¸¤Ï¥³¥Á¥é ¢
|
| ¥µ¥¤¥È¥Þ¥Ã¥× | ¼«Ê¬Ë̤ܰʥê¥ó¥¯ |
Bool·¿¤Ç·ë²Ì¤òÊÖ¤¹Vector·¿¤ÇÊÖ¤¹ CrossLine ¤È¡¢¸òÅÀ¤ÎºÂɸ¤ò»»½Ð¤¹¤ë CrossPoint ¤Î¤Õ¤¿¤Ä¤ò³èÍѤ·¤Ê¤¬¤é¡¢¥Ö¥í¥Ã¥¯Êø¤·¤Î³Ë¤È¤Ê¤ë¥Ü¡¼¥ë¤Î½èÍý¤òºîÀ®¤·¤Æ¤¤¤¤Þ¤¹¡£CrossPoint ¤Î¤Û¤¦¤Ï¡¢¥æ¡¼¥¶¡¼ÄêµÁ·¿¤Ç¤¢¤ë Vector ·¿¤Ç·ë²Ì¤òÊÖ¤·¤Æ¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Þ¤·¤ç¤¦¡£Sub Ball_Move()
Dim L As Long
Dim S As Single
Dim SS As Single
Dim fX As Boolean
'²£Êý¸þ¤Ç¤Î¾×ÆÍ¤¬¤¢¤Ã¤¿¤«¤É¤¦¤«¤òÊÝ»ý¤¹¤ë¥Õ¥é¥°
Dim fY As Boolean
'½ÄÊý¸þ¤Ç¤Î¾×ÆÍ¤¬¤¢¤Ã¤¿¤«¤É¤¦¤«¤òÊÝ»ý¤¹¤ë¥Õ¥é¥°
Dim oX As Single
'Àþʬ¤Î½èÍý¤ËÍøÍѤ¹¤ëXºÂɸ
Dim oY As Single
'Àþʬ¤Î½èÍý¤ËÍøÍѤ¹¤ëYºÂɸ
Dim CP As Vector
'Àþʬ¤Î¸òÅÀºÂɸ¤òÊÝ»ý¤¹¤ë¤¿¤á¤ÎVector·¿ÊÑ¿ô
With Ball
fX = False '¥Õ¥é¥°¤ò½é´ü²½¤¹¤ë
fY = False '¥Õ¥é¥°¤ò½é´ü²½¤¹¤ë
.aX = .bX + .vX * .Sp '°Üư¸å¤Î¥Ü¡¼¥ë¤ÎXºÂɸ¤òµá¤á¤ë
.aY = .bY + .vY * .Sp '°Üư¸å¤Î¥Ü¡¼¥ë¤ÎYºÂɸ¤òµá¤á¤ë
CP.X = .aX
CP.Y = .aY
If .aX < W_Ball / 2 Then
fX = True
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
W_Ball / 2, 0, _
W_Ball / 2, H_Field)
End If
If .aX > W_Field - W_Ball / 2 Then
fX = True
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
W_Field - W_Ball / 2, 0, _
W_Field - W_Ball / 2, H_Field)
End If
If .aY < W_Ball / 2 Then
fY = True
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
0, W_Ball / 2, _
W_Field, W_Ball / 2)
End If
If .aY > H_Field Then
.Vis = False
End If
If .aY <= H_Field / 2 Then
For L = 1 To 25
If Block(L).Vis Then
If Not fX Then
SS = W_Ball / 2
fX = False
If .vX < 0 Then
S = Block(L).X + W_Block / 2
oX = S + SS
Else
S = Block(L).X - W_Block / 2
oX = S - SS
End If
fX = CrossLine(.aX, .aY, _
.bX, .bY, _
oX, Block(L).Y - H_Block / 2 - SS, _
oX, Block(L).Y + H_Block / 2 + SS)
If fX Then
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
oX, Block(L).Y - H_Block / 2 - SS, _
oX, Block(L).Y + H_Block / 2 + SS)
Block(L).Vis = False
If .Sp < 12.5 Then .Sp = .Sp + 0.5
End If
End If
If Not fY Then
SS = W_Ball / 2
fY = False
If .vY < 0 Then
S = Block(L).Y + H_Block / 2
oY = S + SS
Else
S = Block(L).Y - H_Block / 2
oY = S - SS
End If
fY = CrossLine(.aX, .aY, _
.bX, .bY, _
Block(L).X - W_Block / 2 - SS, oY, _
Block(L).X + W_Block / 2 + SS, oY)
If fY Then
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
Block(L).X - W_Block / 2 - SS, oY, _
Block(L).X + W_Block / 2 + SS, oY)
Block(L).Vis = False
If .Sp < 12.5 Then .Sp = .Sp + 0.5
End If
End If
End If
UserForm1.Controls("Label" & L).Visible = Block(L).Vis
Next
If fX Then
.vX = -.vX
.aX = CP.X
.aY = CP.Y
End If
If fY Then
.vY = -.vY
.aX = CP.X
.aY = CP.Y
End If
Else
If .vY > 0 Then
If Not fX And Not fY Then
SS = W_Ball / 2
fX = False
If .vX < 0 Then
S = Bar.X + W_Bar / 2
oX = S + SS
Else
S = Bar.X - W_Bar / 2
oX = S - SS
End If
fX = CrossLine(.aX, .aY, _
.bX, .bY, _
oX, Bar.Y - H_Bar / 2 - SS, _
oX, Bar.Y + H_Bar / 2 + SS)
If fX Then
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
oX, Bar.Y - H_Bar / 2 - SS, _
oX, Bar.Y + H_Bar / 2 + SS)
End If
fY = False
S = Bar.Y - H_Bar / 2
oY = S - SS
fY = CrossLine(.aX, .aY, _
.bX, .bY, _
Bar.X - W_Bar / 2 - SS, oY, _
Bar.X + W_Bar / 2 + SS, oY)
If fY Then
CP = CrossPoint(.aX, .aY, _
.bX, .bY, _
Bar.X - W_Bar / 2 - SS, oY, _
Bar.X + W_Bar / 2 + SS, oY)
End If
End If
End If
If fX Then
.vX = -.vX
.aX = CP.X
.aY = CP.Y
End If
If fY Then
.vY = -.vY
.aX = CP.X
.aY = CP.Y
S = Bar.X - W_Bar / 2
SS = Bar.X + W_Bar / 2
If .aX >= S Then
If .aX <= S + (W_Bar / 3) Then .vX = -Abs(.vX)
End If
If .aX <= SS Then
If .aX >= SS - (W_Bar / 3) Then .vX = Abs(.vX)
End If
If .aX > S + (W_Bar / 3) Then
If .aX < SS - (W_Bar / 3) Then .vY = -Abs(.vY) * 1.05
End If
End If
End If
If .aX < W_Ball / 2 Then .aX = W_Ball / 2
If .aX > W_Field - W_Ball / 2 Then .aX = W_Field - W_Ball / 2
If .aY < W_Ball / 2 Then .aY = W_Ball / 2
.bX = .aX
.bY = .aY
End With
With UserForm1
.Ima_ball.Left = Ball.aX - W_Ball / 2
.Ima_ball.Top = Ball.aY - W_Ball / 2
End With
End Sub
CrossPoint ¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ëÉôʬ) CP ¤Ï¡¢Vector ·¿¤ÎÊÑ¿ô¤Ç¤¹¡£¤Ç¤¹¤«¤é¡¢¥×¥í¥·¡¼¥¸¥ã CrossPoint ¤¬ÊÖ¤·¤Æ¤¯¤ë¸òÅÀºÂɸ¤Î¾ðÊó¤ò¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£CrossPoint ¤ò¸Æ¤Ó½Ð¤·¤¿¤¢¤È¡¢ÊÑ¿ô CP ¤Ë¼èÆÀ¤µ¤ì¤Æ¤¤¤ëºÂɸ¾ðÊó¤òÄ´¤Ù¤ì¤Ð¡¢¥Ü¡¼¥ë¤¬Â¸ºß¤¹¤ë¤Ù¤ºÂɸ¤¬¤ï¤«¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£ CrossLine ¤ò»È¤Ã¤Æ¡¢Àþʬ¤Î¸òº¹¤¬¤¢¤ë¤Î¤«¤É¤¦¤«¤òȽÄꤷ¤Æ¤¤¤Þ¤¹¡£¥Ü¡¼¥ë¤Î°ÜưÁ°¤ÎºÂɸ¤È¡¢°Üư¸å¤ÎºÂɸ¤ò·Ò¤¤¤Ç°ìËܤÎÀþʬ¤òºî¤ê¡¢ÂоݤȤʤë¥Ö¥í¥Ã¥¯¤ä¥Ð¡¼¤Î°ìÊÕ¤òÀþʬ¤È¤·¤Æ¹Í¤¨¡¢¤³¤ì¤éÆóËܤÎÀþʬ¤Î¸òº¹¤òȽÄꤷ¤Þ¤¹¡£ CrossPoint ¤ò¸Æ¤Ó½Ð¤·¡¢¸òÅÀºÂɸ¤Ë¥Ü¡¼¥ë¤òÇÛÃÖ¤¹¤ë¤³¤È¤Ç¡¢¥Ü¡¼¥ë¤ÎºÇ½ªÅª¤ÊºÂɸ°ÌÃÖ¤ò·èÄꤷ¤Æ¤¤¤Þ¤¹¡£¥×¥í¥°¥é¥ß¥ó¥°¤ä ExcelVBA ¤Ë´ØÏ¢¤·¤¿¸¡º÷¤Ë¤Ï¤³¤Á¤é¤ò¤É¤¦¤¾¡£
| fc2 seotool | Excel | VBA | ¥²¡¼¥à | ¥×¥í¥°¥é¥ß¥ó¥° | ¹ÖºÂ |
Author:
±Æ»Â
Excel¤ò¤³¤è¤Ê¤¯°¦¤¹¤ë¡£
DirectX¤òËܳÊŪ¤Ë»ÈÍѤ·¤¿VBA¥²¡¼¥à¤Î³«È¯¤ËÀ®¸ù¡£VBA¥²¡¼¥à³¦¤ÎȯŸ¤ò´ê¤¤¡¢Æü¡¹³èÆ°Ãæ¡£