Ayudita con este algoritmo

Para tratar cualquier tema sin restricción, aunque no esté relacionado con juegos.

Ayudita con este algoritmo

Notapor Kurorin » 15-01-2007 12:59

[color=red]weno estoy programando un juego con unos amigos, y estoy teniendo problemas con este algoritmo de rotacion. . . es el siguiente [/color]

public void movimiento()
{
if (angulo <= 1f && devolver == false)
{
angulo += 0.01f;
Rotation = (float)angulo;
if (angulo >= 1)
devolver = true;
}
else
{
angulo -= 0.01f;
Rotation = (float)(angulo);

if (angulo <= 0f)
devolver = false;

}
}

[color=red]es el algoritmo que hace que una mira laser rote 1 radian, pero el problema es que la imagen rota y a la vez no rota @-@. . . se ve que rota, pero internamente en la maquina virtual del juego es como si la imagen se hubiera quedado quieta justo donde la cree. . alguein me puede ayudar ?? @-@. . . [/color]
[img]http://img359.imageshack.us/img359/6088/dominar8tsvs9.gif[/img]
Avatar de Usuario
Kurorin
Retrogamer
Retrogamer
 
Mensajes: 3467
Registrado: 11-09-2006 07:00
Cash on hand: 40.00
Ubicación: bukaramanga.... ( colombia )

Notapor Mario_Dan » 15-01-2007 16:45

Que lenguaje se supone que maneja, nunca habia visto que se usara "+="

Sin entender bien lo del codigo, podria insinuar... si la maquina piensa que no se ha movido, lleve un contador que indique cuanto a rotado el objeto, y siempre el valor interno de la maquina, mas valor de la variable es el nuevo valor interno... :annoyed: bueno no se si de resultado no se que es lo que anda haciendo...
Avatar de Usuario
Mario_Dan
Retrogamer
Retrogamer
 
Mensajes: 3314
Registrado: 11-06-2006 07:00
Cash on hand: 3,230.00
Bank: 108,404.00

Notapor Kurorin » 15-01-2007 17:03

[color=red]es visual C#. . . pero el += se usa desde C. . . es una forma resumida de decir a = a+x. . . seria lo mismo decir a+=x . . .

weno pues ya lo habia tratado xDD. . . pero no funciono del todo, de hehco la variable si cmabia. . y el objeto se meuve y a la vez no se meuve, como le digo @-@. . . wneo creo que a lo mejor es cosa del motor que usamos. . . @-@. . . voy ha ver si se me ocurre algo, si no lo macheteo xDD. . .

lo unico raro ahy en ese codigo, es que ene ste C si el numero es un float hay que ponerle la f al final . . .

PD. . . cuando esta disponible para su tandeada?? . . hoy esta libre?? . .
[/color]
[img]http://img359.imageshack.us/img359/6088/dominar8tsvs9.gif[/img]
Avatar de Usuario
Kurorin
Retrogamer
Retrogamer
 
Mensajes: 3467
Registrado: 11-09-2006 07:00
Cash on hand: 40.00
Ubicación: bukaramanga.... ( colombia )

Notapor Cagalli Yula Athha » 15-01-2007 19:31

Una pregunta....el fragmento de "void movimiento()", está permanentemente en ejecución ???

Porque de ser así, y por lo que he leido del código, lo más normal es que tu "laser" se mueva todo el rato izq-der,izq-der,izq-der sucesivamente...
[img]http://img142.imageshack.us/img142/518/bfccopyvz6.jpg[/img]
[img]http://i43.tinypic.com/jzwr9l.jpg[/img]
Avatar de Usuario
Cagalli Yula Athha
Importador
Importador
 
Mensajes: 8731
Registrado: 06-02-2003 08:00
Cash on hand: 0.00
Ubicación: Denia,alicante-->España

Notapor zorro_gris » 15-01-2007 20:47

Creo q no entiendo una mierda de lo q escribiste ( no me trates de ignorante apenas estoy en la enseñansa media) solo tegno 16! xD


jejeje mejorno me meto no???


Suert ojala lo escubras.!
[img]http://i13.tinypic.com/48oc1ah.jpg[/img]
Avatar de Usuario
zorro_gris
Iniciado
Iniciado
 
Mensajes: 1747
Registrado: 19-05-2004 07:00
Cash on hand: 10.00
Ubicación: n0se, d0ndE busc0!

Notapor KaTXi » 15-01-2007 21:17

Yo tengo otra pregunta...
Con esto consigues girar la cámara 0,01 radianes (o puntos si lo haces porcentual), pero solo has puesto el trozo del código que hace el cálculo, no cómo luego lo usas para repintar la pantalla (¿Z-buffer? ¿XOR?...) y si ese código de pintar la pantalla está ligado a la posición real (para detección de colisiones, etc) o son independientes...
[url=http://profile.mygamercard.net/KaTXi][img]http://card.mygamercard.net/ES/cylinder/steel/KaTXi.png[/img][/url]
Avatar de Usuario
KaTXi
Miembro del Consejo
Miembro del Consejo
 
Mensajes: 2440
Registrado: 10-10-2000 07:00
Cash on hand: 418.00
Xbox Gamertag: KaTXi
Cuenta PSN: KaTXi

Notapor Obi Wan Kenobi » 16-01-2007 00:02

a jusgar de lo que veo es lenguaje java si no me equioco
buenoe s siereto solo pusiste la condicional de lo que va a hacer mas no el buffer repetitivo para que lo haga varias veces
[img]http://galeon.com/atuk/alb.jpg[/img]
Avatar de Usuario
Obi Wan Kenobi
Camper
Camper
 
Mensajes: 2935
Registrado: 06-03-2003 08:00
Cash on hand: 180.00
Bank: 9,129.00
Ubicación: Paititi

Notapor _xx_KaRmA_xx_ » 16-01-2007 00:44

Kuro .... creo que todo tu problema esta en la variable "devolver", si entiendo bien el codigo, al subir 0.01 radianes , cambia el valor de "devolver" por lo que no volvera a entrar a ese condicional si no hasta que la variable "angulo" sea igual o menor que 0
[img]http://img217.imageshack.us/img217/9236/karmafc1.jpg[/img]
Avatar de Usuario
_xx_KaRmA_xx_
Noob
Noob
 
Mensajes: 75
Registrado: 18-09-2006 07:00
Cash on hand: 70.00

Notapor KaTXi » 16-01-2007 00:54

[quote="_xx_KaRmA_xx_"]Kuro .... creo que todo tu problema esta en la variable "devolver", si entiendo bien el codigo, al subir 0.01 radianes , cambia el valor de "devolver" por lo que no volvera a entrar a ese condicional si no hasta que la variable "angulo" sea igual o menor que 0


El problema es que "devolver" parece una variable pública y global de la misma clase, a la que accede sin un setter o un getter, y no tenemos forma de saber que es lo que hace con ella antes o después de invocar al método que nos ha pegado aquí... ¡Péganos toda la clase hombre, y ya la arreglamos entre todos!

Debugging remoto, esto si que mola :mrgreen:
[url=http://profile.mygamercard.net/KaTXi][img]http://card.mygamercard.net/ES/cylinder/steel/KaTXi.png[/img][/url]
Avatar de Usuario
KaTXi
Miembro del Consejo
Miembro del Consejo
 
Mensajes: 2440
Registrado: 10-10-2000 07:00
Cash on hand: 418.00
Xbox Gamertag: KaTXi
Cuenta PSN: KaTXi

Notapor Kurorin » 16-01-2007 05:50

jeje wneo les voy a poner la clase completa para que me den luces, mas unas capturas en pantalla de lo que esta sucediendo con el codigo asi como esta ( las imagenes de la nave, del lase y la supuesta torreta ( cuadrado fuccia ) son imagenes beta, el artista aun no ha terminado de hacer la simagenes reales ) . . .

y weno obi es un lenguaje parecido a java, es C#. . . permite orientacion a objetos muy aprecida a la de java, y cuando hay un error da muchisimas luces sobre lo que pasa, porque compila, epro a la vez interpreta , pero es que este no es un error de codigo. . es algo raro . . . @-@

figense en el update que es lo improtante, lo demas no importa . . .

//Clase completica aki abajo

public class Mira : Sprite
{
public Mira()
{

}

protected Mira(Mira Mira)
: base(Mira)
{

}

public override Object Clone()
{
return new Mira(this);
}

public override void Update()
{
movimiento();

List<Sprite> collidedSprites = Game.GetCollidedSprites(this);
if (collidedSprites != null)
foreach (Sprite s in collidedSprites)
{
if (s is StarShip && AlfaProyect.StarShip.Position.Y > this.Position.Y )
{
disparar = true;
}
}

}

public void movimiento()
{
if (angulo <= 1f && devolver == false)
{
angulo += 0.01f;
Rotation = (float)angulo;
if (angulo >= 1)
devolver = true;
}
else
{
angulo -= 0.01f;
Rotation = (float)(angulo);

if (angulo <= 0f)
devolver = false;

}
}

public bool DISP
{
set
{
disparar = value;
}
get
{
return disparar;
}
}
static double angulo = 0;
static bool devolver = false;
static bool disparar = false;
}


y esto es lo que pasa en el juego :


aqui esta todo, la torreta esta en su pocicion inicial, junto con al mira laser que tmabein esta en su posicion inicial . . .


[img]http://img143.imageshack.us/img143/8084/imagen1sc5.jpg[/img]

aqui es hasta donde gira la torreta junto con la mira

[img]http://img143.imageshack.us/img143/5031/imagen2rr3.jpg[/img]

aqui se ve que la mir alaser coliciona con al nave pero nada ocurre

[img]http://img213.imageshack.us/img213/9132/imagen3yn9.jpg[/img]

y aqui esta la nave en al pocicion inicial del laser, y ahy la torreta si disapara, para que la torreta dispare disparar tiene que ser true, y si se fijan el en codigo disparar solo es true cuando el laser coliciona con la nave "starship"

[img]http://img213.imageshack.us/img213/5130/imagen4iy4.jpg[/img]

weno ahy esta todito, haber si a lo mejro me ayudan a descubrir que pasa. . . mientras pues el seguire dando hasta que haye una solucion
[img]http://img359.imageshack.us/img359/6088/dominar8tsvs9.gif[/img]
Avatar de Usuario
Kurorin
Retrogamer
Retrogamer
 
Mensajes: 3467
Registrado: 11-09-2006 07:00
Cash on hand: 40.00
Ubicación: bukaramanga.... ( colombia )

Notapor KaTXi » 16-01-2007 10:36

¿Está la definición de la clase completa? ¿Y donde tienes definido el "Position" de This? ¿Es una propiedad que se hereda de la clase que extiendes (Sprite)?

Te recomendaría que lo ejecutaras con Debug y fueras viendo que tanto "AlfaProyect.StarShip.Position.Y" como "this.Position.Y" varían con el movimiento de la torreta y la nave, tiene pinta de que una de esas dos variables no se están cambiando.

Consejos generales: La definición de las variables globales (aunque sean Static, por cierto, ¿por qué son static?) ponlas al principio de la clase. Aunque son static y da igual donde estén ya que puedes acceder a ellas aunque no instancies la clase, pero es un detalle de buen código.
Otra cosa es que en cada llamada a Update (que imagino serán miles) creas una lista de objetos de tipo List<Sprite>. La creación de un objeto es una de las tareas mas costosas, optimizarías mucho si sacaras fuera la creación del objeto y luego solo llamaras en Update a GetCollidedSprites:

List<Sprite> collidedSprites = null;
.
.
.
.
collidedSprites = Game.GetCollidedSprites(this);
[url=http://profile.mygamercard.net/KaTXi][img]http://card.mygamercard.net/ES/cylinder/steel/KaTXi.png[/img][/url]
Avatar de Usuario
KaTXi
Miembro del Consejo
Miembro del Consejo
 
Mensajes: 2440
Registrado: 10-10-2000 07:00
Cash on hand: 418.00
Xbox Gamertag: KaTXi
Cuenta PSN: KaTXi

Notapor Kurorin » 16-01-2007 14:04

[color=red]gracias por el ultimo consejo, no habia pensado aun en optimizacion de memoria pero servira bastante, las variables son estaticas, para que conserven su valor, es que si no las dejo estaticas, inevitabelmente su valor vuelve a ser 0, o el valor con que las inicializo apenas sale de la clase. . . @-@. . .

Y si, position es heredada de sprite . . . weno ya veremos, si me va bien seguro que promociono el juego aqui xDDD

despues de esto el sigueinte paso es uno en 3D. . . wiii ^-^ :ham_ears: :ham_jump: . . .

el unico problema es que para correrlo nesesitas tener el SDK y el framework de .net xD. . .
[/color]
[img]http://img359.imageshack.us/img359/6088/dominar8tsvs9.gif[/img]
Avatar de Usuario
Kurorin
Retrogamer
Retrogamer
 
Mensajes: 3467
Registrado: 11-09-2006 07:00
Cash on hand: 40.00
Ubicación: bukaramanga.... ( colombia )

Notapor trucaino » 16-01-2007 21:24

hola yo no se mucho de esto pero me gusta el uso de comandos pues la creacion de paguinas web las utiliza todo el tiempo asi que quisiera que me enseñaran un poco de eso de lo que ablan y un programa con el que corra perfectamente esas acciones me gusta quebrarme la cabesa y de paso aprender algo :ham_surprise: gracias
chemical111@hotmail.com<br>[img]http://i16.tinypic.com/6guev7p.jpg[/img] se mejor y hasme mejor a mi jeje
Avatar de Usuario
trucaino
Newbie
Newbie
 
Mensajes: 140
Registrado: 12-12-2006 08:00
Cash on hand: 0.00
Ubicación: valle de chalco solidaridad

Notapor Kurorin » 18-01-2007 13:00

[color=red]mm pues como le digo . . yp uso el visual C# . . . ainque si quiere programar de forma muy muy pulida y complicad ala mismo tiempo programe en C. . . en internet hay muchisimos tutoriales de C. . o C++ si quiere trabajar con objetos . . . o si le interesa mucho al programacion web busque tutoriales de java . . . y leugo los integra a porgramacion web por emdio de jsp y xml y xsl =P. . .

Y weno ya descubri el problema. . . no era en al rotacion de la imagen, la imagen si esta girando, el probelam es con el motor del juego, es que la imagen ademas de ser imagen tiene un rectangulo de colicion, y ese rectangulo es el que no esta giraando, y la parte del codigo donde se giran la imagenes es totalmente protegida, osea ya se cual es. . es una matris que el motor crea internamente, pero el proceso interno de esa matris no se cual es. . . asi que estamos atascados en este punto del juego. . y tenemos que entregar todo completo este lunes, el disegnador grafico ya hizo todas las imagenes. . . ahora falta que esta cosas sirva. . . weno y gracias por la ayuda a todos. . . ahora solo nso queda ver como hacemso que el que hizo el motor nos libere el codigo . . u.uU. . .
[/color]
[img]http://img359.imageshack.us/img359/6088/dominar8tsvs9.gif[/img]
Avatar de Usuario
Kurorin
Retrogamer
Retrogamer
 
Mensajes: 3467
Registrado: 11-09-2006 07:00
Cash on hand: 40.00
Ubicación: bukaramanga.... ( colombia )

Notapor NoVivo665 » 19-01-2007 01:27

1+1= 2

:holmes:
[img]http://i26.tinypic.com/2ecd5w3.gif[/img]
Avatar de Usuario
NoVivo665
Coleccionista
Coleccionista
 
Mensajes: 5371
Registrado: 01-12-2004 08:00
Cash on hand: 280.00
Bank: 610.00
Cuenta PSN: Scurvy Driftwood

Siguiente

Volver a Off-Topic

 


  • Mensajes Relacionados
    Respuestas
    Vistas
    Último mensaje

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados