I wrote this script for my classmates where we shoot at each other, but after it compiles it says that there was an error and exits out. heres my script, if there is anything in there that needs to be fixed please help me.

#include <allegro.h>
#include <process.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

bool Indian;
int x;
int y;
int Score = 0;
int Timer;
BITMAP* Switch;

int GeneratePicture();
void Menu();
void Fire();
void Time(void* ISeeYou);
void UpdateScreen(void* Hi_Zach);

int main(){
allegro_init();
install_keyboard();
install_mouse();
install_keyboard();
set_color_depth(16);
install_sound (DIGI_AUTODETECT, MIDI_AUTODETECT, "A");
set_gfx_mode( GFX_AUTODETECT, 1280, 960, 0, 0);

    Menu();
    _beginthread( UpdateScreen, 0, 0);
    _beginthread( Time, 0, 0);
    while(!key[KEY_ESC] || !Timer == 0){ 
                      GeneratePicture();
                      Fire();
                      }
                      
}
    
END_OF_MAIN();


void Menu(){
     BITMAP* Menu = load_bitmap("Menu", NULL);
     draw_sprite(screen, Menu, 0, 0);
     readkey();}

int GeneratePicture(){
    int RandomPic;

    srand ( time(NULL) );
    RandomPic = rand() % 10 + 1;
    x = rand() % 1180 + 1;
    y = rand() % 860 + 1;
    
    if (RandomPic == 1 || RandomPic == 2 || RandomPic == 3){
                  Switch = load_bitmap("Kyie1", NULL);}
    if (RandomPic == 4 || RandomPic == 5 || RandomPic == 6){
                  Switch = load_bitmap("Kyie2", NULL);}
    if (RandomPic == 7 || RandomPic == 8 || RandomPic == 9){
                  Switch = load_bitmap("Kyie3", NULL);}
    if (RandomPic == 10){
                  Switch = load_bitmap("Indian", NULL);
                  Indian = true;}
    return 0;
                  }
                  
void UpdateScreen(void* Hi_Zach){
     BITMAP* Background = load_bitmap("Background", NULL);
     BITMAP* Buffer = create_bitmap(1280, 960);
     while(!key[KEY_ESC] || !Timer == 0){
                       draw_sprite(Buffer, Background, 0, 0);
                       draw_sprite(Buffer, Switch, x, y);
                       line( Buffer, mouse_x, 0, mouse_x, 960, makecol( 0, 0, 0));
                       line( Buffer, 0, mouse_y, 1280, mouse_y, makecol( 0, 0, 0));
                       textprintf_ex(Buffer, font, 0, 0, makecol(0,0,0), -1, "Score: %i   Time: %i", Score, Timer);
                       draw_sprite(screen, Buffer, 0, 0);
                       rest(100);}
                       _endthread();}
     
void Time(void *ISeeYou){
     Timer = 30;
     while(Timer != 0){
                 rest(1000);
                 Timer--;
                 }
                 _endthread();
     }


void Fire(){
SAMPLE *Boom = load_sample ("BOOM.wav");
bool hit = false;
     while(!hit){
     rest(100);
     if (mouse_b & 1 && mouse_x > x && mouse_x < x+100 && mouse_y > y && mouse_y < y+100){
                 hit=true;
                 play_sample (Boom, 100, 128, 1000, false);}}
     if (Indian)Score=Score+25;
     else Score=Score+10;}

Edited 5 Years Ago by xXProgrammerXx: n/a

Please help me. I wanted to make this as an end of the year gift to my friends and there are only 10 days left of school.

Can you post the errors ?

BITMAP* Switch;

switch is a keyword. Variables in the name of keywords are not allowed.

Edited 5 Years Ago by Arbus: n/a

It doesn't flag any errors, its just that when I run the program it says "program.exe has stopped working." I usually look through the code and find the problem, but i can't find anything. the only thing I've seen and fixed was that i forgot the .bmp extension.

Why do you have a switch statement as a variable and you even pass it to a function. You use switch as

switch(something) { case 1: dosomething; case 2

Also what does your END_OF_MAIN() function do? Can you post all your source code here and please tell us what compiler are you using. This is a really wierd game!

This question has already been answered. Start a new discussion instead.