www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/12/29/22:41:25

From: Kevin Ivarsen <ivarneli AT avalon DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Any Allegro users want to help?
Date: Sun, 29 Dec 1996 20:07:31 -0800
Organization: Avalon Networks Inc.
Lines: 123
Message-ID: <32C74003.36FC@avalon.net>
References: <01bbf45d$777df560$932449c2 AT default>
NNTP-Posting-Host: sioux-city-dial12.avalon.net
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Thomas Harte wrote:
> 
>         All right, I have a working copy of Allegro now, but after all the
> troubles attempting to make it run, I am now having problems following the
> readme files. And the example programs don't seem to help much either.
> Anyway, is there anyone who is feeling charitable enough to help me with a
> few Allegro basics? All I want to do is initiate a graphics mode (basic VGA
> will do, but I'd prefer to have the option), write filled triangles to a
> virtual RAM buffer, and copy this buffer to the video ram. Just a few
> pointers towards the commands I want to be using would be helpful, as I
> would then at least know where in the readme files I was meant to be
> reading. So, anybody want to help?
> 
>                 -Thomas

I wrote this code in about 5 minutes - it's just a triangle bouncing around the screen. 
Messy code, and probably unneccesarily complex for a demo program, but it'll hopefully 
explain some of the basics. Here you go...

#include <stdio.h>
#include <allegro.h> /* Be sure to have this in there! */

main()
{
    double x1, y1, x2, y2, x3, y3; /* Locations of the 3 points of the triangle */
    double xv1, yv1, xv2, yv2, xv3, yv3; /* Velocities of each of the 3 points */
    BITMAP *bmp; /* Here's how you define a bitmap */
    allegro_init(); /* Put this in EVERY program that uses Allegro! */
    set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0); /* Sets the gfx mode to 320X200 */
    (BITMAP *)bmp=create_bitmap(320, 200); /* This initialized the bitmap, sets size */

    x1=50; /* This just sets the locations and velocities of each of the points */
    y1=50;
    x2=100;
    y2=50;
    x3=75;
    y3=100;

    xv1=1.2;
    yv1=-.9;
    xv2=-.8;
    yv2=1.4;
    xv3=1.0;
    yv3=1.1;
    
    while(!kbhit()){ /* Loop until keyboard is hit */
        x1+=xv1; /* Add velocities to points */
        y1+=yv1;
        x2+=xv2;
        y2+=yv2;
        x3+=xv3;
        y3+=yv3;

        if(x1 > 315){  /* Checks to see if point needs to bounce yet, way too complex */
            xv1*=-1;
            x1=315;
        }
        if(x1 < 5){
            xv1*=-1;
            x1=5;
        }
        
        if(x2 > 315){
            xv2*=-1;
            x2=315;
        }
        if(x2 < 5){
            xv2*=-1;
            x2=5;
        }

        if(x3 > 315){
            xv3*=-1;
            x3=315;
        }
        if(x3 < 5){
            xv3*=-1;
            x3=5;
        }
        
        if(y1 > 195){
            yv1*=-1;
            y1=195;
        }
        if(y1 < 5){
            yv1*=-1;
            y1=5;
        }
        
        if(y2 > 195){
            yv2*=-1;
            y2=195;
        }
        if(y2 < 5){
            yv2*=-1;
            y2=5;
        }

        if(y3 > 195){
            yv3*=-1;
            y3=195;
        }
        if(y3 < 5){
            yv3*=-1;
            y3=5;
        }

        /* HERE COMES THE IMPORTANT STUFF!!! */

        clear(bmp); /* Clear the virtual bitmap */
        triangle(bmp, x1, y1, x2, y2, x3, y3, 14); /* Draw a filled triangle to bmp*/
        blit(bmp, screen, 0, 0, 0, 0, 320, 200); /* Transfer image in BMP to screen */
    }
    set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); /* Get vid mode back to text */
    exit(0);  /* Exit */
}


I hope this helps.  Feel free to mail me with any more Allegro questions.  It's hard to 
get used to, but it's a WONDERFUL library - incredibly fast, VERY usefull functions, 
etc. BTW - have you checked out the demo game yet? :)

-Kevin Ivarsen

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019