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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Programación C/C++ / Formatos: ¿Como sacarles todos los datos? en: 27 Mayo 2016, 16:58 pm
El tema es el siguiente: Me lie a hacer pruebas con un archivo PNG y ahora estoy casi a punto de escribir un programa para sacarles a los archivos PNG un array con el mapa de bits en él. Pero, ya que estoy, me he decidido a sacar los datos de mas tipos de archivos. El problema es que si el formato PNG ya era dificil, los demas formatos que tengo en mi lista son aún mas dificiles de encontrar.

¿Alguien me puede pasar enlaces a web que expliquen la estructura de los siguientes formatos?:
- TGA
- JPEG
- A (los archivos que utilizan los compiladores)
- LIB (tambien los archivos que utilizan los compiladores)
- MP3
- OGG
- MP4
- GIF
- DLL

Y ya puestos: ¿Algun enlace en el que se muestren ejemplos de como sacar los datos por medio de algun script?

He buscado en internet, y nada. He buscado en archivos de dichos formatos palabras clave que me ayudasen a buscar en internet, y nada. Estoy perdido en este tema. Sé que hay programas muy buenos que se pueden descargar y utilizar, pero me gusta entender lo que hay detras de estos programas y la mejor manera es hacerlos uno mismo.
12  Programación / Programación C/C++ / Programacion directX en codeblocks en: 10 Marzo 2016, 18:02 pm
La cuestion es: ¿se puede programar juegos que utilicen directX en codeblocks?

He encontrado algo pero no veo que me sirva de mucho. (https://www.youtube.com/watch?v=IqIiYDXFAtk)

Por lo que veo en el video se puede usar directX en codeblocks, pero entiendo que se utiliza software que no es de microsoft (lo digo por el programa que se descarga en el video). ¿Esto puede suponer algun problema para hacer juegos comerciales?

Tampoco encuentro tutoriales de programacion en directX en castellano. ¿Alguna sugerencia?

Otra cuestion que me surge es... ¿se pueden combinar DirectX y OpenGL en un mismo juego y que el usuario pueda elegir cual usar? He visto que hay juegos que permiten elegir el motor grafico a utilizar, pero me pregunto si se puede hacer eso en codeblocks.

He buscado y todo lo que he encontrado era para visualStudio o dev-c++. Me gustaría no tener que cambiar de programa para desarrollar mis juegos.

Gracias de antemano.
13  Programación / Programación General / Movimiento local 3D en: 4 Febrero 2016, 18:08 pm
Estoy buscando la forma de hacer que un cubo 3D de mueva sobre su eje X aun habiendolo rotado en todos sus ejes. Me esta siendo imposible encontrar algo util al respecto y me estoy empezando a hartar de no poder avanzar en mis videojuegos.

He visto que hay mucha teoria, pero no veo nadie que explique como aplicarlo sobre un objeto. He llegado a intentarlo con una formula que devuelve esta matriz: "[[1,0,0],[0,1,0],[0,0,1]]". Evidentemente los valores de esta matriz son el resultado de un objeto cuyos angulos son 0.

Mi pregunta es: ¿Como hago que un cubo se mueva sobre su eje X si su orientacion sobre sus ejes X, Y y Z no son igual a 0?

Se que para movimientos en mundos 2D se utiliza "X += cos(angulo_en_radianes)*desplazamiento" y "Y += sin(angulo_en_radianes)*desplazamiento". Pero en mundos 3D es mucho mas complejo y no llego a entenderlo del todo.
14  Programación / Programación C/C++ / Interpretar o compilar desde txt en: 18 Diciembre 2015, 19:20 pm
Muy buenas:

He buscado al respecto y parece que solo existe para turboC o algo similar. Me preguntaba... ¿tambien habrá para C o C++?

Vereís, es que empiezo a estar harto de tener que compilar todo el codigo para cuando solamente hago un pequeño cambio. Cuando el codigo son tres sentencias no hay problema, se compila muy rapido. Pero cuando el codigo se hace algo largo, la espera por un cambio casi ridiculo se hace mas bien insoportable.

Es por eso que tengo la duda: ¿Se puede hacer que el programa tome el codigo de un fichero de texto plano y lo interprete al momento? Tambien me sirve que lo compile de forma temporal mientras el programa esté en marcha. La idea es modificar el codigo del archivo de texto plano y que directamente (con previo guardado de los cambios y reinicio del programa) surtan efecto los cambios realizados.

Pues eso es todo por ahora. Muchas gracias de antemano.
15  Programación / Programación C/C++ / Graficos con C++ en: 7 Octubre 2015, 16:50 pm
Muy buenas. He estado buscando en internet y no encuentro nada util (o al menos actualizado) que solucione mi pequeño problema.

Actualmente utilizo la librería Glut para un proyecto que estoy desarrollando. Utilizo OpenGL para los graficos en tiempo real.

Hasta aqui todo bien.

Ahora empiezo a pensar que me gustaría hacer mi propia librería grafica. Pero tranquilidad, que solo para graficos 2D. Aunque tal vez en un futuro... Por ahora lo dejaré en graficos 2D.

El problema es que busco y busco como dibujar pixel por pixel pero no encuentro nada. Lo unico que encuentro son tutoriales que utilizan librerías como "graphics.h" o "dos.h" y su funcion "int86()". Personalmente prefiero la librería "dos.h", pero esperaba algo mas actualizado que este tutorial: http://www.miclase-online.com/tutoriales/computacion/programacion/proggraficac.pdf.

Lo que busco es mas bien algo como utilizar punteros y dibujar sobre la memoria grafica cambiando el valor almacenado. Por ejemplo: si el color negro fuese 0,0,0 y el blanco 255,255,255 para dibujar en rojo tendría que poner 255,0,0 en la posicion de memoria correcta. Al menos algo así tengo entendido con los buffers de memoria y los mapas de bits. Igual estoy completamente equivocado.

Por otra parte y ya que deseo eliminar la librería Glut de mi proyecto,.. ¿como obtengo el "elapsed time" sin usar Glut? ¿Se puede obtener utilizando la librería "time.h"? Si es así, ¿como? No me sirve eso de "se que el programa tarda 30 milisegundos entre frames y me dedico a hacer time+=30". No puedo saber el tiempo que tardará entre frames y necesito una precision de milisegundos.

El proyecto en el que estoy metido tiene dos partes y una de ellas no requiere utilizar graficos. Por eso me parece absurdo incluir Glut para obtener el "elapsed time".

Por ahora esas son mis dudas. Muchas gracias por adelantado.
16  Programación / Programación C/C++ / Error C++ ficheros y tildes en: 10 Marzo 2015, 18:37 pm
Pues eso, que tengo un problema con un programilla que estaba haciendo en C++.

La idea es un programa que elimina todos los comentarios de un codigo .js y los saltos de linea vacios. Se que estas cosas no afectan al rendimiento del juego o programa que contiene el codigo, pero a la hora de descargarlo tardará menos, serán menos megas en la tasa mensual y será un poquito mas rapida la carga del juego cuando se descarga la web.

Ademas, los comentarios solo me interesan a mi, no a los jugadores. Y los saltos de linea igual.

Ya que estaba haciendo el programa para suprimir parte del codigo me pregunté... ya que javascript tiene problemas para reconocer las tildes, eñes y caracteres "especiales"... ¿por que no hacer que los vaya sustituyendo según los encuentre? Al fin y al cabo una palabra con tilde solo se encuentra en el dialogo de personajes o en los comentarios y es un rollo cambiarlos manualmente todos. Y los comentarios serán borrados.

Pues aqui empieza el problemón.

Teniendo un archivo.js de referencia para pruebas:

Código:
apertura de exclamacion "¡"

a con tilde "á"
e con tilde "é"
i con tilde "í"
o con tilde "ó"
u con tilde "ú"

A con tilde "Á"
E con tilde "É"
I con tilde "Í"
O con tilde "Ó"
U con tilde "Ú"

ny "ñ"

NY "Ñ"

Y el siguiente codigo para el "depurador.cpp":

Código:
#include <iostream>
#include <windows.h>
#include<fstream>
using namespace std;

void buscar_y_reemplazar_todos(string& frase, string buscar, string reemplazar) {
int pos=frase.find(buscar);
while (pos!=string::npos) {
frase.replace(pos, buscar.size(), reemplazar);
pos=frase.find(buscar, pos + reemplazar.size());
}
}

void eliminar_desde(string& frase, string buscar) {
int pos=frase.find(buscar);
frase.replace(pos, (frase.size() - pos), "\n");
}

void eliminar_hasta(string& frase, string buscar) {
int pos=frase.find(buscar);
frase.replace(0, (pos + buscar.size()), "");
}

void eliminar_punto_punto(string& frase, string buscar_principio, string buscar_final) {
int pos_ini = frase.find(buscar_principio);
int pos_fin = frase.find(buscar_final);
frase.replace(pos_ini, ((pos_fin - pos_ini) +  buscar_final.size()), "");
}

int main() {
bool comentando=false, todo_correcto=false;
string linea, out_text, nombre_fichero;
ifstream archivo;
getline(cin, nombre_fichero);
buscar_y_reemplazar_todos(nombre_fichero, "\n", "");
while (!todo_correcto) {
archivo.open(nombre_fichero.c_str());
if (archivo.is_open()) {
getline(archivo, linea);
while (!archivo.eof()) {
//Añado el final de linea para no tener errores.
linea = linea + "\n";
//Eliminar tabulaciones
buscar_y_reemplazar_todos(linea, "\t", "");
//Sustituir las letras especiales por sus correcciones para javascript
buscar_y_reemplazar_todos(linea, "á", "\\xE1");
buscar_y_reemplazar_todos(linea, "é", "\\xE9");
buscar_y_reemplazar_todos(linea, "í", "\\xED");
buscar_y_reemplazar_todos(linea, "ó", "\\xF3");
buscar_y_reemplazar_todos(linea, "ú", "\\xFA");
buscar_y_reemplazar_todos(linea, "ñ", "\\xF1");
buscar_y_reemplazar_todos(linea, "Á", "\\xC1");
buscar_y_reemplazar_todos(linea, "É", "\\xC9");
buscar_y_reemplazar_todos(linea, "Í", "\\xCD");
buscar_y_reemplazar_todos(linea, "Ó", "\\xD3");
buscar_y_reemplazar_todos(linea, "Ú", "\\xDA");
buscar_y_reemplazar_todos(linea, "Ñ", "\\xD1");
buscar_y_reemplazar_todos(linea, "¿", "\\xBF");
buscar_y_reemplazar_todos(linea, "¡", "\\xA1");

//Si no existe "function" ni "else if" en la linea actual, eliminar espacios (en python no hay nada al respecto, pero puede ayudar)
/*if (linea.find("function") == string::npos && linea.find("else if") == string::npos && linea.find("var ") == string::npos) {
buscar_y_reemplazar_todos(linea, " ", "");
}*/
if ((linea!="\n") && (linea.find("/*")==string::npos) && (comentando==false) && (linea.find("*/")==string::npos)) {
if (linea.find("//")!=string::npos) {
//Parto la cadena en dos en la subcadena "//"
eliminar_desde(linea, "//");
//Sumo "\n" a la primera parte de la cadena recien partida
}
if (linea!="\n") {
//Se aplica el contenido de la linea a la salida
out_text = out_text + linea;
}
}
if (linea.find("/*")!=string::npos && linea.find("*/")!=string::npos) {
//Quedaria especificar el caso pero aqui habria un comentario que eliminar. En python se dejaba y se advertía de la linea en la que estaba para eliminarlo manualmente.
//Las posibilidades son:
// - Principio-Final
// - Medio-Final
// - Principio-Medio
while (!(linea.find("/*")!=string::npos && linea.find("*/")!=string::npos)) {
eliminar_punto_punto(linea, "/*", "*/");
}
}
else if (linea.find("/*")!=string::npos) {
//Habría que ver si tiene codigo antes (por si acaso)
if (linea.find("/*")!= 0) {
eliminar_desde(linea, "/*");
out_text = out_text + linea;
}
comentando=true;
}
else if (linea.find("*/")!=string::npos) {
//Habría que ver si tiene codigo despues (por si acaso)
eliminar_hasta(linea, "*/");
out_text = out_text + linea;
comentando=false;
}
getline(archivo, linea);
}
out_text = out_text + linea;

//buscar_y_reemplazar_todos(linea, "¡", "\\xA1");
archivo.close();

if (out_text.find("") == string::npos && out_text.find("Ã") == string::npos && out_text.find("š") == string::npos && out_text.find("‰") == string::npos) {
ofstream archivo2;
//if (archivo2.is_open()) {
archivo2.open(nombre_fichero.c_str());
archivo2 << out_text;
archivo2.close();
cout << "Parece que todo ha salido bien." << endl;
todo_correcto = true;
system("pause");
//}
//else {
//cout << "Ha habido un error al escribir el archivo." << endl;
//system("pause");
//}
}
else {
cout << "Error de traduccion. Volviendo a intentarlo..." << endl;
out_text="";
}
}
else {
system("color 0c");
cout << "Ha habido un error." << endl;
todo_correcto = true;
system("pause");
}
}
return 0;
}


Me encuentro con algunos errores un poco inquietantes. Si ejecuto una vez el depurador puede que lo haga bien. Pero la siguiente ejecucion aparecen caracteres erroneos en el archivo.js. Sustituye bien los caracteres y no hay problema a la hora de escribirlo en el fichero. El problema es que en la orden string.replace("blablabla"); pone por delante algo como "Ã", "", "‰" o "š". Pero no siempre.

Lo que me deja perplejo es que a diferentes ejecuciones, diferentes resultados. Y es como si llevase la cuenta. Si no le dejo escribirlo en el archivo.js, como que no esta contento por que a la proxima ejecucion sigue haciendolo mal. (en este codigo se queda clavado en errores, de hay que sepa que lo hace mal y no vuelve a hacerlo bien nunca. [aúnque reinicie el equipo, sigue hacendolo mal.])

En fin. ¿Alguien que pueda revisar el codigo y aclararme la equivocacion?

Por si tiene algo que ver... uso windows 7 64bit, CodeBlocks 13.12 y el codigo tal cual lo veis.

Un saludo y gracias.

Agradecería tambien que quien responda, se suscriba o siga este tema por si me surgen mas dudas. (ha habido veces que alguien responde y no vuelve a pasar nunca para ver si existen mas cuestiones o ver si realmente ha servido de algo.)

PD: También lo hice en python, pero como que las "\" no deja meterlas bien en los strings.
17  Programación / Programación C/C++ / Motor juegos C++, openGL y codeblocks en: 25 Febrero 2015, 17:01 pm
Muy buenas!:

He estado buscando y no encuentro lo que yo busco.

Tengo cierta experiencia programando juegos en Blender. Mientras aprendía a programar para Blender en python, toque Python (lo que viene siendo el programa en consola) y PyGame. Despues aprendí a programar en PHP y javascript en un curso. Despues pude aplicar lo aprendido de javascript para aprender Canvas. (para quien no sepa: lo que aprendí de canvas es mostrar imagenes. Lo demas realmente no es mas que javascript puro y duro.) Y ahora estoy a tope con C++.

Estoy viendo cosillas. Mirando por un lado y por otro. Aún no consigo nada realmente extraordinario o medianamente bueno como para estar orgulloso, y ya estoy buscando como hacer un juego.

El caso es: En los juegos que he echo en javascript funcionan de la siguiente forma:
 
Una funcion run() llama a Act(), Paint() y run() (si se llama a sí misma). Esta ultima pasados 0.017s.

Al llamarse a si misma en ese intervalo de tiempo se obtiene el bucle que engloba al juego.

Despues en Act() se hacen los calculos con las teclas que se pulsan y se dejan de pulsar.
Y por ultimo Paint() muestra el estado actual de los calculos de forma visual al jugador (dibujando el cubito en player.x=25 o player.x=500).

Busco hacer juegos a base de puro codigo. Nada de usar motores externos que despues dan errores que no tienen nada que ver con mi codigo. (Eso mismo me paso con Blender y por eso lo dejé de lado.)

Lo que quiero saber es: ¿Hay algo como el run() que acabo de explicar? ¿Se puede hacer en C++ que una funcion se llame a sí misma al cabo de X segundos o milisegundos sin que en ningún momento el programa quede como "no responde"? ¿Como lo hago exactamente? (se coger las teclas pulsadas y el ratón con OpenGL [mas o menos...])

(lo ideal como respuesta es: sentencia(parametros), forma de uso de la sentencia, librería necesaria para usarla y tipos de los parametros [int, double, char, string, boolean, matriz, tupla].)

Datos extra por si falta informacion:
- Utilizo Codeblocks 13.12.
- Sigo los tutoriales de minidosis.org.
- Tengo windows 7 64 bits.
- Estoy enfocado a usar OpenGL. (Por cabezonería. No pienso en hacer juegos DirectX.)
- Ya tengo todo lo necesario para correr OpenGL. (he echo pruebas)

Ejemplos de juegos que he echo en javascript: http://desiresportal.esy.es/juegos/
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines