Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

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.

Mostrar Mensajes Menu

Mensajes - HarvesterOfAcorns

#16
Principiantes / Re: como verificar objetos null en c++
05 de Junio de 2009, 11:59:28 PM
Puede que me equivoque, pero creo que no hay una manera de hacer lo que quieres, cuando declaras una variable en C o C++ no tienes ninguna seguridad de que esa variable sea inicializada con un valor nulo, por ejemplo si haces:

int i;

std::cout << i << std::endl;

lo más probable es que imprima cualquier valor distinto de 0

Una buena costumbre es inicializar las variables al declararlas.

int i = 0;
int *p = NULL;

y lo mismo para las instancias de clase, procuras que la constructora inicialice todas las variables que declare.
#17
General Programadores / Re: Links alternativos con PHP
05 de Junio de 2009, 11:37:11 PM
A ver si te sirve lo siguiente, es un método más fácil de poner en práctica, con PHP

Código (php) [Seleccionar]

<?php
$url1 
"http://www.servidor1/archivo.arch";
$url2 "http://www.servidor2/archivo.arch";

if(
fopen($url1,"r")!=FALSE){
echo 
'<a href='.$url1.'>'.$url1.'</a>';
}
else if(
fopen($url2,"r")!=FALSE){
echo 
'<a href='.$url2.'>'.$url2.'</a>';
}
?>



comprueba que el archivo es accesible antes de mostrar el link adecuado.
#18
Gracias por la aclaración, MonzterCrew . Impresiona bastante el resultado que se obtiene para la sencillez que parece requerir  su manejo.

Salud.
#19
General Programadores / Re: Links alternativos con PHP
05 de Junio de 2009, 08:50:01 PM
Te sugiero un método, aunque para ponerlo en práctica son imprescindibles un par de cosas que sin duda limitan la solución, la primera es que tengas acceso al servidor o servidores desde donde se descarga el archivo y la segunda es que el servidor en cuestión sea Apache, aunque supongo que otros servidores tendrán mecanismos semejantes, este es el que yo conozco un poco :P

En la carpeta donde guardas el archivo a descargar has de crear un fichero .htaccess y escribir en él las siguiente línea, en el caso que el error esperado sea el 500, error interno del servidor:

ErrorDocument 500 http://nueva_direccion_de_descarga/archivo.extension


donde "nueva_direccion_de_descarga/archivo.extension" será la URL de otra copia del archivo a descargar, en esa carpeta deberás poner otro .htaccess similar dirigiendo el error a otro posible punto de descarga alternativo. Ten en cuenta que cualquier error arrojado para esa carpeta te redirigirá al archivo alternativo, supongo que lo ideal es que en esa carpeta solo esté el archivo en cuestión.

Puedes redirigir en caso de otros errores, basta cambiar el número.

Espero te sirva ;)
#20
Código (html4strict) [Seleccionar]
<table cellpadding=0 cellspacing=0 align=center border=0><tr>
<td align=center height=43 width=117 border=4 style="border-color:#A2A0B4;border-style:solid;border-width:3" onMouseOver="this.bgColor='#4AADFF';this.style.borderColor='#4AADFF';font.style.color='white'" onmouseout="this.bgColor='white';this.style.borderColor='#A2A0B4';font.style.color='#A2A0B4'">
<font id="font" class="h2b">Hola!<font>
</td>
</tr></table>


Así, tal vez, al menos para Firefox, Opera, Safari... para IExplorer no sé, en ese hay un bicho que no me deja entrar >:(
#21
Off-topic / Re: Duda sobre probabilidad
27 de Marzo de 2009, 09:29:51 PM
Creo que la respuesta de Pogacha es la más acertada, la menor probabilidad de que ninguna de las fichas coincida con su casilla es 1 entre 30, las otras probabilidades serían mayores.
Siguiendo el razonamiento de Pogacha, para la primera casilla tienes 1 entre 30 probabilidades de que coincida, luego tienes 29 entre 30 de que no coincida, para la segunda tienes 28 de 29 de que no coincida siempre y cuando no saliera la ficha 2 en la primera casilla, pero si salió tendrás 29 probabilidades de entre 29 de que no coincida y así sucesivamente, luego:

Caso más desfavorable  29!/30! => 1/30

Caso más favorable  29! x 29 / 30! = 29/30
#22
Proyectos / Re: MMO en 2D
27 de Febrero de 2009, 09:01:05 PM
Con Flash 9 no se puede entrar, con Flash 10 no hay problema.

Mucho bicho pululando, supongo que tendrás bien claros los objetivos del juego, pero mientras lo vas desarrollando, ¿porque no pones un arma, aunque nada más sea un bate de béisbol, en la mano de esos hombrecitos desnudos y les das la capacidad de exterminar insectos? Ahora en serio, me parece que está muy bien.

Dices que lo tienes alojado en un servidor dedicado, ¿qué usas para la comunicación cliente-servidor? ¿Tal vez XMLSocket para el cliente?
#23
Proyectos / Re: proyecto the fly.
27 de Febrero de 2009, 08:40:16 PM
¿Qué es esto del KISMET? la curiosidad me corroe por dentro.

Por cierto, enhorabuena por tu trabajo, me gusta un wevo ese ambiente que le has dado.
#24
Has declarado tus clases en un espacio de nombres? Lo pregunto porque se me ocurre una hipótesis pelín peliaguda, pero dado lo chungo del asunto no estaría de más descartar.

A ver, supongamos que en alguno de los archivos de cabecera que hayas incluido en tu proyecto, digamos alguno de opengl, se define una clase con el mismo nombre que la tuya, Texture, supongamos, y van dos, que alguna de las constructoras de esa clase de ogl admite los mismos argumentos que la constructora de tu clase Texture; supongamos, que pesadito!!!, que esa clase implementa un método que se llama ozu(), esto ya sería la leche de la coincidencia, y por último vamos a suponer que ese método ozu() ejecuta otro método de su misma clase cuando se le llama, supón que es un método privado, y que se llama tellmefoo(), la releche!!!!

Al crear una instancia de Textura el compilador debería cuando menos avisar de que hay dos clases con el mismo nombre y que no sabe a cual te estás refiriendo, salvo que en alguna parte del código haya alguna instrucción del tipo "using namespace espacio_opengl" que le indique al compilador que la clase Texture que ha de instanciar  no es la tuya sino la de ogl.

Además esto también podría explicar el problema de  las dll.

Bueno, ya avisé que era descabellado, igual me he pasao.

#25
Modelado / Re: Ayuda!!!!
04 de Enero de 2009, 12:53:44 AM
Hombre, si tu vaticinio llega a cumplirse sin duda será porque Yggdrasil23 tiene el firme convencimiento de que hace justo lo que quiere o tiene que hacer, probablemente desista antes, pero en cualquier caso no vino a preguntar si a los demás nos parecía que tenía alguna posibilidad o simplemente pensábamos que era ridículo el hecho de plantearlo, preguntó algo muy específico a lo cual hasta ahora ninguno de los presentes hemos contestado.
Entiendo que tu respuesta va con la mejor intención, pero creo que te hace más feliz a ti que a él, de hecho creo que a él no le va a hacer nada feliz y por lo demás dudo mucho de que tenga algún valor pedagógico.

Yggdrasil23, échale un vistazo a esta página para lo del C

http://www.conclase.net/
#26
Flash/Flex / Re: Ayuda con movimientos con el raton
03 de Enero de 2009, 10:41:36 PM
Pos si, la verdad que no gira.
En este he modificado un poco el código anterior, he cambiado la forma de calcular el desplazamiento, ahora es más "exacta", más corta, más trigonométrica >.< , pero para usarla con tiles habría que retocarla bastante, mejor pensado habrá que retocarla bastante de cualquier manera si se pretende que el resultado sea un movimiento fluido, pero como muestra creo que puede servir.
He añadido la función 'gira_unidad()' que orienta la figura en la dirección del movimiento, muy sencilla también y con enormes posibilidades de mejora.
Ahí va:

Código (actionscript) [Seleccionar]

//creamos un documento nuevo, de 550x400, por ejemplo
//marcamos los límites del mapa, que serán los de nuestro documento
var limit_O:Number = 0;
var limit_N:Number = 0;
//para el límite Este y Sur le restamos al tamaño del documento
//el grosor y la altura de la unidad
var limit_E:Number = 550 - 8;
var limit_S:Number = 400 - 8;
//creamos el mapa
this.createEmptyMovieClip("mapa", 0);
mapa._x = limit_O;
mapa._y = limit_N;
mapa._width = limit_E;
mapa._height = limit_S;
//para poder apreciar el giro de la figura necesitamos
//que esta sea asimétrica luego un cuadrado no nos sirve
//dibujaré un triángulo isósceles para indicar la dirección
//del movimiento
this.createEmptyMovieClip("unidad", 1);
unidad.beginFill(0xFF0000);
unidad.lineTo(-10, 15);
unidad.lineTo(-10, -15);
unidad.lineTo(0, 0);
unidad.endFill();
//si tomamos como referencia para la posición del personaje
//la esquina superior izquierda del rectángulo
//ahora estaría colocado en la posición (0,0), marcamos
//su posición actual
var pos_x:Number = 0;
var pos_y:Number = 0;
//marcamos igualmente la dirección en la que apunta la unidad
//para ello usaré una variable que guarde el ángulo, en radianes,
//de la rotación, empezamos con un ángulo de cero
var rot:Number = 0;
//función que inicia el juego
function init(){
unidad._x = 200;
unidad._y = 200;
intervalo = setInterval(juego,40);
}
//creamos el bucle del juego
var intervalo:Number;
function juego(){
clearInterval(intervalo);
gira_unidad();
posiciona_unidad();
intervalo = setInterval(juego,40);
}
var iniciado:Boolean = false;
//empezamos a jugar
if(iniciado == false){
init();
iniciado = true;
}
//declaramos las variables que guardarán la posición
//donde pulsamos el ratón
var destino_x:Number;
var destino_y:Number;
//creamos dos variables que guardarán el diferencial de
//movimiento para cada frame
var dx:Number = 0;
var dy:Number = 0;
//para conocer la posición absoluta de la zona donde pulsamos
//usaré una referencia a un movieclip situado en (0,0)
this.createEmptyMovieClip("origen",2);
//recogemos las pulsaciones en el ratón y calculamos dx, dy
mapa.onMouseDown = function (){
destino_x = origen._xmouse;
destino_y = origen._ymouse;
};
//A diferencia de antes debemos declarar la variable que
//guarde el ángulo de la dirección de desplazamiento
//como variable global para que sea accesible a la función
//de desplazamiento y a la de giro también
var pendiente:Number;
//posicionamos la unidad
function posiciona_unidad(){
//distancia que separa la posición actual de
//la posición de destino medida en los ejes x e y
var desplazamiento_x:Number = destino_x - unidad._x;
var desplazamiento_y:Number = destino_y - unidad._y;

//para evitar que la unidad titile cuando se supone debería
//estar parado, ya que al usar las funciones trigonométricas
//seno y coseno es posible que no alcancemos con exactutud el
//punto de destino, esto haría que estuviera corrigiendo
//constantemente su posición, como si tuviera el baile
// de San Vito pues para evitarlo le damos cierta
//tolerancia a la posición de parada
if(desplazamiento_x < 4 && desplazamiento_x > -4){
if(desplazamiento_y < 4 && desplazamiento_y > -4){
dx = 0;
dy = 0;
}else{
//desplazamiento en vertical:
if(desplazamiento_y > 4){
dy = 4;
}else if(desplazamiento_y < -4){
dy = -4;
}
dx = 0;
}
}else{
//calculamos el ángulo relativo al eje x del punto final
//en relación al punto de partida y medido en sentido
//antihorario desde el centro de coordenadas
pendiente = Math.atan2((desplazamiento_y),(desplazamiento_x));
//desplazamiento en vertical
if(pendiente == 0){
if(desplazamiento_x > 4){
dx = 4;
}else if(desplazamiento_x < -4){
dx = -4;
}
dy = 0;
}else{
//para un desplazamiento que no sea horizontal ni vertical
//el incremento horizontal la calculamos con referencia al
//coseno del angulo que forma la dirección del movimiento
//con el eje x positivo y el incremento vertical en relación
//al seno del mismo ángulo
//deplazamiento en oblicuo:
dx = 8 * Math.cos(pendiente);
dy = 8 * Math.sin(pendiente);
}
}
unidad._x += dx;
unidad._y += dy;
}
function gira_unidad(){
//si el ángulo de de la figura es diferente al de la
//dirección de movimiento lo igualamos:
if(rot != pendiente){
rot = pendiente;
//giramos el movieclip para colocarlo en la dirección
//del movimiento, el ángulo rot lo pasamos a
//grados sexagesimales
unidad._rotation = rot*180/Math.PI;
}
}


En cuanto a como insertarlo en tu código, pues no lo tengo muy claro, lo mejor sería que lo hicieras específico para tu programa
en función de la idea que tengas del resultado final y si éste te sirve de algo, pues aprovéchalo cuanto puedas.

Supongo que lo fundamental es tener el concepto claro, que luego ya se encontrará la forma de desarrollarlo.

Suerte con él.
#27
Modelado / Re: Ayuda!!!!
03 de Enero de 2009, 06:58:13 PM
¿Fucsia?¿Qué no habéis oído hablar de Don Justo y su catedral?
#28
Flash/Flex / Re: Ayuda con movimientos con el raton
03 de Enero de 2009, 02:52:29 AM
Pues me picó la curiosidad de como se podría hacer y no he parado hasta que no he conseguido algo parecido y es que tengo unas obsesiones rarísimas Oo , mira a ver si te puede servir esto:

Código (actionscript) [Seleccionar]

//creamos un documento nuevo, de 550x400, por ejemplo
//marcamos los límites del mapa, que serán los de nuestro documento
var limit_O:Number = 0;
var limit_N:Number = 0;
//para el límite Este y Sur le restamos al tamaño del documento
//el grosor y la altura de la unidad
var limit_E:Number = 550 - 8;
var limit_S:Number = 400 - 8;
//creamos el mapa
this.createEmptyMovieClip("mapa", 0);
mapa._x = limit_O;
mapa._y = limit_N;
mapa._width = limit_E;
mapa._height = limit_S;
//dibujamos nuestro personaje, un rectángulo de 8x8 en este caso
this.createEmptyMovieClip("unidad", 1);
unidad.beginFill(0xFF0000);
unidad.lineTo(8, 0);
unidad.lineTo(8, 8);
unidad.lineTo(0, 8);
unidad.lineTo(0, 0);
unidad.endFill();
//si tomamos como referencia para la posición del personaje
//la esquina superior izquierda del rectángulo
//ahora estaría colocado en la posición (0,0), marcamos
//su posición actual
var pos_x:Number = 0;
var pos_y:Number = 0;
//función que inicia el juego
function init(){
unidad._x = 200;
unidad._y = 200;
intervalo = setInterval(juego,40);
}
//creamos el bucle del juego
var intervalo:Number;
function juego(){
clearInterval(intervalo);
posiciona_unidad();
intervalo = setInterval(juego,40);
}
var iniciado:Boolean = false;
//empezamos a jugar
if(iniciado == false){
init();
iniciado = true;
}
//declaramos las variables que guardarán la posición
//donde pulsamos el ratón
var destino_x:Number;
var destino_y:Number;
//creamos dos variables que guardarán el diferencial de
//movimiento para cada frame
var dx:Number = 0;
var dy:Number = 0;
//para conocer la posición absoluta de la zona donde pulsamos
//usaré una referencia a un movieclip situado en (0,0)
this.createEmptyMovieClip("origen",2);
//recogemos las pulsaciones en el ratón y calculamos dx, dy
mapa.onMouseDown = function (){
destino_x = origen._xmouse;
destino_y = origen._ymouse;
};
//posicionamos la unidad
function posiciona_unidad(){
//tenemos ocho posibles posiciones para cada movimiento
//los ocho pixeles (o tiles según sea) que rodean al
//punto de referencia de la unidad
//tomamos la que más se aproxime a la dirección del movimiento

if((destino_x - unidad._x) == 0){
if((destino_y - unidad._y) == 0){
dx = 0;
dy = 0;
}else{
if((destino_y - unidad._y) > 0){
dy = 1;
}else{
dy = -1;
}
dx = 0;
}
}else{
//calculamos el ángulo relativo al eje x del punto final
//en relación al punto de partida y medido en sentido
//antihorario desde el centro de coordenadas
var pendiente:Number = Math.atan2((unidad._y - destino_y),(destino_x - unidad._x));
//atan2 solo devuelves valores de ángulo exacto para
//valores comprendidos entre PI positivo y PI negativo
//para ángulos superiores a PI devuelve valores negativos
//luego para esos valores restamos a 2PI el propio valor devuelto
if(pendiente < 0)
pendiente = 6.24 + pendiente;
if(pendiente == 0){
dx = 1;
dy = 0;
}
else if(pendiente < 0.39 || pendiente > 5.89){
dx = 1;
dy = 0;
}
else if(pendiente > 0.39 && pendiente <= 1.17){
dx = 1;
dy = -1;
}
else if(pendiente > 1.17 && pendiente <= 1.96){
dx = 0;
dy = -1;
}
else if(pendiente > 1.96 && pendiente <= 2.74){
dx = -1;
dy = -1;
}
else if(pendiente > 2.74 && pendiente <= 3.53){
dx = -1;
dy = 0;
}
else if(pendiente > 3.53 && pendiente <= 4.31){
dx = -1;
dy = 1;
}
else if(pendiente > 4.31 && pendiente <= 5.10){
dx = 0;
dy = 1;
}
else if(pendiente > 5.10 && pendiente <= 5.89){
dx = 1;
dy = 1;
}
}
unidad._x += dx;
unidad._y += dy;
}



Eso sí, como ejemplo del buen programar no te va a servir de mucho, ni OOP ni Estructurada ni na... que uno es un aficionadillo
;)
#29
Principiantes / Re: Soy nuevecita
25 de Diciembre de 2008, 07:19:55 PM
Cita de: Khayn en 25 de Diciembre de 2008, 06:54:13 PM
un MMORPG?....

Dando mi opinión sobre los MMORPGs, si es que la quieres leer, y desde un punto de vista de diseñador MMORPG, con un proyecto que existe y que hace 2 dias estubo en fase de testeo abierto........


Vaya, vaya, así que después de todo no es imposible hacerse uno de estos en plan "artesanal", lo digo sin intención de infravalorar tu trabajo ni mucho menos, todo lo contrario.

Y los detractores de los MMORPGeros que decían a propósito de tu descabellada idea?
#30
Proyectos / Re: Tutorial: Tetris en c++
25 de Diciembre de 2008, 06:52:20 PM
Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM

Sí, somos 156 monos amaestrados en un programa de realidad virtual y yo. Todo a mi alrededor son pieles de banana.

Ooooh!  ^_^ que monería!

Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM
Los monos fueron entrenados en una base militar americana. Sólo hablan Inglés, y yo soy muy vago para traducir lo que escriben al español.

Por fin los militares americanos hacen algo útil

Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM
Planeo hacer un tutorial más adelante, añadiéndole gráficos y efectos al tetris. Para ese sí que usaré IndieLib.

Aparte estoy preparando un nuevo tutorial sobre como hacer un editor de pantallas tipo el del juego Aquaria o Braid, usando IndieLib también.

Es un lujo tenerte por aquí

Muy buena la librería,  AK47, muy agradecido.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.