インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

Powerpoint VBAで当たり判定を考える。

まだ考え始めた段階でめちゃくちゃですが,考える過程でいろいろ新しいことにも出会えるでしょうし,

学ぶことやその過程に面白いのがでてきたりするので,書きなぐります。

Powerpointなんだから,軌跡などを使って描けばいいんでしょうけど,

速度等をうまく制御することはなかなか難しく,プログラミングのほうが楽だったりします。

前エントリの分子についてもそうです。最初は描いてみてたんです。

メンドクサイ!!の一言。パソコンに計算させたほうが速いし変化などもつけれる。


さて,最終的にたどり着きたいところは,オートシェイプの上を円が転がるようなかんじのもの。

それにエネルギーの概念を足していって,速度を決めていきたい。

動く方向をどう判断させるのかとかも考えないといけない

一度に全部判断はできないので,まずは当たり判定。ゲームプログラミングみたいだ(´▽`) '`,、'`,、

全然できてないですが,こんな感じで考えてみた
f:id:chemiphys:20170114130508p:plain

Option Explicit

Sub 当たり判定()

    Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1)
    Dim Shp(5) As Shape 'てきとう
    
    Set Shp(1) = TSlide.Shapes("Box")
    Set Shp(2) = TSlide.Shapes("FForm")
    Shp(1).Duplicate
    Set Shp(TSlide.Shapes.Count) = TSlide.Shapes(TSlide.Shapes.Count)
    Shp(2).Duplicate
    Set Shp(TSlide.Shapes.Count) = TSlide.Shapes(TSlide.Shapes.Count)
    
    Dim shps As ShapeRange
    TSlide.Shapes.Range(Array(3, 4)).MergeShapes msoMergeIntersect
    If TSlide.Shapes.Count = 2 Then
        Debug.Print "はずれ"
    Else
        Debug.Print "あたり"
        
    End If
    
'    Stop
    
    Dim i As Long
    On Error Resume Next
        For i = TSlide.Shapes.Count To 3 Step -1
            TSlide.Shapes(i).Delete
        Next
    On Error GoTo 0
    
End Sub

判定する二つの物体をduplicateでコピーして,その二つを合成した図形を作らせる。

好都合なことに交わらない時は,合成図形が生成されないぽい。

なので,シェイプ数の変化でとりあえず判断してみた。

きちんと あたり か はずれ かは想定通り返してくれる。

これは速度的にどうなのか。図形が増えたらどうなのか,もっといい方法はないのか,

いろいろ突っ込みどころは満載ですが,なんとなく判断はできているのはうれしい(ΦωΦ)