estoy haciendo el juego de los marcianitos en c++ utilizando la librería allegro
lo que pasa es que cuando compilo me sale este error
El caso es que el programa estaba hecho en winbgim (para el instituto) pero ahora queria poner mas cosas y con esta librería me quedaba corto asi que lo pase a allegro
el code de allegro es este (falta por acabar la parte de los ifs del main):
Código:
#include <allegro.h>
#include <stdio.h>
void init();
void deinit();
BITMAP *buffer = create_bitmap(640,480);
int vectorm[3][5];
int punts,tocat=1;
int e[5];
int f[3];
int g[5];
int h[3];
void nau(int a,int b,int c,int d)
{
rectfill(buffer,a,b,c,d,4);
rectfill(buffer,a+25,b-10,c-25,d,4);
rectfill(buffer,a+30,b-15,c-30,d,4);
}
void bnau(int a,int b,int c,int d)
{
rectfill(buffer,a,b,c,d,0);
rectfill(buffer,a+25,b-10,c-25,d,0);
rectfill(buffer,a+30,b-15,c-30,d,0);
}
void bmarciano(int m,int z)
{
rectfill(buffer,e[z],f[m],g[z],h[m],0);
rectfill(buffer,e[z]-5,f[m],g[z]-40,h[m]+5,0);
rectfill(buffer,e[z]+40,f[m],g[z]-5,h[m]+5,0);
}
void dibuixar()
{
int c,r;
for(c=0;c<3;c++)
{
for(r=0;r<5;r++)
{
if(vectorm[c][r]==0)
{
rectfill(buffer,e[r],f[c],g[r],h[c],10);
rectfill(buffer,e[r]-5,f[c],g[r]-40,h[c]+5,10);
rectfill(buffer,e[r]+40,f[c],g[r]-5,h[c]+5,10);
rectfill(buffer,e[r]+5,f[c]+5,g[r]-30,h[c]-12,0);
rectfill(buffer,e[r]+25,f[c]+5,g[r]-10,h[c]-12,0);
}
}
}
}
void disparar(int x,int y,int a,int b,int c,int d)
{
int z;
int m;
int salt=0;
while(y>-5)
{
circlefill(buffer,x,y,3,15);
circlefill(buffer,x,y,3,0);
y=y-1;
for(m=0;m<3;m++)
{
if(y>=f[m] && y<=h[m])
{
for(z=0;z<5;z++)
{
if(x>=e[z] && x<=g[z])
{
if(vectorm[m][z]==0)
{
punts++;
printf("Tens %d punts\n",punts);
vectorm[m][z]=1;
bmarciano(m,z);
//cleardevice();
nau(a,b,c,d);
dibuixar();
salt=1;
}
}
if(salt) break;
}
}
if(salt) break;
}
if(salt) break;
}
if(punts>14)
{
printf("FI DEL JOC");
// outtextxy(200,200,"FI DEL JOC");
exit(1);
}
}
void ini_e_g()
{
int i;
for (i=1;i<5;i++)
{
e[i]=e[i-1]+90;
g[i]=g[i-1]+90;
}
}
void ini_f_h()
{
int x;
for(x=1;x<3;++x)
{
f[x]=f[x-1]+60;
h[x]=h[x-1]+60;
}
}
void ini_vectorm()
{
int x,h;
for(x=0;x<3;++x)
{
for(h=0;h<5;++h)
{
vectorm[x][h]=0;
}
}
}
int main()
{
init();
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 500,500,0,0);
int a=100; //barres de la nau
int b=450;
int c=170;
int d=470;
e[0]=40; //barres del marciano
f[0]=20;
g[0]=80;
h[0]=40;
ini_e_g();
ini_f_h();
ini_vectorm();
int x;
int y;
punts=0;
while (!key[KEY_ESC])
{
if(key[KEY_LEFT]);
if(key[KEY_RIGHT]);
if(key[KEY_SPACE]);
blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
}
deinit();
return 0;
}
END_OF_MAIN()
void init()
{
allegro_init();
install_keyboard();
install_timer();
/* add other initializations here */
}
void deinit()
{
clear_keybuf();
/* add other deinitializations here */
}
alomejor en esta linea?
Código:
BITMAP *buffer = create_bitmap(500,500);
pongo el codigo de winbgim por si lo queréis ver:
Código:
#include <winbgim.h>
#include <stdio.h>
#include <conio.h>
#include <vector>
#define KEY_UP 72
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_DOWN 80
#define KEY_ESC 27
int vectorm[3][5];
int punts,tocat=1;
int e[5];
int f[3];
int g[5];
int h[3];
void nau(int a,int b,int c,int d)
{
setcolor(10);
setfillstyle(1,4);
bar3d(a,b,c,d,0,0);
bar3d(a+25,b-10,c-25,d,0,0);
bar3d(a+30,b-15,c-30,d,0,0);
}
void bnau(int a,int b,int c,int d)
{
setcolor(0);
bar3d(a,b,c,d,0,0);
bar3d(a+25,b-10,c-25,d,0,0);
bar3d(a+30,b-15,c-30,d,0,0);
}
void bmarciano(int m,int z)
{
setcolor(0);
bar3d(e[z],f[m],g[z],h[m],0,0);
bar3d(e[z]-5,f[m],g[z]-40,h[m]+5,0,0);
bar3d(e[z]+40,f[m],g[z]-5,h[m]+5,0,0);
}
void dibuixar()
{
int c,r;
for(c=0;c<3;c++)
{
for(r=0;r<5;r++)
{
if(vectorm[c][r]==0)
{
setcolor(4);
setfillstyle(1,10);
bar3d(e[r],f[c],g[r],h[c],0,0);
bar3d(e[r]-5,f[c],g[r]-40,h[c]+5,0,0);
bar3d(e[r]+40,f[c],g[r]-5,h[c]+5,0,0);
setfillstyle(1,0);
bar3d(e[r]+5,f[c]+5,g[r]-30,h[c]-12,0,0);
bar3d(e[r]+25,f[c]+5,g[r]-10,h[c]-12,0,0);
}
}
}
}
void disparar(int x,int y,int a,int b,int c,int d)
{
int z;
int m;
int salt=0;
while(y>-5)
{
setcolor(15);
fillellipse(x,y,3,3);
setcolor(0);
fillellipse(x,y,3,3);
y=y-1;
for(m=0;m<3;m++)
{
if(y>=f[m] && y<=h[m])
{
for(z=0;z<5;z++)
{
if(x>=e[z] && x<=g[z])
{
if(vectorm[m][z]==0)
{
punts++;
printf("Tens %d punts\n",punts);
vectorm[m][z]=1;
bmarciano(m,z);
cleardevice();
nau(a,b,c,d);
dibuixar();
salt=1;
}
}
if(salt) break;
}
}
if(salt) break;
}
if(salt) break;
}
if(punts>14)
{
printf("FI DEL JOC");
outtextxy(200,200,"FI DEL JOC");
exit(1);
}
}
void ini_e_g()
{
int i;
for (i=1;i<5;i++)
{
e[i]=e[i-1]+90;
g[i]=g[i-1]+90;
}
}
void ini_f_h()
{
int x;
for(x=1;x<3;++x)
{
f[x]=f[x-1]+60;
h[x]=h[x-1]+60;
}
}
void ini_vectorm()
{
int x,h;
for(x=0;x<3;++x)
{
for(h=0;h<5;++h)
{
vectorm[x][h]=0;
}
}
}
int main()
{
initwindow(500,500);
int a=100; //barres de la nau
int b=450;
int c=170;
int d=470;
e[0]=40; //barres del marciano
f[0]=20;
g[0]=80;
h[0]=40;
ini_e_g();
ini_f_h();
int x; //coordenades del disparo
int y;
punts=0; //contador de punts
ini_vectorm();
char k;
nau(a,b,c,d);
dibuixar();
while(k!=KEY_ESC)
{
if(kbhit())
{
k=(char)getch();
switch (k)
{
case KEY_RIGHT:
if(c>499);
else
{
bnau(a,b,c,d);
a=a+1;
c=c+1;
bnau(a,b,c,d);
a=a+1;
c=c+1;
nau(a,b,c,d);
bnau(a,b,c,d);
a=a+1;
c=c+1;
bnau(a,b,c,d);
a=a+1;
c=c+1;
nau(a,b,c,d);
}
break;
case KEY_LEFT:
if(a<1);
else
{
bnau(a,b,c,d);
a=a-1;
c=c-1;
bnau(a,b,c,d);
a=a-1;
c=c-1;
nau(a,b,c,d);
bnau(a,b,c,d);
a=a-1;
c=c-1;
bnau(a,b,c,d);
a=a-1;
c=c-1;
nau(a,b,c,d);
}
break;
case KEY_UP:
x=a+35;
y=d-38;
disparar(x,y,a,b,c,d);
break;
}
}
}
outtextxy(200,200,"Fi del Joc");
getchar();
getchar();
closegraph(); //close graphics window
return 0;
}