Salve a tutti,sono nuovo del forum,volevo chiedervi se sapete come inserire piu nemici in questo semplice videogioco da me creato...io ne ho inserito uno solo,ma nn ho capito se per aggiungerne altri bisogna creare altri listati.Un altra cosa poi,come faccio a cambiare dimensione del carattere quando rappresento i punti e le vite.grazie infinite a chi mi risponderà!javascript:void(0);
Ecco il listato:

/*INDICATORI DI PUNTI E VITA...PARTE 13*/

#include "allegro.h"

BITMAP *buf,*sprite,*sfondo,*scrolling,*cattivo,*playeres plode,*miss;
PALETTE colori;

int x,y,moltiplica,xscroll,xcattivo,ycattivo,xconto,yc onto,morto,tempesplgioc,fuoco,xmiss,ymiss,mortocat tivo,tempesplcattivo,contapunti,vite; /*aggiungo le variabili contapunti e vite*/
char score[160];

void doppiobuffering()
{
vsync();
blit(buf,screen,0,0,0,0,1024,768);
clear(buf);
}

void player(){
if(morto==1){
draw_sprite(buf,sprite,x,y);
}
}

void movimentotasti(){
if(morto==1){
if(key[KEY_LEFT])x=x-10;if(x<=0)x=0;
if(key[KEY_RIGHT])x=x+10;if(x>=1024)x=1024;
if(key[KEY_UP])y=y-10;if(y<=0)y=0;
if(key[KEY_DOWN])y=y+10;if(y>=768)y=768;
if (key[KEY_SPACE]) fuoco=1;
}
}

void fondale(){

xscroll=xscroll+8;;
blit(scrolling,buf,xscroll,0,0,0,1024,768);
if(xscroll>1024){
xscroll=0;
}
}

void nemico(){
if(mortocattivo==1){ /*determina la presneza o meno del nemico*/


draw_sprite(buf,cattivo,xcattivo,ycattivo);
}
}

void movimentonemico(){
if(mortocattivo==1){

if(yconto==1){
ycattivo=ycattivo-8;
if(ycattivo<=10){
yconto=2;
}
}
if(yconto==2){
ycattivo=ycattivo+8;
if(ycattivo>=700){
yconto=3;
}
}
if(yconto==3){
xcattivo=xcattivo-8;
xconto=xconto+8;
if(xconto>=40){
xconto=0;yconto=1;
}
}
if(xcattivo<=-50){
xcattivo=800;
ycattivo=400;
yconto=3;
}
}
}

void collisione() {

if(((x+200)>=xcattivo)&&(x<=(xcattivo+122))){
if(((y+68)>=ycattivo)&&(y<=(ycattivo+68))){
morto=0;
}
}
}

void esplgioc(){
if(morto==0){
if(tempesplgioc<=50){ /*l'esplosione viene visualizzata per 200cicli*/
tempesplgioc=tempesplgioc++;
draw_sprite(buf,playeresplode,x,y);
}
else{
x=10; y=30;
morto=1;
tempesplgioc=0;
vite--; /*solo quando il giocatore viene distrutto si riduce la vita di una*/
}
}
}

void missile(){
if(fuoco==0){ /*se la variabile fuoco è uguale a 0..*/
xmiss=x+200;ymiss=y+20; /*25 coincide cn il punto di partenza del giocatore e 15 la posizione del cannone di fuoco*/
}

if(fuoco==1){
draw_sprite(buf,miss,xmiss,ymiss); /*visualizza lo sprite del missile in punto determinato del monitor*/
xmiss=xmiss+8; /*fa avanzare il proiettile lungo l'asse x*/
if(xmiss>=1024)fuoco=0; /*se il proitettile supera il limite massimo dello schermo"1024" il proiettile scompare*/
}
}

void cattivocolpito(){ /*indica che il nemico è stato colpito*/
if(((xmiss+122)>=xcattivo)&&(xmiss<=(xcattivo+122) )){ /*determina lo spazio di collissione sull'asse x del nemico e del proiettile*/
if(((ymiss+68)>=ycattivo)&&(ymiss<=(ycattivo+68))) { /*"""""""""""""""""""""""""""""""""""""""""""" y""""""""""""""""""""""""""""*/
mortocattivo=0; /*se la collissione è avvenuta il nemico muore*/
xcattivo=800;ycattivo=400;
fuoco=0;
}
}
}

void esplcattivo(){ /*creo la procedura per l'esplosione del nemico*/
if(mortocattivo==0){ /*se il nemico viene colpito la variabile mortocattivo diventa 0 e cosi si attiva l'esplosione*/
if(tempesplcattivo<=100){ /*controlla se tempesplcattivo è uguale a 200*/
tempesplcattivo++; /*il temporizzatore viene incrementato di una unità*/
draw_sprite(buf,playeresplode,xcattivo,ycattivo);
}
else{
xcattivo=800; ycattivo=400;
tempesplcattivo=0;
mortocattivo=1;
contapunti++; /*solo quando il nemico viene distrutto la variabile punti si incrementa di uno*/
}
}
}

void puntivite(){ /*procedura per visualizzare i punti e le vite del giocatore*/
sprintf(score, "PUNTI:%ld VITE: %ld", (long)contapunti,(long)vite); /*con sprintf dà il valore a score e vite per essere visualizzate*/
textout(buf,font,score,10,10,215); /*con textout visualizzamo una stringa di testo in modalita grafica*/
}

int main()
{

allegro_init();
install_keyboard();

set_color_depth(32);
set_palette(colori);

set_gfx_mode(GFX_DIRECTX_SOFT,1024,768,0,0);
buf=create_bitmap(1024,768);
clear(buf);

sprite=load_bmp("player.bmp",colori);
sfondo=load_bmp("fondale.bmp",colori);
cattivo=load_bmp("nemico.bmp",colori);
playeresplode=load_bmp("esplosione.bmp",colori);
miss=load_bmp("missile.bmp",colori);
scrolling=create_bitmap(2048,768);
clear(scrolling);
for(moltiplica=0;moltiplica<=2048;moltiplica=molti plica+1024){
blit(sfondo,scrolling,0,0,moltiplica,0,1024,768);
}

tempesplgioc=0;
tempesplcattivo=0;
morto=1;
x=30;y=60;
xcattivo=800;ycattivo=400;
yconto=1;xconto=0;
fuoco=0; /*setto a 0 il valore fuoco*/
xmiss=0; ymiss=0; /*coordinate iniziali del missile*/
mortocattivo=1; /*determina la presenza del nemico*/
contapunti=0; /*assegno a 0 il valore dei contapunti x inziare*/
vite=3; /*dò 3vite al giocatore*/


while(!key[KEY_ESC]){
doppiobuffering();
fondale();
player();
movimentotasti();
nemico();
movimentonemico();
collisione();
esplgioc();
missile();
cattivocolpito();
esplcattivo();
puntivite();
}

destroy_bitmap(buf);
destroy_bitmap(sprite);
destroy_bitmap(sfondo);
destroy_bitmap(cattivo);
destroy_bitmap(scrolling);
destroy_bitmap(playeresplode);
}

END_OF_MAIN();