Advertisement
pcsiasop

Agrega y quita dinamicamente

Feb 20th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. using namespace std;
  4. using namespace System;
  5. struct Movil {
  6.     int x;
  7.     int y;
  8.     int vx;
  9.     int vy;
  10.     int color;
  11. };
  12.  
  13. int ce=4;
  14. Movil *moviles=new Movil[ce];
  15. void cargaMoviles()
  16. {
  17.     Random r;
  18.     Movil tmp;
  19.     for (int i = 0; i < ce; i++)
  20.     { //cargando los atributos de un movil
  21.         tmp.x= r.Next(8);
  22.         tmp.y= r.Next(60);
  23.         tmp.vx = 1 + r.Next(3);
  24.         tmp.vy = 1 + r.Next(3);
  25.         tmp.color = r.Next(16);
  26.         //agregamos el movil al vector
  27.         moviles[i]=tmp;
  28.     }
  29. }
  30. void gotoXY(int x, int y)
  31. {
  32.     Console::SetCursorPosition(y, x);
  33. }
  34. void muestraMoviles(Movil *m)
  35. {
  36.     for (int i = 0; i < ce; i++)
  37.     {
  38.         gotoXY(m[i].x, m[i].y);
  39.         Console::ForegroundColor = ConsoleColor(m[i].color);
  40.         cout << "X";
  41.     }
  42. }
  43.  
  44. Movil * agregaMovil(Movil *m)
  45. {
  46.     Movil *vtmp = new Movil[ce + 1];
  47.     for (int i = 0; i < ce; i++)
  48.     {
  49.         vtmp[i] = m[i];
  50.     }
  51.     delete[] m;
  52.     Random r;
  53.     Movil tmp;
  54.     //cargando los atributos de un movil
  55.         tmp.x = r.Next(8);
  56.         tmp.y = r.Next(60);
  57.         tmp.vx = 1 + r.Next(3);
  58.         tmp.vy = 1 + r.Next(3);
  59.         tmp.color = r.Next(16);
  60.         //agrega el movil al vector
  61.         vtmp[ce] = tmp;
  62.         ce++;
  63.         return vtmp;
  64. }
  65.  
  66. Movil * quitaMovil(Movil *m)
  67. {
  68.     Movil *vtmp = new Movil[ce-1];
  69.     for (int i = 0; i < ce-1; i++)
  70.     {
  71.         vtmp[i] = m[i];
  72.     }
  73.     ce--;
  74.     return vtmp;
  75. }
  76.  
  77. void borraMoviles(Movil *m)
  78. {
  79.     for (int i = 0; i < ce; i++)
  80.     {
  81.         gotoXY(m[i].x, m[i].y);
  82.         cout << " ";
  83.  
  84.     }
  85. }
  86. void main()
  87. {
  88.     int opt;
  89.     Console::CursorVisible = false;
  90.     cargaMoviles();
  91.     Movil *vector;
  92.     vector = moviles;
  93.     muestraMoviles(vector);
  94.     while (true)
  95.     {
  96.  
  97.         gotoXY(20, 5); cout << "Cantidad : " << ce;
  98.         if (kbhit())
  99.         { opt=getch();
  100.             if (opt == 72) {
  101.                 vector = agregaMovil(vector);
  102.                 system("cls");
  103.             }
  104.             if (opt == 2) {
  105.                 vector = quitaMovil(vector);
  106.                 system("cls");
  107.             }
  108.         }
  109.         //borras
  110.         borraMoviles(vector);
  111.         //mueves
  112.         for (int i = 0; i < ce; i++)
  113.         {
  114.             if (vector[i].y < 6 || vector[i].y>55) vector[i].vy = vector[i].vy*-1;
  115.             {
  116.                 vector[i].y= vector[i].y+ vector[i].vy;
  117.             }
  118.            
  119.         }
  120.         muestraMoviles(vector);
  121.         _sleep(100);
  122.     }
  123.     system("pause>NULL");
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement