elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Selector de opciones (consola) en: 25 Julio 2014, 18:40 pm
Hola a todos. Hace mucho que no hago alguna aportación por aquí, y por cutre que sea, voy a poner un selector de opciones, en el que no hay que elegir el número de la opción, sinó hay que mover el marcador con W y S. Bueno, aquí va:

Código
  1. #include <iostream>
  2. #include <vector>
  3. #include <conio.h>
  4. using namespace std;
  5.  
  6. class options{
  7.    vector<string> _options;
  8.    string _title;
  9.  
  10.    void coutTitle()const{
  11.        if(_title.size()==0) return;
  12.        vector<string> v;
  13.        string t = _title;
  14.        while(t.size()>80){
  15.            v.push_back(t.substr(0,80));
  16.            t.erase(0,80);
  17.        }
  18.        v.push_back(t);
  19.        while(v.size()>1){
  20.            cout << v[0];
  21.            v.erase(v.begin());
  22.        }
  23.        cout << string((80-v[0].size())/2,' ') << v[0] << endl << endl;
  24.    }
  25.  
  26. public:
  27.    options(){}
  28.    options(string title):_title(title){}
  29.    options(const options& o):_options(o.getOptions()),_title(o.getTitle()){}
  30.    void setTitle(string title){
  31.        _title = title;
  32.    }
  33.    string getTitle()const{
  34.        return _title;
  35.    }
  36.    vector<string> getOptions()const{
  37.        return _options;
  38.    }
  39.    string getOption(size_t i)const{
  40.        if(i<_options.size()) return _options[i];
  41.        return "";
  42.    }
  43.    void addOption(string option){
  44.        _options.push_back(option);
  45.    }
  46.    void addOptions(const vector<string>& v){
  47.        for(int i=0; i<v.size(); i++)
  48.            _options.push_back(v[i]);
  49.    }
  50.    void setOptions(const vector<string>& v){
  51.        _options = v;
  52.    }
  53.    int show()const{
  54.        int index = 0;
  55.        char c = 0;
  56.        while(c!='\r' && c!='\n'){
  57.            system("cls");
  58.            coutTitle();
  59.            for(int i=0; i<_options.size(); i++){
  60.                cout << '[' << (i==index?'X':' ') << "] " << _options[i] << endl;
  61.            }
  62.            c = getch();
  63.            if((c=='w' || c=='W') && index>0)
  64.                --index;
  65.            if((c=='s' || c=='S') && index<_options.size()-1)
  66.                ++index;
  67.        }
  68.        return index;
  69.    }
  70. };
  71.  
  72. int main(){
  73.    options op;
  74.    op.setTitle("Que querrias ser en otra vida?");
  75.    op.addOption("Un Dios.");
  76.    op.addOption("Un gobernador.");
  77.    op.addOption("Un pensador.");
  78.    op.addOption("Un trabajador.");
  79.    op.addOption("Un esclavo.");
  80.    cout << endl << endl << op.show();
  81. }

Se le pone un titulo, se le agregan las opciones, y se invoca .show(). Show retorna el índice de la opcion elegida.


Utilizo la función system("cls") y getch(). Quién las quiera cambiar por otras, es libre de hacerlo, este código no tiene copyright xD

Usé getch() de conio.h porque es la más rápida y sencilla.

Jeje esto lo hice hace unos 4 años, pero lo hice a lo cutre con 2 solas opciones (y me costó). Ahora, años después, he visto lo terriblemente sencilo que es jaja.

"Una vez más, la experiencia marca la aptitud."

Saludos, espero que a alguien le sea útil :p
12  Programación / Programación General / Concurso Tuenti en: 29 Abril 2014, 00:45 am
Hoy sobre las 13:00 ha comenzado el concurso de programación de Tuenti.
http://contest.tuenti.net
Avisi, para quién no lo haya visto y quiera participar ;D

Enviado desde mi ST21i mediante Tapatalk
13  Programación / ASM / Obtener argumentos pasados al programa en: 29 Marzo 2014, 14:13 pm
Hola, tengo la duda de cómo conseguir los argumentos pasados al programa.
La cantidad de argumentos, seguido de la ruta del programa y de las demás cadenas.
Tenía entendido que se almacenaban en el stack, pero ahí no los ví, así que pregunto por aquí :3

PD: Uso FASM
14  Programación / Programación C/C++ / [C++][Duda] Captura de pantalla en: 3 Enero 2014, 17:41 pm
Hola, tenía la duda de si se puede en C++, (sin la biblioteca Windows.h), hacer capturas de pantalla, y guardarlas de la forma que sea.

¿Alguien sabe algo?

Como dato, estoy trabajando con SFML, pero creo que este no tiene nada para ello.

Si alguien sabe que diga, gracias :D
15  Programación / Programación C/C++ / [C++] Sobre fstream en archivos vacíos. en: 2 Enero 2014, 00:44 am
Hola, tengo un problemilla.

Código
  1. fstream a("asd.dat");
  2. a << "hola";

En general, es eso. El problema es que si el archivos está vacío, no escribe nada.

¿Sabéis algo al respecto?
16  Programación / Programación C/C++ / [C++][Aporte] Código de clase "pila" en: 19 Diciembre 2013, 18:46 pm
Holas, hoy me dió por colgar una clase, que simula la pila de ASM. Se suele hacer mucho, pero la voy a postear:

Código
  1. class pila{
  2. private:
  3.    int data;
  4.    int length;
  5.    pila *next;
  6.    void nullNext(){next = nullptr;}
  7.  
  8. public:
  9.    pila(){data = -1; length = 0; next = nullptr;}
  10.    pila(pila *p){data = p->data; length = p->length; next = p->next;}
  11.    ~pila(){while(next != nullptr) pop();}
  12.    int getData(){return data;}
  13.    int getLength(){return length;}
  14.    pila *getNext(){return next;}
  15.    bool pop(){
  16.        if(next != nullptr){
  17.            data = next->data;
  18.            --length;
  19.            pila *temp = next;
  20.            next = next->next;
  21.            temp->nullNext();
  22.            delete temp;
  23.            return true;
  24.        }
  25.        return false;
  26.    }
  27.    void push(int d = 0){
  28.        next = new pila(this);
  29.        ++length;
  30.        data = d;
  31.    }
  32. };

Si a alguien le gusta, que la use. Si alguien le ve algún bug/error/inconveniente, que lo diga.

La pila, guarda 3 valores: La direccion de la siguiente de la pila (*next); el dato de ese segmento (dato); la cantidad o longitud de la pila (length).

Ciao :3
17  Programación / Programación C/C++ / Operator+ Original. ¿Cómo? en: 12 Julio 2013, 04:55 am
Mi pregunta es más que nada por curiosidad. El operador "+" de enteros por ejemplo, ¿cómo está definido de raiz? ¿O es una función ya a bajo nivel?
Por ejemplo, el operador * podría ser un bucle for, sumando "a" veces "b".
¿Pero el "+"?
18  Foros Generales / Foro Libre / Preguntilla filosófica para programadores en: 2 Julio 2013, 23:06 pm
Afirmación: Solo es posible divertirse con un juego que tú mismo has creado, si en ese juego hay componentes aleatorio. Por ejemplo, en uno de lucha, ataque aleatorio. O pensamiento de IA algo aleatorio.

¿Que opinais de eso?

Comentad lo que veais oportuno.
Yo me he divertido con un juego que hice, pero ese juego contiene "rand()" en su código, y varios.
19  Foros Generales / Foro Libre / Curiosidad filosófica. Vida y máquinas en: 2 Julio 2013, 21:49 pm
Según dicen los diccionarios, y en concreto este de aquí:
1   Propiedad de los seres orgánicos por la cual crecen, se reproducen y responden a estímulos: los minerales no tienen vida.

Ahora supongamos que tenemos una máquina, que trabaja en una fábrica. Que ella sola hace máquinas iguales a ella. Suelda, monta, etc. Ademas, (y esto es algo absurdo), se suelda cada rato un trozo de metal a si mismo.

1)Podríamos decir que crece, ya que aumenta su tamaño gracias al metal.
2)Se reproduce, pues crea otras máquinas como ella.
3)Responde a estímulos, porque tiene sensores de movimiento, de calor, etc.

Me gustaría que alguien me desmienta esta afirmación: Esta máquina es un ser vivo.

PD: Claramente no soy tonto, sé que no es un ser vivo xD pero me parece interesante, ya que si no se desmiente, estaríamos diciendo que los diccionarios están mal redactados (?)
20  Programación / Programación C/C++ / Duda sobre portabilidad en: 2 Julio 2013, 01:44 am
Yo programo C++ en Windows 7. Programo en consola, principalmente porque no se mucho visual ni de API's xD

La duda es...
 Si, programando en consola, cambio los -system("cls");- y -system("pause");- (supongo que una mala costumbre mía), y pongo comandos de la librería estandar, ¿sería portable a otros Windows, Unix, Apple, y diversos sistemas?

EDITO: Busco la forma de borrar la pantalla de consola sin usar system("cls"), clrscr(), ni escribir 100 saltos de linea.
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines