Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - SrCooper

#1
Buenos días a todos. Este fin de semana he estado trabajando en un pequeño proyecto de programación, un juego, en C++ utilizando la librería SFML.

El caso es que me gustaría poder ejectuar el juego en un ordenador de mi instituto, que es un ordenador un poco antiguo y que no tiene todas las librerías de C++ a la última versión (es una distro linux basada en ubuntu). No puedo instalar ni cambiar nada, pues evidentemente no me dejan  :xD

Así pues lo que hice fue compilar el proyecto e introducir con el ejecutable todas las librerías que se pudiesen necesitar (omito las que son requeridas por SFML, pues son irrelevantes). Es decir:
libc.so.6
ld-linux.so.2
ligcgmanager.so.0
libstdc++.so.6
libudev.so.1


Estas son las librerías que encontré en mi sistema, en el cual estoy utilizando gcc en su versión 4.9. El problema es que la máquina de mi instituto no tiene instaladas, como ya dije, las mismas versiones de estas librerías y por lo tanto me gustaría que el ejecutable usase las que yo pongo al lado y no las que hay en el sistema.

El error que aparece es este:
relocation error: ./(directorio del ejecutable)/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

Un saludo y muchas gracias de antemano

EDITO: La máquina puede ejecutar juegos que no requieran mucha potencia, por lo que ese no es el problema
#2
Buenos días a todos, estoy resolviendo un problema en la siguiente web: codingame.com (totalmente recomendada si no la conociais). El caso es que para resolverlo he creado una clase como esta:

Código (cpp) [Seleccionar]
class Node {
    int id;
   
    final List<Node> connectedNodes = new List<Nodes>();
   
    Node(this.id);
   
    void connectNodes(Node otherNode) {
        if (otherNode == null) return;
       
        connectedNodes.add(otherNode);
        otherNode.connectedNodes.add(this);
    }
   
    void removeLinks(Node otherNode) {
        if (otherNode == null) return;
       
        connectedNodes.removeWhere((node) => node == otherNode);
        otherNode.connectedNodes.removeWhere((node) => node == this);
    }
}


Y en el main tengo la siguiente lista:

Código (cpp) [Seleccionar]
List<Node> nodes = new List<Node>(size);

Ahora bien, necesito una función para encontrar la distancia minima entre dos nodos. Tras devanarme los sesos durante un buen rato, he escrito la siguiente función que (sorpresa, sorpresa), no funciona.

Código (cpp) [Seleccionar]
int findDistance(int id1, int id2) {
        int count = 0;
       
        if (id1 == id2) return 0;
       
        Node node1 = nodes[id1];
        Node node2 = nodes[id2];
       
        List<int> idsExpanded = new List<int>();
        List<int> distances = new List<int>();
       
        void expand(Node n1) {
            count++;
           
            for (var subNode in n1.connectedNodes) {
                if (subNode.id == id2) distances.add(count);
               
                if (!idsExpanded.contains(subNode.id)) {
                    idsExpanded.add(subNode.id);
                    expand(subNode);
                }
            }
           
            count--;
        }
       
        expand(node1);
       
        // Las ordena de menor a mayor
        distances.sort();
       
        return distances.first;
    }


He buscado información sobre búsqueda en árboles y grafos por ahí, pero debido a que mis conocimientos de algoritmos son muy limitados (no soy universitario ni nada de eso, he aprendido por mi cuenta) no suelo entender las páginas que encuentro.

Agradecería si alguien me pudiese explicar el método que debería usar o cual es la manera optima de diseñar esta función.

El maravilloso lenguaje que estoy usando es Dart, una especie de mezcla entre javascript y Java, para que nadie se asuste  :xD

Un saludo y gracias de antemano.

PD: El problema es el Skynet Finale - Level 2, de los difíciles, por si alguien ya conocía la página
#3
GNU/Linux / No se puede cambiar el volumen
25 Agosto 2014, 17:04 PM
Buenos días a todos, ayer estaba configurando diferentes opciones para grabar una partida de un videojuego en linux, en concreto estaba atascado con el sonido, porque no se grababa. Al final deje de intentarlo y me dí cuenta de que la barra de sonido que hay arriba había desaparecido y que las teclas para subirlo, bajarlo o mutearlo no funcionaban.

Puede que haya borrado algo o instalado algo que no debía, pero he intentado de todo y no se me ocurre que puede pasar.

Mi so es Elementary OS, que está basado en Ubuntu, así que la solución para uno funcionará para el otro.

Un saludo y muchas gracias por adelantado.
#4
Buenas a todos, he estado ahorrando todo el año y finalmente tengo suficiente para comprarme un pc a piezas, con un presupuesto de 700€. Esta es la configuración:

www.pccomponentes.com/pccly/B873E083

La verdad es que me gustaría tener solo linux de momento y no sé si funcionará bien o dará problemas de drivers con la placa base y la gráfica. Y a parte quisiera saber que opinan del pc, que cambiarían, etc.

Un saludo y muchas gracias de antemano
#5
Buenos días a todos, estoy instalando Linux en mi portátil y como es un HP con 4 particiones primarias ya instaladas por defecto seguí este tutorial para poder instalarlo.

http://www.nosoyeltipicofriki.com/2011/02/03/instalar-ubuntu-linux-en-un-portatil-hp-con-4-particiones-primarias/

Ya hice un backup en un disco duro externo, borré la partición /dev/sda2 y creé partición extendida y las tres virtuales en su interior.

La copia de seguridad pesa unos 40 GB y la partición en la que estaba tenía una capacidad de 450GB. Ahora quiero recuperarla a una partición de 300GB NTFS y sin embargo cuando lo intento me salta un error diciendo que la nueva partición es más pequeña que la partición original.

Esto es verdad, sin embargo el backup pesa tan solo 40GB y cabe de sobra en la partición de destino. No sé que estoy haciendo mal...

Un saludo y muchas gracias de antemano

PD: mil disculpas si no es el subforo correcto

PD2: es el mismo problema que esta página http://ubuntuforums.org/showthread.php?t=1589375, pero no entiendo muy bien la respuesta que le dan
#6
Buenos días a todos, estoy creando un pequeño programa en python que recorre una lista con usuarios y ejecuta el comando para abrir firefox en cada uno de ellos.

El código es el siguiente:

Código (python) [Seleccionar]
#!/usr/bin/python

import os

lista_usuarios = ['pepe', 'mario', 'jorge']
lista_contrasenas = ['fosil', 'matrix', 'maria']

for user in lista_usuarios:
    os.system("su " + user + " '-c firefox'")


El problema es que la ejecución del script se va deteniendo para preguntarme la contraseña y esto es algo que no quiero. Me gustaría poder introducir la contraseña directamente desde el script, sabiendo que están todas guardadas en otra lista.

Un saludo y muchas gracias de antemano
#7
Buenos días a todos, estoy creando un programa en C++ y quiero rotar un punto alrededor de otro. He estado buscando en internet y he encontrado en wikipedia una manera de rotarlo alrededor del origen de coordenadas (el punto 0,0).

http://es.wikipedia.org/wiki/Matriz_de_rotaci%C3%B3n

Lo que dice esta página es básicamente que para rotar un punto hay que multiplicarlo por la matriz de rotación, es decir, las coordenadas del punto quedarían así:

Código (cpp) [Seleccionar]

new_x = x * cos(angulo) - y * sen(angulo);
new_y = x * sen(angulo) + y * cos(angulo);


Pero yo necesito que gire alrededor de otro punto y por más que lo intento no lo consigo (mi nivel de matemáticas de 1º de bachillerato no da para mucho en estos temas  ;D).

Un saludo y muchas gracias de antemano.
#8
Buenos días a todos, el otro día estaba leyendo un artículo sobre los origenes de la informática y me surgió una duda, a ver si alguien la puede resolver  :D

En el artículo decía que una de las primeras computadoras fue la ENIAC, que era decimal, ocupaba varias habitaciones y pesaba treinta toneladas. Más adelante apareció la EDVAC, que fue la primera en utilizar el código binario y en el artículo se menciona que esto redujo significativamente el tamaño y la complejidad de esta.

Mi pregunta es, básicamente, ¿por qué el uso la aritmética binaria redujo el tamaño y el peso de la máquina? Es decir, ¿por qué el binario fue más efectivo que el decimal?

Un saludo y gracias de antemano

PD: No sabía muy bien en que subforo colocar este tema, mil disculpas si no es el acertado  ;D
#9
Buenos días a todos, estoy realizando un proyecto con SFML (en su versión 2.1) y llegados a un determinado punto me vi obligado a usar los sound buffers para la correcta reproducción de sonidos.

Funciona todo perfecto (los sonidos se cargan y suenan sin ningún problema), pero el compilador me tira un segmentation fault al llegar al final de la ejecución del programa. Ni siquiera es apreciable para el usuario que vaya a ejecutarlo, pero no me gustaría que tenga ningún problema de memoria cuando este terminado.

Probé a compilar estáticamente y el error ya no ocurre, sin embargo el programa consume mucha más memoria y esto es algo que tampoco quiero.

Mi pregunta es básicamente si alguien ha tenido alguna vez estos problemas de memoria al usar los sonidos en SFML y ya de paso me gustaría que me aclararan por qué la versión estática del programa consume más memoria y más cpu que la versión dinámica.

Un saludo y muchas gracias de antemano
#10
Buenos días a todos, estoy siguiendo un tutorial para C++11 y me he topado con las expresiones lambda, las cuales no entiendo en aboluto  :P
Este es el código:
Código (cpp) [Seleccionar]
auto found = std::find_if(mChildren.begin(), mChildren.end(),
                              [&] (Ptr& p)->bool{return p.get() == &node; }); //Aqui esta la maldita xDD


El principio lo comprendo todo, pero cuando llego al tercer argumento de std::find_if literalmente me pierdo. Agradecería si alguien me pudiera explicar paso a paso lo que significa cada cosa, porque los tutoriales que he visto no los entiendo tampoco.

Un saludo y gracias de antemano.
#11
Buenos días a todos, he estado utilizando Visual Studio durante un tiempo, pero debido a razones de compatibilidad con linux, he decidido cambiar a Code Blocks y aún hay un par de cosas que no me quedan claras sobre este IDE.

En primer lugar, una de las cosas más útiles que había en Visual Studio (que también está presente en Eclipse, por ejemplo) es que se te marcaban los errores según ibas programando y era muy útil para evitar compilar antes de tiempo, por ejemplo. No sé si tengo que instalar algún puglin o algo, pero por más que busco, no encuentro la manera de configurar eso.

También me gustaría saber si se puede modificar el texto predeterminado que aparece en los archivos que se crean al crear una clase, me disgusta la manera en la que están hechos.

Un saludo y muchas gracias de antemano
#12
Hardware / Duda para comprar un ordenador
27 Diciembre 2013, 19:39 PM
Buenos días a todos, tengo un conocido que está vendiendo su ordenador de segunda mano y yo llevo bastante tiempo buscando un ordenador y no sé si es una buena oferta y debería aceptarla.

Aquí van los componentes que me ha comentado así rápidamente:

Placa Base - Asus M5A78L-M/USB3

Procesador - AMD Athlon II X4 740 3.2Ghz

Memoria RAM - 4GB de Kingston

Tarjeta gráfica - Asus Radeon HD 6770 Directcu II

Torre - Antec Three Hundred 2

Fuente de alimentación - Thermaltake litepower

El precio rondaría los 200 euros más o menos. El caso es que a mí me ha parecido una buena oferta, pero tampoco soy ningún experto y además es de segunda mano. El uso que le voy a dar es básicamente jugar a algunos juegos y programar.

Un saludo y muchas gracias de antemano

PD: Sé que falta mucha información, solo decidlo y yo se lo pregunto.
#13
Buenos días a todos, he estado un tiempo programando con SDL y he llegado a un punto en el que me sería muy útil poder recorrer una imagen pixel por pixel y obtener la información del color de cada uno y en función de este hacer unas cosas u otras.

No tengo ni idea de como se hace, pero aquí os dejo un código de como tengo pensado implementarlo. Mi pregunta es básicamente si existe un equivalente a las funciones que me he inventado en el código y si es así, si se pueden usar con SDL.

Código (cpp) [Seleccionar]
void recorreImagen(SDL_Texture* image)
{
    int img_w, img_h;
   
    SDL_QueryTexture(image, NULL, NULL, &img_w, &img_h);
   
    for (int i = 0; i < img_w; i++){
        for (int u = 0; u < img_h; u++){

            // Funciones inventadas
            Pixel p = image->getPixel(i, u);
            SDL_Color color = p.getColor();

            if (color.r == 0xFF){
                //Haz algo
            }else{
                //Haz algo
            }
        }
    }
}


Un saludo y muchas gracias por adelantado
#14
Buenos días a todos.

Estoy empezando a programar en Java y me gustaría poder trabajar tanto desde mi pc de sobremesa como desde mi portatil en el mismo proyecto. La idea es que este proyecto esté guardado en un servidor y que yo pueda editar el contenido desde cualquier ordenador y que los cambios se hagan visibles.

He seguido una serie de tutoriales para CVS en eclipse, pero hasta ahora todos funcionaban a nivel de la red local. Mi pregunta era básicamente si se puede configurar para que funcione en un servidor web y si es necesario comprarlo o se puede hacer mediante algún tipo de servicio gratuito. Y por supuesto cualquier tipo de información útil será bienvenida.

Un saludo y gracias por su ayuda
#15
Programación C/C++ / [?]Compilar en android usando Qt
16 Septiembre 2013, 22:23 PM
Buenas, estoy intentando "trasladar" a android un pequeño programa que hice con el framework Qt para linux, pero de verdad que no hay manera.

Quiero decir, he instalado necessitas, el software necesario para crear este tipo de aplicaciones con Qt. Pero una vez descargado ya no sé que hacer. Nada más empezar un proyecto, hay un montón de opciones y no sé cuales tengo que seleccionar y cuales no, o como compilar el proyecto y ejecutarlo. He instalado también el SDK y NDK de android, siguiendo un tutorial, pero sigo sin saber qué tengo que hacer.

He buscado mucha información en internet pero, a parte de que no hay casi tutoriales sobre este tema, todos están en inglés y no me entero de que van, para ser sincero  :laugh:

Un saludo y gracias de antemano  ;)

PD: el código ya lo tengo hecho, solo quiero poder abrir un proyecto con el necessitas, copiar el código, cambiar lo que sea necesario y compilarlo para android
#16
Buenas, resulta que hace un tiempo, viendo unos videos de programación, el hombre que programaba tenía dos pantallas abiertas: en una el código fuente y en otra el programa compilado ejecutandose.

Cuando él escribía algo en el código fuente y le daba a compilar el programa se actualizaba automáticamente, sin necesidad de cerrar la ejecución y volverla a abrir.

El hombre del video estaba programando en java, mi duda era si eso mismo se puede hacer también en C++ y las razones por las que sí o no.

Un saludo y muchas gracias por vuestra atención :P
#17
Buenas, ultimamente he tenido algunos días libres y he estado trabajando en una cosilla que he pensado que podría interesar y servir de ayuda a la hora de desarrollar videojuegos. Por supuesto, está en su versión alpha, y agradecería aportes, sugerencias y críticas que se hagan para que entre todos podamos ir mejorandola.

Basicamente, se trata de una serie de clases y funciones que podrían ser una base para cualquier videojuego. Esto quiere decir, una clase de la que derivan todos los objetos en pantalla, una clase que maneja estos objetos, etc. Es simplemente para partir de aquí cuando empezamos a desarrollar un videojuego, y así no tener que escribirlo todo cada vez.

He incluido además un el código de un pequeño juego que desarrollé en un par de horas con esta colección de archivos. Es un juego muy tonto, pero sirve de ejemplo para aprender la jerarquía de clases y todo eso.

Link: http://www.mediafire.com/download/6yvr866cp626a1a/Game_template.zip

Ningún archivo está compilado. He incluido el archivo de proyecto de codeblocks (para guardarlo como template) y el archivo Makefile si no tienes este IDE y usas linux.

Un saludo  y espero que os sirva
SrCooper

PD: Sinceramente, no sé usar los archivos Makefile. Espero que alguien me ayude con eso :laugh:

PD2: Acabo de darme cuenta de que hay que cambiar el SDL_GL_BUFFER_SIZE a 32 en la función init()
#18
Buenas, acabo de instalar las librerias SDL/GL en xubuntu y (para testear las librerías) lo primero que hice fue crear una sencilla aplicación que muestra un fondo negro y se acaba cuando el usuario pulsa la tecla ESCAPE.

La compilación funciona perfectamente, y la ejecución desde Codeblocks también, el problema llega cuando tengo que ejecutar el ejecutable que se ha generado, simplemente no se muestra la ventana.

Es decir, no funciona el modo gráfico cuando ejecuto el programa. No se muy bien si tengo que instalar algo adicional o cual es el problema, aunque estoy casi 100% seguro de que este no está en el código.

Un saludo y gracias de antemano
#19
Buenas, tengo un problema con un código similar al siguiente:

Código (cpp) [Seleccionar]
class Clase1{
public:
   Clase1();
   
   void funcion1();
};

class Clase2{
   list<Clase1*> Lista;
public:
   Clase2();
   
   void funcion2();
};

void Clase2::funcion2(){
   list<Clase1*>::iterator it = Lista.begin();
   for (; it != Lista.end(); it++){
       it->funcion1(); //Aquí esta el error
   }
}


Es decir, el problema es que no se como llamar a la funcion1 de la Clase1 utilizando un iterador, porque la lista es de punteros. Utilizando vectores se solucionaría, pero para este caso en concreto necesito usar listas, porque necesito hacer un Lista.erase()

Un saludo y espero que alguien me aclare este lío  ;)
#20
Programación C/C++ / No funciona QtCreator
16 Julio 2013, 13:51 PM
Buenas, recientemente he comenzado a programar en C++ usando Qt y para ello me descargué el QtCreator en linux, pues tengo entendido que es el mejor IDE para esto. El programa da muchísimos errores.

En primer lugar, si no lo abro como administrador, constantemente salta una alerta porque no se pudo escribir en nosequé directorio.

Entonces simplemente abro mi consola y tecleo:
sudo qtcreator
para abrirlo como administrador y que no me salte este error tan molesto. Entonces en cuanto le doy a crear proyecto, el programa se cierra repentinamente y me salta este error:
(qtcreator:4006): Gtk-CRITICAL **: IA__gtk_widget_set_direction: assertion `GTK_IS_WIDGET (widget)' failed

(qtcreator:4006): Gtk-CRITICAL **: IA__gtk_widget_get_style: assertion `GTK_IS_WIDGET (widget)' failed

La verdad es que no se qué ocurre, o si tengo que instalar algo extra, etc.

Un  saludo y gracias de antemano
#21
Programación C/C++ / [C++]Duda sobre clases
12 Julio 2013, 15:04 PM
Tengo el siguiente código:
Código (cpp) [Seleccionar]

class Clase1{
public:
    funcion1();
};

class Clase2{
public:
    funcion2();

};


En la declaración de la funcion2, se necesita llamar a funcion1, pero no he creado todavía ningún objeto de la clase1.
El problema se resume en la siguiente pregunta, ¿se pueden llamar a los métodos de una clase sin declarar ningún objeto de esta?

Aún no he creado ningún objeto porque primero estoy declarando todas las clases, las funciones, etc. y ya después en el main crearé los objetos necesarios. También he pensado en declarar un objeto de la clase1 para usarlo en la clase2 y después sobreescribirlo en el main, pero realmente me pierdo con las clases y no sé hacer esto. Alomejor estoy entendiendo mal el concepto de clase y resulta que no se puede hacer algo similar...

Un saludo y espero que me aclaréis este lío que tengo armado en mi cabeza  :P
#22
Buenas, estoy realizando un proyecto en c++ utilizando allegro. El proyecto consta de muchos archivos de cabecera para hacer videojuegos de una manera más sencilla. La idea fue de Daniel Acuña, de artebinario.cjb.net (una página ya cerrada). Yo solo estoy actualizandola, porque el diseño original fue hecho hace más de 10 años.

Consta de una serie de clases (como actor, game, etc) de las que se hereda para beneficio del usuario. Resulta que el primer programa que he hecho se compila perfectamente, pero en cuanto lo ejecuto, este se cierra repentinamente y devuelve esto:
Process terminated with status -1073741510 (0 minutes, 3 seconds)

Así que hice Debug y me sale Segmentation fault. No puedo escribir aquí todo el código, porque son muchos archivos y muchas líneas, pero os dejo una captura con los errores:


(En la línea en rojo pone "StageManager::draw(this=0x0)" )

Estoy seguro de que es algún fallo tonto, pero no se me ocurre qué puede ser y la verdad casi me duele la cabeza de pensar en el problema.
Un saludo
#23
Buenas, estoy haciendo un videojuego en C++ con allegro, y me gustaría ejecutar una función 3 segundos después de que se haya ejecutado otra. (Es decir ejecutar una función, esperar tres segundos, y ejecutar la otra.)

No quiero usar la función rest(3000), porque esto ralentiza el juego al estar ejecutandose en un bucle while.
Quisiera saber si hay alguna libreria o algún truco que me sirva. He buscado en google un poco, pero no encuentro mi problema en particular.

Un saludo y gracias de antemano ;D
#24
He creado una serie de archivos de cabecera para mis proyectos en c++ y hasta ahora si queria incluirlos en mi codigo debia teclear:
Código (cpp) [Seleccionar]
#include "nombre.h"
e incluir los archivos en la carpeta de mi proyecto. Pero resulta engorroso tener que copiar y compilar siempre los archivos cada vez asi que me gustaria saber donde tengo que copiar los archivos de cabecera para poder escribirlo asi:
Código (cpp) [Seleccionar]
#include <nombre.h>
y no tener que copiar siempre los archivos. Es decir, me gustaria convertir mi cabecera en una libreria normal.
He buscado informacion en google y en el foro pero no he encontrado nada que solucione mi problema. Uso linux, el compilador gcc y emacs.
Un saludo y gracias por adelantado.