You are not logged in or registered. Please login or register to use the full functionality of this board...
The QB64 Edition
Waltersmind's - Full Color Animated LED Sign - Printable Version

+- The QB64 Edition (http://www.thejoyfulprogrammer.com/qb64/forum)
+ Thread: Waltersmind's - Full Color Animated LED Sign (/showthread.php?tid=211)



Waltersmind's - Full Color Animated LED Sign - Waltersmind - 02-03-2015 04:34 AM

Donald,

I will be happy to help you in any way that I can, all you have to do is ask.

The differences between QB64-SDL and QB64-GL are: QB64-SDL is no longer supported, updated, or modified. It is basically obsolete. The SDL designation in QB64-SDL is a reference to the fact that Galleon used SDL 1.0 (Simple DirectMedia Layer) library to help provide more features to QB64. You can find the SDL library at: http://www.libsdl.org/.

QB64-GL introduces OPEN-GL (similar to Direct-X) features that was suppose to provide more powerful 3-D capabilities in QB64, but it is rarely used mainly due to most QB64 users do not understand OPEN-GL, and very little documentation, and samples in QB64's wiki. But Galleon did manage to incorporate OPEN-GL into some of QB64's keywords, to give us hardware acceleration. These include, but not limited to, _NEWIMAGE, _PUTIMAGE, and my favorite _MAPTRIANGLE. You can see these in action in the demo that Steve McNeil and myself (I add some additional features to his original demo) created, the _MAPTRIANGLE Test #1 demo that has Steve's rotating text boxes, and my explosions. This is located at: http://www.thejoyfulprogrammer.com/qb64/forum/showthread.php?tid=122&pid=833&rndtime=14229476331567235247#pid833 for those of you who are interested.

I do remember being the first to respond to your games. I don't keep up with all the members on QB64.net, and there are only a few of us members on this forum that actively participate, so it is very easy to remember everyone. A lot of good programmers and developers have come in gone on QB64.net, but it has to do with the politics, and what is allowed on the forum. I will not tolerate negative posts, and hateful members on our forum here.

Anthony was not treated with respect over at QB64.net and he retaliated. I found a friend in Anthony on that forum and I had really enjoy his great posts over there. When I decided to start this forum, I emailed Anthony to let him know what was going on. He was the one that pushed my to go live with the forum long before I wanted to. I was very thankful for that push. When Anthony came aboard on this forum, I didn't have to ask him to act right, because he chose to out of respect, and he has been a valuable asset to our forum by providing great links to many things all over the internet, and providing some really fascinating projects. He has given much more than that, but I don't want to give too big of a head on his shoulders (he he).

And finally, to answer your question about graphics being placed on top of one another. Actually, your answer is in the last sentence. Put simply, all you have to do is draw, or _PUTIMAGE, the images that are in the back first. In the Connect 4 instance, you would draw the chip first, then draw the board on top of it. This is exactly how I draw my animated clock's which you can see at http://www.thejoyfulprogrammer.com/qb64/forum/showthread.php?tid=16&rndtime=14229493141997044407. Here is the run down:

• Draw gradient background
• Draw clock face with numbers
• Draw hour hand
• Draw minute hand
• Draw second hand
• Draw clock face
• Display finished masterpiece to the user
• After slight delay (given by _DISPLAY and _LIMIT #) then loop back and start the drawing all over again

Here is some simple code to help you out on the Connect 4 question.

Code Snippet: [Select]
DIM MainScreen AS LONG
DIM Connect4Board AS LONG
DIM RedPiece AS LONG
DIM BlackPiece AS LONG
'DIM background AS LONG

DIM ScreenWidth AS INTEGER
DIM ScreenHeight AS INTEGER
DIM SquareSize AS INTEGER
DIM HoleSize AS INTEGER
DIM PieceSize AS INTEGER

ScreenWidth = 800
ScreenHeight = 600
SquareSize = 60
HoleSize = SquareSize - 10
PieceSize = SquareSize - 6

MainScreen = _NEWIMAGE(ScreenWidth, ScreenHeight, 32)
Connect4Board = _NEWIMAGE(SquareSize * 7, SquareSize * 6, 32)
RedPiece = _NEWIMAGE(PieceSize, PieceSize, 32)
BlackPiece = _NEWIMAGE(PieceSize, PieceSize, 32)
'background = _NEWIMAGE(ScreenWidth, ScreenHeight, 32)

SCREEN MainScreen

' *** Draw the board
_DEST Connect4Board
FOR y = 0 TO 5
    FOR x = 0 TO 6
        CIRCLE (x * SquareSize + SquareSize / 2, y * SquareSize + SquareSize / 2), HoleSize / 2, _RGB(255, 255, 0)
    NEXT
NEXT

LINE (0, 0)-(_WIDTH(Connect4Board) - 1, _HEIGHT(Connect4Board) - 1), _RGB(255, 255, 0), B
PAINT (1, 1), _RGB(255, 255, 0)

FOR y = 0 TO 5
    FOR x = 0 TO 6
        CIRCLE (x * SquareSize + SquareSize / 2, y * SquareSize + SquareSize / 2), HoleSize / 2, _RGB(100, 100, 0)
    NEXT
NEXT


' *** Draw Black Piece
_DEST BlackPiece
CIRCLE (PieceSize / 2, PieceSize / 2), PieceSize / 2, _RGB(32, 32, 32)
PAINT (PieceSize / 2, PieceSize / 2), _RGB(32, 32, 32)

' *** Draw Red Piece
_DEST RedPiece
CIRCLE (PieceSize / 2, PieceSize / 2), PieceSize / 2, _RGB(200, 0, 0)
PAINT (PieceSize / 2, PieceSize / 2), _RGB(200, 0, 0)


DO
    _LIMIT 10

    _DEST MainScreen

    ' *** Draw Background First
    LINE (0, 0)-(ScreenWidth, ScreenHeight), _RGB(40, 40, 200), BF

    ' *** Draw Some Pieces next
    FOR i = 0 TO 10
        p = INT(RND * 2)

        IF p = 1 THEN
            _PUTIMAGE (RND * (SquareSize * 7) + 170, RND * (SquareSize * 6) + 70), RedPiece, MainScreen
        ELSE
            _PUTIMAGE (RND * (SquareSize * 7) + 170, RND * (SquareSize * 6) + 70), BlackPiece, MainScreen
        END IF
    NEXT

    ' *** Draw Connect 4 Board last
    _PUTIMAGE (200, 100), Connect4Board, MainScreen

    _DISPLAY

LOOP WHILE INKEY$ = ""
SYSTEM



Walter Whitman
The Joyful Programmer
Please subscribe to my YouTube channel at: https://www.youtube.com/channel/UCkkN3_BL4IAyOc9a1MoUr1A