Programación Específica > Allegro

 Problemas Con Allegro Y Números Aleatorios

(1/2) > >>

Cesar2990:
Hola amigos soy nuevo en esto de Allegro tengo un problema, genero un numero aleatorio antes de iniciar allegro y todo marcha bn, pero cuando este numero entra ya con allegro iniciado el valor de esta variable cambia muchisimo y no c q pasa.

----Main----

#include <iostream>

using namespace std;

int dados(int &da);

int main(){
    int d1,d2,dadoT;
    srand (time (NULL));
    d1 = 1 + rand() % 6;
    d2 = 1 + rand() % 6;
    dadoT = d1 + d2;
    cout << d1 << endl;
    cout << d2 << endl;
    cout << dadoT << endl;
    system("pause");
    dados();
}

----Inicio de allegro IniAllegro.cpp----
#include <allegro.h>

void IniAllegro(){
    allegro_init();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode( GFX_AUTODETECT,1024,768,0,0);    
}

----Dado.cpp----
#include <iostream>
#include <cstdlib>
#include <allegro.h>

using namespace std;

//Procedimietos
int IniAllegro();
int dados();
int Movimiento(int &movJugador1);

BITMAP *dado1, *dado2, *dado3, *dado4, *dado5, *dado6, *Tablero, *buffer, *ficha1;
PALETTE paleta;
int d1, d2, dadoT;
int posX1=55;


int dados (int &da1, &da2){        
    IniAllegro();    
    dado1 = load_bitmap("dado1.bmp",paleta);
    dado2 = load_bitmap("dado2.bmp",paleta);
    dado3 = load_bitmap("dado3.bmp",paleta);
    dado4 = load_bitmap("dado4.bmp",paleta);
    dado5 = load_bitmap("dado5.bmp",paleta);
    dado6 = load_bitmap("dado6.bmp",paleta);    
    set_palette(paleta);
    Tablero=load_bitmap("Tablero.bmp",NULL);
    buffer=load_bitmap("Tablero.bmp",NULL);
    acquire_screen();
    draw_sprite(screen,Tablero,0,0);


    while (!key[KEY_SPACE]){
          draw_sprite(screen,dado1,442,339);
          draw_sprite(screen,dado2,442,339);
          draw_sprite(screen,dado3,442,339);
          draw_sprite(screen,dado4,442,339);
          draw_sprite(screen,dado5,442,339);
          draw_sprite(screen,dado6,442,339);

          draw_sprite(screen,dado1,522,339);
          draw_sprite(screen,dado2,522,339);
          draw_sprite(screen,dado3,522,339);
          draw_sprite(screen,dado4,522,339);
          draw_sprite(screen,dado5,522,339);
          draw_sprite(screen,dado6,522,339);
    }
   
    switch (da1){
           case 1:
                draw_sprite(screen,dado1,442,339);
                break;
           case 2:
                draw_sprite(screen,dado2,442,339);
                break;
           case 3:
                draw_sprite(screen,dado3,442,339);
                break;
           case 4:
                draw_sprite(screen,dado4,442,339);
                break;
           case 5:
                draw_sprite(screen,dado5,442,339);
                break;
           case 6:
                draw_sprite(screen,dado6,442,339);
    }
   
    switch (da2){
           case 1:
                draw_sprite(screen,dado1,522,339);
                break;
           case 2:
                draw_sprite(screen,dado2,522,339);
                break;
           case 3:
                draw_sprite(screen,dado3,522,339);
                break;
           case 4:
                draw_sprite(screen,dado4,522,339);
                break;
           case 5:
                draw_sprite(screen,dado5,522,339);
                break;
           case 6:
                draw_sprite(screen,dado6,522,339);
    }          
Movimiento(dadoT);
}

//-----------------------------------------------------------------------------------------------//

---Movimiento.cpp----

int Movimiento(int &movJugador1){
int mov,movi;
mov= movJugador1+movi;
movi=mov;

ficha1=load_bitmap("ficha1.pcx",NULL);
//draw_sprite(screen,ficha1,55,650);

switch (movi){
      case 1:
            draw_sprite(screen,ficha1,posX1,520);            
            textout_ex(screen,font,"HUEHUETENANGO",318,314,makecol(255,0,0),makecol(131,202,238));      
            break;
           
      case 2:            
           draw_sprite(screen,ficha1,posX1,435);
           textout_ex(screen,font,"QUETZALTENANGO",200,250,makecol(255,0,0),makecol(131,202,238));                
           break;

      case 3:
           draw_sprite(screen,ficha1,posX1,350);
           textout_ex(screen,font,"ALTA VERAPAZ",200,260,makecol(255,0,0),makecol(131,202,238));
           break;

      case 4:
           draw_sprite(screen,ficha1,posX1,265);
           textout_ex(screen,font,"AVIAGUAT",200,270,makecol(255,0,0),makecol(131,202,238));
           break;

       case 5:
           draw_sprite(screen,ficha1,posX1,180);
           textout_ex(screen,font,"INDE",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 6:
           draw_sprite(screen,ficha1,posX1,85);
           textout_ex(screen,font,"CARCEL",150,250,makecol(255,0,0),makecol(131,202,238));
           break;
       
       case 7:
           draw_sprite(screen,ficha1,180,85);
           textout_ex(screen,font,"QUICHE",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 8:
           draw_sprite(screen,ficha1,265,85);
           textout_ex(screen,font,"IZABAL",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 9:
           draw_sprite(screen,ficha1,350,85);
           textout_ex(screen,font,"CHIMALTENANGO",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 10:
           draw_sprite(screen,ficha1,350,200);
           textout_ex(screen,font,"PETEN",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 11:
           draw_sprite(screen,ficha1,440,200);
           textout_ex(screen,font,"EL PROGRESO",150,250,makecol(255,0,0),makecol(131,202,238));
           break;

       case 12:
           draw_sprite(screen,ficha1,525,200);
           textout_ex(screen,font,"FEGUA",150,250,makecol(255,0,0),makecol(131,202,238));          
           break;

       default:
           textout_ex(screen,font,"Chorrio si Dio jajaja",150,300,makecol(255,0,0),makecol(131,202,238));          
           break;              
    }

//dados();

while (!key[KEY_ESC]){
textout_ex(screen, font, "Presione ESC para terminar", 400, 120, makecol(255, 255, 255), -1);
}
allegro_exit();
cout << movi <<endl;
system("pause");
}

ibito:
Pero, ¿qué es lo raro? ¿qué es lo que esperas y que sucede? ¿imágenes?
Sugerencias:
-Organiza un poco mejor las cosas.
-Usa los tags de [ code][ /code]  del foro, algo así:

--- Código: Text --- #include &#60;iostream&#62; using namespace std; int dados(int &da); int main(){int d1,d2,dadoT;srand (time (NULL));d1 = 1 + rand() % 6;d2 = 1 + rand() % 6;dadoT = d1 + d2;cout &#60;&#60; d1 &#60;&#60; endl;cout &#60;&#60; d2 &#60;&#60; endl;cout &#60;&#60; dadoT &#60;&#60; endl;system(&#34;pause&#34;);dados();}  -Muestra los errores que tienes.

Cesar2990:
Gracias amigo pues el error que me da es que antes de iniciar allegro mi numero aleatorio funciona, pero cuando pasa por la funcion de los dados dond solo muestro las imagenes de las 6 caras de dado como una animacion y esto parara hasta que presionen la barra espaciadora esto con un

--- Código: Text --- while (!key[KEY_SPACE]){draw_sprite(screen,dado1,442,339);draw_sprite(screen,dado2,442,339);draw_sprite(screen,dado3,442,339);draw_sprite(screen,dado4,442,339);draw_sprite(screen,dado5,442,339);draw_sprite(screen,dado6,442,339); draw_sprite(screen,dado1,522,339);draw_sprite(screen,dado2,522,339);draw_sprite(screen,dado3,522,339);draw_sprite(screen,dado4,522,339);draw_sprite(screen,dado5,522,339);draw_sprite(screen,dado6,522,339);}  despues le mando los valores a la funcion movimiento que mostrara una imagen en cierto lugar de la pantalla quiero hacer un monopoly pero a la hora de ver el valor de la variable sale con un valor por ejemplo 65895 y por eso no me imprime nada de la ficha espero que algien me ayude

ibito:
Disculpame pero no entiendo muy bien tu código, lo único que veo "extraño" y uso las comillas porque a lo mejor está bien, es que por ejemplo aquí:

--- Código: Text --- int main(){int d1,d2,dadoT;srand (time (NULL));d1 = 1 + rand() % 6;d2 = 1 + rand() % 6;dadoT = d1 + d2;cout &#60;&#60; d1 &#60;&#60; endl;cout &#60;&#60; d2 &#60;&#60; endl;cout &#60;&#60; dadoT &#60;&#60; endl;system(&#34;pause&#34;);dados(); // &#60;---- aquí}  
no estás enviando ningún parámetro a la función dados... ¿no tiene nada que ver?

Cesar2990:
Bueno gracias por tu ayuda, mejor te agrego al msn para hablar mejor gracias :D

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa