Sign in to follow this  

My allegro space invaders game problem

This topic is 2545 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, I have been working on a game for a while becouse im doing a school project for c++ at the moment.

So my question is i dont really get it.. how do i make fiende2.bmp dissapare when klot.bmp enter fiende2 position. fiende2 is the enemy falling down and klot is the thing you shoot from the spaceship you are when you play the game...

This is my code for the game.... Sorry for my bad english :P I didnt really know how to explain this better.

Short explanation, i want it make possible to shot down the enemy and make it dissapare when the shot get in contact with the enemy.


#include <allegro.h>
#include <cstdlib>
#include <time.h>


void init();
void deinit();


volatile bool redraw = true; // håller koll på när logiken skall skötas om av spelet
bool update=true; // håller koll på när skärmen behöver uppdateras
int tid=0;
bool uppdatera=true;



// - ---------------------------------------------------------------------------------------------------------
void tick() // En funktion som håller koll på framesuppdateringar. För varje gång som denna funktion körs så talar funktionen om att det är dags att uppdatera logiken
{
redraw = true; // Sätt flaggan för logikgenomgång till sant

tid++; // en räknare för skott
}
END_OF_FUNCTION(tick);

// --------------------- Funktioner för skottlistan ----------------
void tabortskott() { // lägg in kod
// gå igenom listan och kolla alla skottens koordinater
// ta bort dem skott vars koordinater är utanför skärmen
// tryck ihop listan så att alla aktiva skott är först i listan
// uppdatera variablen som håller reda på antal aktiva skott
// om listan är tom - sätt skottaktiv till false
// hoppa tillbaka till main
}
void merskott() { // lägg in kod för att öka listan med ett nytt skott
// ingen felcheck behövs, den ska va gjord i main
// lägg till nya koordinater på ledig plats i listan
// hoppa tillbaka till main
}

// gör sedan två liknande funktioner för listan över alla stenar som kan vara aktiva



int main() {
init();
int x,y;

int skott1x,skott1y,skott1dx,fiendx,fiendy,fiendedx;

bool uppdatera=true;
bool skott1aktiv=false;
bool fiende=true;



BITMAP *bakgrund = load_bitmap("image2.bmp", NULL);
BITMAP *gubbe = load_bitmap("bild6.bmp", NULL);
BITMAP *skott = load_bitmap("klot.bmp", NULL);
BITMAP *fienden = load_bitmap("fiende2.bmp", NULL);
BITMAP *buffert = create_bitmap(640,480);


BITMAP *bg = create_bitmap(640,480);

install_int_ex(tick, BPS_TO_TIMER(60)); // logiken skall kollas 6ggr per sek

for(x=0; x<20; x++) {
for(y=0; y<16; y++){

blit(bakgrund, bg, 0,0,x*128,y*128,128,128);
}}
int yy=0;
int xx=220;

x=220;
y=420;
int random;

skott1dx=20;
fiendy=3;

while(!key[KEY_ESC]) {

while(redraw==true) {

if(key[KEY_LEFT]) {x-=8; if (x<0){x=0;}}
if(key[KEY_RIGHT]) {x+=8; if (x>608) {x=608;}}
if(!skott1aktiv && key[KEY_SPACE]) { skott1aktiv=true; skott1x=x+15; skott1y=y; }

if(tid>90) { tid=0; update=true;
random=rand() % 478 + 2; //random position för vart fienden ska ramla ner
fiendx=random; fiendy=0; }

redraw=false;
uppdatera=true;
} // redraw


if (uppdatera){
blit(bg,buffert, 0,0,0,0,640,480);
masked_blit(gubbe, buffert, 0,0,x,y,64,64);



if(skott1aktiv) {
masked_blit(skott, buffert,0,0,skott1x,skott1y,32,32);
skott1y-=skott1dx;
uppdatera=true;
if(skott1y>639 || skott1y<0) skott1aktiv=false;
} // skottaktiv-slingan

if(update) {
masked_blit(fienden, buffert,0,0,fiendx,fiendy,64,64);
fiendy+=6;
if(fiendy>480) update=false;
} // update-slingan

if(skott==fienden){
update=false;

}


blit(buffert, screen, 0,0,0,0,640,480);
uppdatera=false;

}// uppdatera-slingan
} // ESC-slingan



destroy_bitmap(fienden);
destroy_bitmap(buffert);
destroy_bitmap(skott);
destroy_bitmap(bg);
destroy_bitmap(gubbe);
destroy_bitmap(bakgrund);
deinit();
return 0;
}

END_OF_MAIN()

void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT_WINDOWED,640, 480, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1);
}

install_timer();
install_keyboard();
install_mouse();
/* add other initializations here */
}

void deinit() {
clear_keybuf();
/* add other deinitializations here */
}




Share this post


Link to post
Share on other sites

This topic is 2545 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this