| CODE |
| #include <allegro.h> #include <cstdlib> BITMAP *buffer; BITMAP *ship; BITMAP *enemyship; BITMAP *laser; class ENEMIES { public: int x, y, dead; }; class BULLETS { public: int x, y, dead; } bullet[1000]; class ENEMY_BULLETS { public: int x, y, dead; } e_bullet[1000]; int main () { srand(time(0)); int game_pos = 0; int game_check = 0; int start_timer = 500; int x = 388, y = 500; int bullets = 0; int bullet_timer = 0; ENEMIES enemy[5]; int enemies = 5; int dead_enemies = 0; int shoot = 0; int ship_rand = 0; int e_bullets=0; for (int n=1; n<=enemies; n++){ enemy[n].x = 120*n; enemy[n].y = 100; } allegro_init(); install_keyboard(); install_mouse(); set_color_depth(16); set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0); buffer = create_bitmap( 800, 600 ); ship = load_bitmap( "fighter.bmp", NULL); enemyship = load_bitmap( "badfighter.bmp", NULL); laser = load_bitmap( "laser.bmp", NULL); while (!key[KEY_ESC]) { acquire_screen(); clear_to_color(buffer, makecol(0,0,0)); if (game_pos == 0) textout_centre_ex(buffer, font, "Welcome!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 1) textout_centre_ex(buffer, font, "Ready!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 2) textout_centre_ex(buffer, font, "Set!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 3) textout_centre_ex(buffer, font, "Go!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 4) textout_centre_ex(buffer, font, "---Welcome!---", 400, 300, makecol(0,0,0),makecol(0,0,0)); else if (game_pos == 5) textout_centre_ex(buffer, font, "YOU WIN", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 6) textout_centre_ex(buffer, font, "YOU LOSE", 400, 300, makecol(255,255,255), makecol(0,0,0)); if (game_pos == 4){ for (int b=1; b<bullets+1; b++){ if (bullet[b].dead != 1){ draw_sprite(buffer, laser, bullet[b].x, bullet[b].y); } } } for (int eb=0; eb<e_bullets; eb++){ if (e_bullet[eb].dead != 1){ draw_sprite(buffer, laser, e_bullet[e_bullets].x, e_bullet[e_bullets].y); } } for (int i=1; i <=enemies; i++){ if (enemy[i].dead != 1){ draw_sprite(buffer, enemyship, enemy[i].x, enemy[i].y ); } } draw_sprite(buffer, ship, x, y); draw_sprite(screen, buffer, 0, 0); release_screen(); start_timer -= 1; if (start_timer < 0) game_pos = 1; if (start_timer < -250) game_pos = 2; if (start_timer < -500) game_pos = 3; if (start_timer < -750) game_pos = 4; if (start_timer < -1750 && game_check == 1) game_pos = 6; bullet_timer -= 1; if (bullet_timer < 0) bullet_timer = 0; if (key[KEY_RIGHT]) ++x; else if (key[KEY_LEFT]) --x; if (game_pos == 4){ if (key[KEY_SPACE]) { if (bullet_timer == 0){ bullets += 1; bullet[bullets].x = x+13; bullet[bullets].y = y; bullet_timer = 50; } } } for (int t=0; t*999999999 < bullets; t++){ bullet[bullets].y -= 11; } // Code for making the bullet hit the enemies. for (int z=0; z<12; z++){ for (int a=0; a<=32; a++){ for (int v=1; v<=enemies; v++){ for (int u=0; u<=bullets; u++){ if (enemy[v].dead != 1){ if (bullet[u].dead != 1){ if (enemy[v].y+z == bullet[u].y && enemy[v].x+a == bullet[u].x) { dead_enemies+=1; enemy[v].dead=1; bullet[u].dead=1; } } } } } } } for (int g=0; g<12; g++){ for (int h=0; h<=32; h++){ for (int j=0; j<=e_bullets+1; j++){ if (e_bullet[j].dead != 1){ if (y+g == e_bullet[j].y && x+h == e_bullet[j].x) { game_pos = 6; game_check = 1; start_timer = -2000; e_bullet[j].dead=1; } } } } } rest(2); if (dead_enemies == 5){ game_pos = 5; } if (game_pos == 4){ shoot = rand()%50; ship_rand = rand()%6; if (enemy[ship_rand].dead != 1){ if (shoot == 0) { e_bullets+=1; e_bullet[e_bullets].x = enemy[ship_rand].x+13; e_bullet[e_bullets].y = enemy[ship_rand].y; } } } if (e_bullets>0){ for (int m=0; m<=e_bullets; m++){ if (e_bullet[m].dead != 1){ e_bullet[m].y += 11; } } } } return 0; } END_OF_MAIN(); |



| CODE |
| int x = 100; |
| CODE |
| x += .1; |
| CODE |
| x = x + .1; |
| CODE |
int keyPushed; bool keyDown = false; while (!key[KEY_ESC]) { /* Draw stuff */ if (key[KEY_UP]) {DoKeyDown(KEY_UP, 0,-1);} else if (key[KEY_DOWN]) {DoKeyDown(KEY_DOWN, 0,+1);} else if (key[KEY_LEFT]) {DoKeyDown(KEY_LEFT, -1, 0);} else if (key[KEY_RIGHT]) {DoKeyDown(KEY_RIGHT, +1, 0);} else {keyPushed = false;} } } |
| CODE |
void DoKeyDown(int key,int xMove,int yMove) { if ((!keyPushed) || (keyDown != key)) { keyPushed = true; keyDown = key; y+=yMove; x+=xMove; } } |
| CODE |
| #include <allegro.h> #include <cstdlib> BITMAP *buffer; BITMAP *ship; BITMAP *enemyship; BITMAP *laser; class ENEMIES { public: int x, y; }; class BULLETS { public: int x, y; } bullet[100]; int main () { int game_pos = 0; int start_timer = 500; int x = 388, y = 500; int bullets = 0; int bullet_timer = 0; ENEMIES enemy[5]; for (int n=1; n<=5; n++){ enemy[n].x = 120*n; enemy[n].y = 100; } allegro_init(); install_keyboard(); install_mouse(); set_color_depth(16); set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0); buffer = create_bitmap( 800, 600 ); ship = load_bitmap( "fighter.bmp", NULL); enemyship = load_bitmap( "badfighter.bmp", NULL); laser = load_bitmap( "laser.bmp", NULL); while (!key[KEY_ESC]) { acquire_screen(); clear_to_color(buffer, makecol(0,0,0)); if (game_pos == 0) textout_centre_ex(buffer, font, "Welcome!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 1) textout_centre_ex(buffer, font, "Ready!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 2) textout_centre_ex(buffer, font, "Set!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else if (game_pos == 3) textout_centre_ex(buffer, font, "Go!", 400, 300, makecol(255,255,255), makecol(0,0,0)); else textout_centre_ex(buffer, font, "---Welcome!---", 400, 300, makecol(0,0,0),makecol(0,0,0)); for (int b=1; b<bullets+1; b++){ draw_sprite(buffer, laser, bullet[b].x, bullet[b].y); } for (int i=1; i <= 5; i++){ draw_sprite(buffer, enemyship, enemy[i].x, enemy[i].y ); } draw_sprite(buffer, ship, x, y); draw_sprite(screen, buffer, 0, 0); release_screen(); start_timer -= 1; if (start_timer < 0) game_pos = 1; if (start_timer < -250) game_pos = 2; if (start_timer < -500) game_pos = 3; if (start_timer < -750) game_pos = 4; bullet_timer -= 1; if (bullet_timer < 0) bullet_timer = 0; if (key[KEY_RIGHT]) ++x; else if (key[KEY_LEFT]) --x; if (key[KEY_SPACE]) { if (bullet_timer == 0){ bullets += 1; bullet[bullets].x = x; bullet[bullets].y = y; bullet_timer = 50; } } for (int t=2; t < bullets+1; t++){ bullet[bullets].y -= 1; } rest(2); } return 0; } END_OF_MAIN(); |
| CODE |
| for (int b=1; b<bullets+1; b++){ draw_sprite(buffer, laser, bullet[b].x, bullet[b].y); } for (int i=1; i <= 5; i++){ draw_sprite(buffer, enemyship, enemy[i].x, enemy[i].y ); } |
| CODE |
| for (int t=2; t < bullets+1; t++){ bullet[bullets].y -= 1; |
| CODE |
| acquire_screen(); <STUFF> release_screen(); |
| CODE |
class MyResourceAllocator { MyResourceAllocator() {acquire_screen();} ~MyResourceAllocator() {release_screen();} }; // See if you can templatise that! int main() { <STUFF> while (!key[KEY_ESC]) { { // This should be in a function. MyResourceAllocator screen; <DRAW STUFF> } // Goes out of scope here. So screen destructor called. < OTHER STUFF> } } |
| QUOTE |
| for (int t=2; t < bullets+1; t++){ bullet[bullets].y -= 1; } |
| CODE |
| for (int t=1; t < bullets+1; t++){ bullet[t].y -= t; } |
| QUOTE (ChipChamp @ Dec 19 2006, 10:21 AM) |
| Lol! I understand the problem now. That wasn't it. |
| CODE |
| for (int i=1; i <=enemies; i++){ if (enemy[i].dead != 1){ |
| CODE |
| for (int t=0; t*999999999 < bullets; t++){ bullet[bullets].y -= 11; } |
| CODE |
// Code for making the bullet hit the enemies. for (int z=0; z<12; z++){ for (int a=0; a<=32; a++){ for (int v=1; v<=enemies; v++){ // index into enemies wrong for (int u=0; u<=bullets; u++){ |
| CODE |
| for (int f=0; f<=enemies; f++){ if (enemy[f].change >= 100) enemy[f].change = 0; if (enemy[f].change == 50) enemy[f].dir = 1; else if (enemy[f].change == 0) enemy[f].dir = 0; } for (int u=0; u<=enemies; u++){ enemy[u].change += 1; |
| QUOTE |
| Thanks! I think what I did was changed it so that it created 6 enemies and set the enemies variable to 6 |
| CODE |
| <TYPE> enemies[6]; enemies[0]; // Not used in your code enemies[1]; //OK enemies[2]; //OK enemies[3]; //OK enemies[4]; //OK enemies[5]; //OK enemies[6]; // Invalid. Illegal memory location. |
| CODE |
int s =6; STYPE plop[6]; for(int loop=1;loop <=6;++loop) { plop[loop].zzz = 5; // When loop is 1 -> 5 when loop is 6 things will go wrong. } |
| CODE |
| for(int loop=0;loop < <SIZE>;++loop) { <STUFF> } |
| QUOTE (ChipChamp @ Dec 20 2006, 03:51 PM) |
| Well, that's actually what I'm doing. :) Lol |