Creative Computer Programming: Fraus Asami

Illustrating demons within a Dantean space inspired me to create a demonic leader for each circle of hell. Fraus, the leader of the eighth circle, is particularly important to our creative writing with their troublemaking. In our alternate universes (AUs) my character, Asami, often gets caught up with this demon in some way or another.

Fraus looks something like this. The design has changed over time.





And Asami, one of a pair of twins, takes on different forms depending which incarnation he is in.


(Based on Cabanel's Fallen Angel).

In one AU, Fraus takes over Asami's body during a battle between our characters. It is important to mention that Fraus is a demon that handles plant matter, hence the storybook-like setting of this still:


I decided to animate this pop-up book-esque drawing to create a sense of wind and crawling magic. Once again, it is a WinForms Visual Basic app.


Code here:

Public Class Form1
    Private frausAndLines As Image
    Private frausAsamiBackground As Image
    Private leafSmall() As Image
    Private leafMedium() As Image
    Private leafLarge() As Image
    Private leafSmallXPos() As Single
    Private leafMediumXPos() As Single
    Private leafLargeXPos() As Single
    Private leafSmallYPos() As Single
    Private leafMediumYPos() As Single
    Private leafLargeYPos() As Single
    Private leafSmallSpeed() As Single
    Private leafMediumSpeed() As Single
    Private leafLargeSpeed() As Single
    Private curveSlowerDowner() As Single
    Private dropletSmall() As Image
    Private dropletLarge() As Image
    Private dropletSmallXPos() As Single
    Private dropletSmallYPos() As Single
    Private dropletLargeXPos() As Single
    Private dropletLargeYPos() As Single
    Private dropletSmallSpeed() As Single
    Private dropletLargeSpeed() As Single
    Private frameCount = 60
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 33
        Timer1.Start()

        ReDim leafSmall(20)
        ReDim leafMedium(20)
        ReDim leafLarge(20)
        ReDim leafSmallXPos(50)
        ReDim leafMediumXPos(50)
        ReDim leafLargeXPos(50)
        ReDim leafSmallYPos(50)
        ReDim leafMediumYPos(50)
        ReDim leafLargeYPos(50)
        ReDim leafSmallSpeed(50)
        ReDim leafMediumSpeed(50)
        ReDim leafLargeSpeed(50)
        ReDim curveSlowerDowner(50)
        ReDim dropletSmall(10)
        ReDim dropletLarge(10)
        ReDim dropletSmallXPos(10)
        ReDim dropletSmallYPos(10)
        ReDim dropletLargeXPos(10)
        ReDim dropletLargeYPos(10)
        ReDim dropletSmallSpeed(10)
        ReDim dropletLargeSpeed(10)

        frausAsamiBackground = Bitmap.FromFile("C:\Users\genev\Pictures\arts\fraus asami background.png")

        For n = 0 To 19
            leafSmallXPos(n) = 540
            leafMediumXPos(n) = 536
            leafLargeXPos(n) = 550
            leafSmallYPos(n) = 461 * Rnd() + 40
            leafMediumYPos(n) = 461 * Rnd() + 40
            leafLargeYPos(n) = 461 * Rnd() + 40
            leafSmallSpeed(n) = 6 * Rnd() - 20
            leafMediumSpeed(n) = 6 * Rnd() - 20
            leafLargeSpeed(n) = 6 * Rnd() - 20
            leafSmall(n) = Bitmap.FromFile("C:\Users\genev\Pictures\arts\leaf small.png")
            leafMedium(n) = Bitmap.FromFile("C:\Users\genev\Pictures\arts\leaf medium.png")
            leafLarge(n) = Bitmap.FromFile("C:\Users\genev\Pictures\arts\leaf large.png")
            curveSlowerDowner(n) = (51 * Rnd() + 25)
        Next

        frausAndLines = Bitmap.FromFile("C:\Users\genev\Pictures\arts\fraus asami lines and fraus.png")

        For v = 0 To 9
            dropletSmallXPos(v) = 1001 * Rnd()
            dropletSmallYPos(v) = 822
            dropletLargeXPos(v) = 1001 * Rnd()
            dropletLargeYPos(v) = 976
            dropletSmallSpeed(v) = 2 * Rnd() - 2
            dropletLargeSpeed(v) = 2 * Rnd() - 2
            dropletSmall(v) = Bitmap.FromFile("C:\Users\genev\Pictures\arts\droplet small.png")
            dropletLarge(v) = Bitmap.FromFile("C:\Users\genev\Pictures\arts\droplet large.png")
            curveSlowerDowner(v) = (51 * Rnd() + 25)
        Next

    End Sub

    Private Sub Label1_Paint(sender As Object, e As PaintEventArgs) Handles Label1.Paint
        frameCount += 1
        Dim gr0 = e.Graphics
        gr0.DrawImage(frausAsamiBackground, 0, 0, 1000, 1000)
        For n = 0 To 19
            leafSmallXPos(n) = leafSmallXPos(n) + leafSmallSpeed(n)
            leafSmallYPos(n) = leafSmallYPos(n) + Math.Sin(frameCount / curveSlowerDowner(n))
            leafMediumXPos(n) = leafMediumXPos(n) + leafMediumSpeed(n)
            leafMediumYPos(n) = leafMediumYPos(n) + Math.Sin(frameCount / curveSlowerDowner(n))
            leafLargeXPos(n) = leafLargeXPos(n) + leafLargeSpeed(n)
            leafLargeYPos(n) = leafLargeYPos(n) + Math.Sin(frameCount / curveSlowerDowner(n))

            If leafSmallXPos(n) < -13 Then
                leafSmallXPos(n) = 536
            End If

            If leafMediumXPos(n) < -12 Then
                leafMediumXPos(n) = 536
            End If

            If leafLargeXPos(n) < -48 Then
                leafLargeXPos(n) = 536
            End If

            gr0.DrawImage(leafSmall(n), leafSmallXPos(n), leafSmallYPos(n), 13, 7)
            gr0.DrawImage(leafMedium(n), leafMediumXPos(n), leafMediumYPos(n), 12, 11)
            gr0.DrawImage(leafLarge(n), leafLargeXPos(n), leafLargeYPos(n), 48, 13)
        Next

        gr0.DrawImage(frausAndLines, 0, 0, 1000, 1000)

        For v = 0 To 9
            dropletSmallXPos(v) = dropletSmallXPos(v) + Math.Sin(frameCount / curveSlowerDowner(v))
            dropletSmallYPos(v) = dropletSmallYPos(v) + dropletSmallSpeed(v)
            dropletLargeXPos(v) = dropletLargeXPos(v) + Math.Sin(frameCount / curveSlowerDowner(v))
            dropletLargeYPos(v) = dropletLargeYPos(v) + dropletLargeSpeed(v)

            If dropletSmallYPos(v) < -13 Then
                dropletSmallYPos(v) = 822
            End If

            If dropletLargeYPos(v) < -21 Then
                dropletLargeYPos(v) = 976
            End If

            gr0.DrawImage(dropletSmall(v), dropletSmallXPos(v), dropletSmallYPos(v), 13, 13)
            gr0.DrawImage(dropletLarge(v), dropletLargeXPos(v), dropletLargeYPos(v), 19, 21)
        Next
    End Sub

    Private Sub Label1_DoubleClick(sender As Object, e As EventArgs) Handles Label1.DoubleClick
        Me.Close()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Invalidate()
    End Sub
End Class

Popular Posts

Image

Bottle