• Viernes 19 de Abril de 2024, 06:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Germanplz

Páginas: [1]
1
C/C++ / Ventana que parpadea
« en: Sábado 5 de Julio de 2014, 02:33 »
Estoy tratando de hacer el juego snake pero tengo un problema para hacer los bordes por alguna razón que desconozco los bordes parpadean y el snake con su comida igual, alguien me podría decir como corregirlo
Código: [Seleccionar]
#include <list>
#include <curses.h>
#include <stdlib.h>
#include <time.h>

class snake {
 private:
    int x, y;
 public:
  snake(  int a,  int b) {
   x = a;
   y = b;
  }
  int getX() { return x; }
  int getY() { return y; }
};

int main() {
 // inicio
 srand ( time(NULL) );
 initscr();
 WINDOW *win = newwin(22,40,0,0);
 start_color();
 start_color();//da color
 noecho();
 curs_set(0);
 keypad(stdscr, TRUE);
 timeout(100);

 std::list<snake> snakes;
 std::list<snake>::iterator it;
 bool salir = false;
 int puntos = 0;
 int dir = 2;
 int comida_x = rand() % 40 + 1;
 int comida_y = rand() % 20 + 1;
 int ch;
 for(int i = 0; i < 2; i++) // puntos de partida de snake
  snakes.push_front(snake(3+i,3));

 while(!salir) {
     // entrada
     ch = getch();
     switch(ch) {
      case KEY_UP:
       dir = 1;
       break;
      case KEY_RIGHT:
       dir = 2;
       break;
      case KEY_DOWN:
       dir = 3;
       break;
      case KEY_LEFT:
       dir = 4;
       break;
      case 'p':
       salir = true;
       break;
     }
     // como se mueve
     snake logica = snakes.front();
     int x = logica.getX();
     int y = logica.getY();
     box(win, '_', '/');
     if(dir == 1){
        y=y-1; // hacia arriba
      }
     else if(dir == 2){
        x=x+1; // hacia la derecha
      }
     else if(dir == 3){
        y=y+1; // hacia abajo:
      }
     else if(dir == 4){
     x=x-1; // hacia izquierda
}
    box(win, '_', '/');
    touchwin(win);
    wrefresh(win);
     snakes.push_front(snake(x, y));

     if(x == comida_x && y == comida_y) {
      comida_x = rand() % 40;
      comida_y = rand() % 20;
   puntos++;
     } else
      snakes.pop_back();

     if(y > 20 || x > 40 || y < 0 || x < 0) // colision con los bordes
      salir = true;
     // salida
     erase();
     init_pair(7,COLOR_WHITE,COLOR_WHITE);
        attron(COLOR_PAIR(7));//aplica color
        attron(COLOR_PAIR(7));
     mvaddch(comida_y,comida_x,'ñ');
     attroff(COLOR_PAIR(7));
    attroff(COLOR_PAIR(7));//deja de aplicar color
     for(it = snakes.begin(); it != snakes.end(); it++) {
      init_pair(1,COLOR_GREEN,COLOR_RED);
        attron(COLOR_PAIR(1));
        attron(COLOR_PAIR(1));//aplica color
      mvaddch((*it).getY(),(*it).getX(),'o');
      attroff(COLOR_PAIR(1));
        attroff(COLOR_PAIR(1));//deja de aplicar color
      if((*it).getY() == y && (*it).getX() == x && it != snakes.begin()) // colision con los bordes
       salir = true;
     }
     mvprintw(0, 5, "Tu puntaje es %i. 'p' para salir.\n", puntos);
     refresh();
    }
    timeout(-1);
    erase();
    mvprintw(0, 5, "Perdiste, sacaste un total de %i puntos.\n", puntos);
    refresh();
    getch(); // esperar la salida(perder o que se retire)

 endwin();
 return 0;
}

2
Programación de Videojuegos / como instalar biblioteca ncurses
« en: Miércoles 23 de Abril de 2014, 05:06 »
Como lo dice el asunto quiero instalar la biblioteca ncurses en mi windows 8 de 64 bits, yo uso el compilador dev c++, por favor no me digan que instale linux para usar la bliblioteca ncurses

3
C/C++ / Re:como buscar, reemplazar y reordenar un valor en unarreglo
« en: Miércoles 16 de Abril de 2014, 02:21 »
Gracias me iluminaste, de verdad muchas gracias  :bravo:

4
C/C++ / como buscar, reemplazar y reordenar un valor en unarreglo
« en: Martes 15 de Abril de 2014, 01:21 »
Les explico. Tengo que hacer un programa que cree un vector de tamaño que elija el usuario, luego preguntarle por una posición del arreglo que desea reemplazar y el valor que ira en su lugar,  una vez hecho esto el ultimo valor del vector del lado derecho debe destruirse, y claro imprimir el vector resultante del proceso. Otra cosa importante es que el programa debe terminarse cuando el usuario ingrese la posición -1. Para que se den cuenta de lo que quiero les daré un ejemplo de lo que debería salir por pantalla:
---------------------------------------------------------------------------------------- 
Ingrese un numero: 5
Vector: [5 3 4 1 2]
Ingrese posicion: 0
Ingrese valor: 8
Nuevo vector: [8 5 3 4 1]
Ingrese posicion: 2
Ingrese valor: 42
Nuevo vector: [8 5 42 3 4]
Ingrese posicion: -1
---------------------------------------------------------------------------------------- 
Y esto es lo que llevo. De ante mano les agradezco la ayuda
Código: [Seleccionar]
#include <iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;

int main(int argc, char** argv) {
srand(time(NULL));
int largo=0;int valor=0;int posicion=0;int cambio=0;
cout<<"ingrese el largo del vector: ";
cin>>largo;
cout<<endl<<"el vector es: ";
int vector[largo];
for (int i=0;i<largo;i++){
vector[i]=rand()%11;
cout<<vector[i]<<" ";
}
do {
cout<<endl<<"ingrese la posicion que desea reemplazar: ";
cin>>posicion;
while(posicion>largo){
cout<<endl<<"el valor ingresado en menor al largo del arreglo, ingrese un valor valido: ";
cin >> posicion;
}
cout<<endl<<"ingrese el nuevo valor: ";
cin>>valor;
cout<<endl<<"el nuevo vector es: ";
for (int j=0;j<largo;j++){
vector[posicion]=valor;
cout << vector[j] << " ";
}
            } while (posicion!= -1);


system("pause");
}

5
C/C++ / Re:Problema con un contador de vocales
« en: Domingo 13 de Abril de 2014, 03:07 »
En tu código creo que lo que te falla es la pregunta if(palabra == 'a') cámbialo por if(palabra[n] == 'a') y así en el resto de las comparaciones.
Yo haría algo así, un saludo.

Código: [Seleccionar]
int iNumero;
string sPalabra;
cout << "ingrese un numero" << endl;
cin >> iNumero;
cout << "ingrese " << iNumero << " letras" << endl;
cin >> sPalabra;
int ia, ie, ii, io, iu;
ia = ie = ii = io = iu = 0;
for(int i=0;i<iNumero;i++)
{
if(sPalabra[i] == 'a')
ia++;
if(sPalabra[i] == 'e')
ie++;
if(sPalabra[i] == 'i')
ii++;
if(sPalabra[i] == 'o')
io++;
if(sPalabra[i] == 'u')
iu++;
}
cout << "a = " << ia << endl;
cout << "e = " << ie << endl;
cout << "i = " << ii << endl;
cout << "o = " << io << endl;
cout << "u = " << iu << endl;
que extraño yo puse los if(palabra[n] == 'a'), lo acabo de revisar, pero como dije no funciona. Por otro lado tu código si funciona muy bien, mil gracias.

6
C/C++ / Problema con un contador de vocales
« en: Sábado 12 de Abril de 2014, 22:38 »
Les explico tengo que hacer un contador de vocales. El ejercicio tiene como obligación preguntar la extensión de la palabra que ingresara el usuario, guarde este numero en un arreglo, luego preguntar la palabra e imprimir el numero de vocales repetidas. No se como ser mas claro si que dejare un ejemplo de lo que debería imprimir.
---------------------------------------
Ingrese un numero: 5
Ingrese 5 letras: a b e d a
Conteo:
a 2
e 1
i 0
o 0
u 0
--------------------------------------
ahora les dejo mi código que no logro hacerlo funcionar, si me ayudaran a completarlo estaría agradecido
=======================================================================================
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
   int n=0;int aux1=0;int aux2=0;int aux3=0;int aux4=0;int aux5=0; //aux representan las vocales
   cout<<"ingrese un numero"<<endl;
   cin>>n;
   char palabra [n];//aqui guardo la palabra
   cout<<"ingrese "<<n<<" letras"<<endl;
   for (int i=0;i<n;i++){
   cin>>palabra[n];
}
for(int i=0;i<n;i++){ //con esto recorrería el arreglo y vería las vocales repetidas
if (palabra =='a' ){
aux1=aux1+1; }
else if(palabra =='e'){
aux2=aux2+1; }
else if(palabra =='i'){
aux3=aux3+1; }
else if(palabra =='o'){
aux4=aux4+1; }
else if(palabra =='u'){
aux5=aux5+1; }
} //ahora imprimo mis resultados
cout<<"a = "<<aux1<<endl;
cout<<"e = "<<aux2<<endl;
cout<<"i = "<<aux3<<endl;
cout<<"o = "<<aux4<<endl;
cout<<"u = "<<aux5<<endl;
   system ("pause");
}

Páginas: [1]