Message-ID: <387A90E0.85327532@sympatico.ca> From: BRAD MURPHY X-Mailer: Mozilla 4.05 [en]C-SYMPA (Win95; I) MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: PREVIOUS ? CODE!! Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 185 Date: Tue, 11 Jan 2000 02:15:03 GMT NNTP-Posting-Host: 206.172.197.185 X-Trace: news20.bellglobal.com 947556903 206.172.197.185 (Mon, 10 Jan 2000 21:15:03 EDT) NNTP-Posting-Date: Mon, 10 Jan 2000 21:15:03 EDT Organization: Sympatico To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Here is the source code that a couple of people e-mailed me and asked for, but since this code is from the vivace tutorial, I would expect that it is correct and that I am just doing something wrong when I compile. I include both the .c files with my project, and I add 'alleg' in my libraries(Rhide). Any help would be appreciated. Some of the many errors I get when trying to compile this are listed in the message I wrote yesterday (Sunday). ///////////////////////051s.h////////////////////////////// // Header for the Vivace example 51single extern int end_game; extern BITMAP *dblbuffer; int main (void); void init(void); void input(void); void process(void); void output(void); void shutdown(void); void show_double_buffer(void); /////////////////////////////051sc.h////////////////////////////////////////////////////////////////////////////////////////////////// // Header containing standard reusable functions to move a circle typedef struct circle_t CIRCLE_T; struct circle_t { int x,y,r; // x, y, radius int col; // colour int xs,ys; // x speed, y speed int dx,dy; // drawn x, drawn y }; CIRCLE_T *circle_init(int new_x, int new_y, int new_radius, int new_col, int new_xs, int new_ys); void circle_destroy (CIRCLE_T *circle); void circle_draw (CIRCLE_T *circle, BITMAP *bmp); void circle_update (CIRCLE_T *circle); void circle_erase (CIRCLE_T *circle, BITMAP *bmp); //////////////////051sc.c/////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include "051sc.h" CIRCLE_T *circle_init(int new_x, int new_y, int new_radius, int new_col, int new_xs, int new_ys) CIRCLE_T *temp; // Allocate memory for the circle. If unsuccessful, return NULL. temp = malloc(sizeof(CIRCLE_T)); if (!temp) return NULL; temp->x = new_x; temp->y = new_y; temp->r = new_radius; temp->col = new_col; temp->xs = new_xs; temp->ys = new_ys; temp->dx = temp->dy = 0; return temp; } void circle_destroy(CIRCLE_T * circle) { if (circle) free(circle); } void circle_draw(CIRCLE_T * circle, BITMAP * bmp) { circlefill(bmp, circle->x, circle->y, circle->r, circle->col); circle->dx = circle->x; circle->dy = circle->y; } void circle_update(CIRCLE_T * circle) { // First we update the position of the circle... circle->x += circle->xs; circle->y += circle->ys; // Now we see if it reached the maximum frame border if (circle->x > SCREEN_W - 5) circle->xs *= -1; if (circle->y > SCREEN_H - 5) circle->ys *= -1; if (circle->x < 5) circle->xs *= -1; if (circle->y < 5) circle->ys *= -1; } void circle_erase(CIRCLE_T * circle, BITMAP * bmp) { circlefill(bmp, circle->dx, circle->dy, circle->r, 0); } ///////////////////051s.c/////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include "051s.h" #include "051sc.h" int end_game; /* flag we'll set to end the game */ BITMAP *dblbuffer; CIRCLE_T *moving_circle; int main(void) { allegro_init(); /* initialise the Allegro library */ init(); /* initialise the game */ end_game = 0; /* reset flag */ do { /* loop */ input(); /* get input */ process(); /* process it */ output(); /* give output */ } while (end_game == 0); /* until the flag is set */ shutdown(); /* shut down anything that needs it */ allegro_exit(); /* just for luck */ return 0; /* tell the OS that all went well */ } END_OF_MAIN() void init(void) { install_keyboard(); if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) { printf("%s\n", allegro_error); exit(1); } dblbuffer = create_bitmap(SCREEN_W, SCREEN_H); if (dblbuffer == NULL) { allegro_exit(); printf("Sorry, not enough memory"); exit(2); } clear(dblbuffer); moving_circle = circle_init(SCREEN_W / 2, SCREEN_H / 2, 50, 3, 1, 0); if (moving_circle == NULL) { allegro_exit(); printf("Sorry, not enough memory"); exit(3); } circle_draw(moving_circle, dblbuffer); show_double_buffer(); } void input(void) { if (keypressed()) end_game++; } void process(void) { circle_update(moving_circle); } void output(void) { circle_erase(moving_circle, dblbuffer); circle_draw(moving_circle, dblbuffer); show_double_buffer(); } void shutdown(void) { circle_destroy(moving_circle); destroy_bitmap(dblbuffer); } void show_double_buffer(void) { vsync(); blit(dblbuffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H); }