Results 1 to 3 of 3

Thread: few problems

  1. #1

    Thread Starter
    Lively Member MHENK's Avatar
    Join Date
    Sep 2001
    Location
    Wisconsin
    Posts
    99

    few problems

    Attached find a program I like to call the cannonball game. It is a very basic game, my first attempt at something like this, and I have a few questions.

    1) How can i prevent the user from moveing the Target (the Box) off of the line?
    2) When you hit the target, then hit fire again, it displays the message that you won again... why?
    3)How would I draw a line outlinging the arc of the ball's flight?


    Thanks for your help, i'm sure there will be more questions later.
    "Have you ever woken up, looked at yourself in the mirror, and said 'screw the diet, how fat can i possibly get'?"

  2. #2

    Thread Starter
    Lively Member MHENK's Avatar
    Join Date
    Sep 2001
    Location
    Wisconsin
    Posts
    99

    oops

    forgot to attach....
    "Have you ever woken up, looked at yourself in the mirror, and said 'screw the diet, how fat can i possibly get'?"

  3. #3
    jim mcnamara
    Guest
    Answer to #3 use Bezier curves. Basically, you define a start point, end point, and then two sets of middle points to force the line into any kind of shape you want. PolyBezierTo assume you already have started, so you have a current start point.

    These apis allow you to draw on any object with an hDC.

    Code:
    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private Declare Function PolyBezier Lib "gdi32.dll" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
    Private Declare Function PolyBezierTo Lib "gdi32.dll" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
    Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Any) As Long
    Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Declare Function PolyPolygon Lib "gdi32.dll" (ByVal hdc As Long, lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long) As Long
    Private Sub Form_Paint()
        'KPD-Team 2000
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Dim pts(0 To 6) As POINTAPI
        Dim numpoints(0 To 1) As Long
        'set the coördinates
        pts(0).x = 0: pts(0).y = 100
        pts(1).x = 125: pts(1).y = 75
        pts(2).x = 255: pts(2).y = 148
        pts(3).x = 219: pts(3).y = 199
        pts(4).x = 315: pts(4).y = 203
        pts(5).x = 236: pts(5).y = 16
        pts(6).x = 122: pts(6).y = 123
        'set the forecolor to green
        Me.ForeColor = vbGreen
        'draw the bézier
        PolyBezier Me.hdc, pts(0), 7
        'set the forecolor to red
        Me.ForeColor = vbRed
        'move the 'active' point
        MoveToEx Me.hdc, 200, 25, ByVal 0&
        'set the coördinates
        pts(0).x = 125: pts(0).y = 50
        pts(1).x = 123: pts(1).y = 200
        pts(2).x = 102: pts(2).y = 100
        pts(3).x = 102: pts(3).y = 100
        pts(4).x = 312: pts(4).y = 75
        pts(5).x = 289: pts(5).y = 125
        'draw the bézier
        PolyBezierTo Me.hdc, pts(0), 6
        'set the forecolor to blue
        Me.ForeColor = vbBlue
        'set the points belonging to the rectangle
        pts(0).x = 20: pts(0).y = 10
        pts(1).x = 200: pts(1).y = 10
        pts(2).x = 200: pts(2).y = 190
        pts(3).x = 20: pts(3).y = 190
        numpoints(0) = 4
        'set the points belonging to the triangle
        pts(4).x = 100: pts(4).y = 0
        pts(5).x = 50: pts(5).y = 100
        pts(6).x = 150: pts(6).y = 100
        numpoints(1) = 3
        'draw the polygons
        PolyPolygon Me.hdc, pts(0), numpoints(0), 2
    End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width