SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Carlos_isoft en Lunes 4 de Septiembre de 2006, 06:19

Título: Ayuda Urgente... Porfa
Publicado por: Carlos_isoft en Lunes 4 de Septiembre de 2006, 06:19
Holas a todos soy nuevo en este foro, pero tengo muchos conocimientos sobre el  programa c++; ya que curso el primer año de mi carrera ingeneria de software. Actualmente llevo el curso de programacion 2 y el trabajo se trata sobre la creación de un juego de carreras muy simple. Aquí les mando el código que he realizado hasta el momento. Espero que me ayuden a concluirlo porque este trabajo tengo que presentarlo este martes 05 de septiembre.    
Lo que me falta es lo siguiente:
el primero que llegue a la linea anunciarlo como ganador en esa posición.
si hay varios ganadores la posicion mas cercana es la ganadora.
y por último que revisen si se puede mejorar mi código.  

[/CODE]

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#define max 5

typedef struct bicicleta
{
 int x,y,dx;
 int color;
}tbicicleta;
void bicicleta(int c, int x, int y)
{
 textcolor©;
 gotoxy(x,y);
 cprintf(",___V");
 gotoxy(x,y+1);
 cprintf("o   o");
}
void Borra(int x, int y)
{
 gotoxy(x,y);
 printf("      ");
 gotoxy(x,y+1);                        
 printf("      ");
}                                          
                                                                                           
int Pasa(int n)                            
{
 return(n<66?0:1);
}
void linea_final()
{
 int i;
 for (i=1;i<25;i++)
 {
  gotoxy(70,i);
  textcolor(12);
  cprintf("%c\n",176);
 }
}
void main()
{
 int i;
 tbicicleta img[max];
 linea_final();
 randomize();
 for(i=0;i<max;i++)
 {
  img.x=3;
  img.y=3+4*i;
  img.color=10+i;
 }
 for(i=0;i<max;i++)
  bicicleta(img.color,img.x,img.y);
  gotoxy(35,10);
  printf("PULSE ENTER PARA INICIAR");
  getch();
  clrscr();
 int p,g=0,bici[max]={0,0,0,0};
 while(1)
 {
  for(i=0;i<max;i++)
  {
   do
   {
    if(g)
    getch();
    bici=bici+img.x+random(3)+1;
    gotoxy(bici,img.y);
    bicicleta(img.color,bici,img.y);
    p=bici;
   }while((g=Pasa(p)));
  }
  linea_final();
  Sleep(700);
  for(i=0;i<max;i++)
  Borra(bici,img.y);
 }
}
Título: Re: Ayuda Urgente... Porfa
Publicado por: geobeid en Martes 5 de Septiembre de 2006, 05:34
Citar
el primero que llegue a la linea anunciarlo como ganador en esa posición.
si hay varios ganadores la posicion mas cercana es la ganadora.
y por último que revisen si se puede mejorar mi código

no entiendo la duda
Título: Re: Ayuda Urgente... Porfa
Publicado por: geobeid en Martes 5 de Septiembre de 2006, 05:42
UN ERROR ECONTRE POR AHORA QUE ES QUE TU FUNCION QUE BORRA LA BICICLETA PARA QUE AVANCE NO LA BORRA ENTERA. FIJATE BIEN.
EL RESTO ESTA BIEN.

PODRIAS PONER UNA VERIFICACION DE QUE DONDE SE ENCUENTRA LA BICICLETA Y QUE SI ESTA ESTA EN LA META ESCRIBA EN ESTA POCICION EN OTRO COLOR "GANADOR" Y PODES AGREGARLE UN "cout<<"\a\a"" CUANDO IMPRIME GANADOR.

BYTES
Título: Re: Ayuda Urgente... Porfa
Publicado por: geobeid en Martes 5 de Septiembre de 2006, 06:13
SE NOTA QUE ESTOY AL PEDO. ACA LO CORREGI BASTANTE. FIJATE SI ES LO QUE QUERIAS.

Código: Text
  1. #include &#60;stdio.h&#62;
  2. #include &#60;conio.h&#62;
  3. #include &#60;windows.h&#62;
  4. #include &#60;stdlib.h&#62;
  5. #define max 5
  6.  
  7. typedef struct tbicicleta{
  8.         int x,y,dx;
  9.         int color;
  10.         } tbicicleta;
  11.  
  12. void bicicleta(int c, int x, int y){
  13.         if(x&#60;66){
  14.                 textcolor(c);
  15.                 gotoxy(x,y);
  16.                 cprintf(&#34;,___V&#34;);
  17.                 gotoxy(x,y+1);
  18.                 cprintf(&#34;o  o&#34;);}
  19.         else{
  20.                 textcolor(10);
  21.                 gotoxy(x,y);
  22.                 cprintf(&#34;GANADOR&#34;);};
  23.         }
  24.  
  25. void Borra(int x, int y){
  26.         gotoxy(x,y);
  27.         printf(&#34;     &#34;);
  28.         gotoxy(x,y+1);
  29.         printf(&#34;     &#34;);
  30.         }
  31.  
  32. int Pasa(int n){
  33.         return(n&#60;66?0:1);
  34.         }
  35.  
  36. void linea_final(){
  37.         int i;
  38.         for (i=1;i&#60;25;i++){
  39.                 gotoxy(70,i);
  40.                 textcolor(12);
  41.                 cprintf(&#34;%c&#092;n&#34;,176);
  42.                 }
  43.         }
  44.  
  45. void main(){
  46.         int i;
  47.         tbicicleta img[max];
  48.         linea_final();
  49.         randomize();
  50.         for(i=0;i&#60;max;i++){
  51.                 img[i].x=3;
  52.                 img[i].y=3+4*i;
  53.                 img[i].color=10+i;
  54.                 }
  55.  
  56.         for(i=0;i&#60;max;i++){
  57.                 bicicleta(img[i].color,img[i].x,img[i].y);}
  58.         gotoxy(35,10);
  59.         printf(&#34;PULSE ENTER PARA INICIAR&#34;);
  60.         getch();
  61.         clrscr();
  62.         int p,g=0,bici[max]={0,0,0,0};
  63.         while(1){
  64.                 for(i=0;i&#60;max;i++){
  65.                         do{
  66.                         if(g)
  67.                                 getch();
  68.                         bici[i]=bici[i]+img[i].x+random(3)+1;
  69.                         gotoxy(bici[i],img[i].y);
  70.                         bicicleta(img[i].color,bici[i],img[i].y);
  71.                         p=bici[i];
  72.                         }while((g=Pasa(p)));
  73.                 }
  74. linea_final();
  75. Sleep(300);
  76. for(i=0;i&#60;max;i++)
  77. Borra(bici[i],img[i].y);
  78. }
  79. }
  80.