› Foros › Multiplataforma › Desarrollo
namespace disparo2
{
class Disparo //DEFINICION DE LA CLASE
{
//DEFINICION DE ATRIBUTOS///
//textura de la nave
public Texture2D TexturaDisparo;
//posicion de la nave
public Vector2 PosicionDisparo;
// velocidad
public Vector2 VelocidadDisparo;
private ContentManager _Content;
public void Initialize() // el metodo initialize establece las propiedades iniciales de la clase
{
if
(VelocidadDisparo.Y >= 0)
VelocidadDisparo.Y--;
}
public void LoadContent(ContentManager Content)
{
this._Content = Content;
TexturaDisparo = Content.Load<Texture2D>("textures/nave");
//PosicionInfo = Content.Load<SpriteFont>("Font/menu");
PosicionDisparo = new Vector2(600, 600);
}
public void Update()
{
DibujarDisparo();
Avancedisparo();
}
public void DibujarDisparo( )
{
KeyboardState teclado;
teclado = Keyboard.GetState();
if (teclado.IsKeyUp(Keys.Up) && PosicionDisparo.Y >= 0)
Draw.draw(spriteBatch);
}
public void Avancedisparo()
{
PosicionDisparo.Y -= 1;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(TexturaDisparo, PosicionDisparo, Color.White);//dibujamos la nave
}
}
}
class Disparo //DEFINICION DE LA CLASE
{
//DEFINICION DE ATRIBUTOS///
//textura de la nave
public Texture2D TexturaDisparo;
//posicion de la nave
public Vector2 PosicionDisparo;
// velocidad
//Lista de disparos:
List<Disparo> disparos = new List<Disparo>();
private ContentManager _Content;
public void Initialize() // el metodo initialize establece las propiedades iniciales de la clase
{
}
public void LoadContent(ContentManager Content)
{
this._Content = Content;
TexturaDisparo = Content.Load<Texture2D>("textures/nave");
//PosicionInfo = Content.Load<SpriteFont>("Font/menu");
PosicionDisparo = new Vector2(600, 600);
}
public void Update()
{
creardisparo();
avancedisparo();
}
public void avancedisparo()
{
PosicionDisparo.Y -= 1;
}
public void creardisparo( )
{
KeyboardState teclado;
teclado = Keyboard.GetState();
if (teclado.IsKeyDown(Keys.Up))
{
Disparo disparo = new Disparo();
PosicionDisparo = new Vector2(PosicionDisparo.X , PosicionDisparo.Y );
disparos.Add(disparo);
}
}
public void Dibujardisparo(SpriteBatch spriteBatch)
{
foreach(Disparo s in disparos)
spriteBatch.Draw(TexturaDisparo, PosicionDisparo, Color.White);
}
}
}
kappa64 escribió:Lo mejor para aprender a programar juegos en mi opinión es BennuGD seguido de Game Maker.
Si quieres programar en C++ mi recomendación es que utilizes un buen libro de introducción a la programación en C++/C porque eso de ir entendiendo el código de los tutoriales te puedo asegurar que nunca es suficiente.
Uno tiene que aprender a expresar sus algoritmos de forma natural en el lenguaje de programación que esté usando.
En resumen:
Si quieres aprender a programar videojuegos de forma "divertida" moviendo monigotes por la pantalla desde el momento 0 , utiliza BennuGD y si quieres cojer el camino rápido y hacer un juego sin tener ni idea de programación utiliza Game Maker.
http://www.bennugd.org/
BennuGD es un lenguaje interpretado y tiene interpretes para muchas plataformas , incluyendo Windows , GNU/Linux , Wii , Xbox , Dreamcast , PS2 , Android y un largo etc
Unos cuantos juegos que programados en BennuGD:
http://www.youtube.com/watch?v=qFTYAxsF9GQ#t=77
http://www.youtube.com/watch?v=i643JpSGpwI
Mucha gente de la comunidad de BennuGD son personas sin experiencia previa en el mundo de la programación así que encontraras tutoriales y documentación a casco porro orientado a los que se están iniciando. Tutoriales que enseñan a utilizar el lenguaje , las bases de la programación y de los videojuegos de una manera bastante entretenida , pues con dos o tres lineas de código ya puedes pintar algo en la pantalla.
public void creardisparo()
{
KeyboardState teclado;
teclado = Keyboard.GetState();
tiempodedisparo++;
if (teclado.IsKeyDown(Keys.Up) && tiempodedisparo > 25)
{
Disparo disparo = new Disparo();
disparo.PosicionDisparo = new Vector2(PosicionDisparo.X, PosicionDisparo.Y);
disparos.Add(disparo);
tiempodedisparo = 0;
}
}
tchusami escribió:Buenas, si vai a formar algún grupo de desarrollo en XNA yo quiero unirme xD.
Dicho esto, por aquí dejo un proyecto que no está completamente finalizado pese a que está muy avanzado, lo deje porque la universidad me quitaba demasiado tiempo y luego me dió demasiada pereza continuarlo pero, mirando el código puede eliminar dudas a mas de uno.
Proyecto: https://dl.dropboxusercontent.com/u/23705939/BubbleDestroy.rar
Un saludo,
tchusami.
__KURRY__ escribió:asi "dispara" con el intervalo de tiempo que yo quiera,dejando el boton pulsado.Ahora me toca detectar cuando se sale de la pantalla, borrarlo,y que dispare cada vez que pulso el boton no dejandolo pulsado....poquito a poco.
if( disparo.PosicionDisparo.X > 800 or disparo.PosicionDisparo.X < 0 or
disparo.PosicionDisparo.X > 600 or disparo.PosicionDisparo.Y < 0){
disparos.remove(disparo);
}
public void creardisparo()
{
KeyboardState teclado;
teclado = Keyboard.GetState();
tiempodedisparo++;
//detectar si se pulsa la tecla
if (teclado.IsKeyDown(Keys.A))
{
disparopulsado = true;
tiempodedisparo--;
}
if (teclado.IsKeyUp(Keys.A))
{
disparopulsado = false;
}
//Condicion para crear los disparos
if (disparopulsado && tiempodedisparo > 1)
{
//disparo simple
Disparo1 disparo = new Disparo1();
disparo.PosicionDisparo = new Vector2(PosicionDisparo.X, PosicionDisparo.Y);
disparos.Add(disparo);
tiempodedisparo = 0;
}
public void avancedisparo()
{
VelocidadDisparo = 5;
for (int i = 0; i < disparos.Count; i++)
{
// Anima cada disparo
disparos[i].PosicionDisparo = new Vector2(disparos[i].PosicionDisparo.X , disparos[i].PosicionDisparo.Y - VelocidadDisparo);
//borrar disparos si se salen de la pantalla
if (disparos[i].PosicionDisparo.Y < 0)
{
disparos.RemoveAt(i);
i--;
}
}
}
public void moverdisparo ()
{
KeyboardState teclado;
teclado = Keyboard.GetState();
if (teclado.IsKeyDown(Keys.Right) && PosicionDisparo.X <= 1280 )
PosicionDisparo.X += VelocidadDisparo;
if (teclado.IsKeyDown(Keys.Left) && PosicionDisparo.X >= 0 )
PosicionDisparo.X -= VelocidadDisparo;
if (teclado.IsKeyDown(Keys.Up) && PosicionDisparo.Y >= 0 )
PosicionDisparo.Y -= VelocidadDisparo;
if (teclado.IsKeyDown(Keys.Down) && PosicionDisparo.Y <= 720 )
PosicionDisparo.Y += VelocidadDisparo;
}
public Boolean ColisionEnemigos( Disparo disparos, Enemigos enemigos)
{
Vector3 min1 = new Vector3 (enemigos.PosicionEnemigos.X, enemigos.PosicionEnemigos.Y,0);
Vector3 max1 = new Vector3 (enemigos.PosicionEnemigos.X + 50, enemigos.PosicionEnemigos.Y + 50,0);
Vector3 min2 = new Vector3(disparos.Posiciondisparo.X,disparos.Posiciondisparo.Y, 0);
Vector3 max2 = new Vector3(disparos.Posiciondisparo.X + 50, disparos.Posiciondisparo.Y + 50, 0);
BoundingBox box1 = new BoundingBox(min1,max1* new Vector3(0.99f, 0.99f, 0));
BoundingBox box2 = new BoundingBox(min1,max1* new Vector3(0.99f, 0.99f, 0));
if (box1.Intersects(box2))
{
return true;
}
else
{
return false;
}
}
for (int i = 0; i < enemigos.Count; i++)
{
//colision//
if (enemigos[i].ColisionEnemigos(disparos[i],enemigos[i]))
{
enemigos[i].PosicionEnemigos = Vector2.Zero; ;// los enemigos van a 0.0
}
}
class Disparo {
Vector2 Posicion { get; private set; }
BoundingBox Colision { get; private set; }
Texture2D Imagen { get; private set; }
public void Update() { ... }
public void Draw() { ... }
}
magurin escribió:Saludos chicos, no he podido resistirme y animaros a que probeis cocos2dxna. Que ademas de estar basado en xna es multiplataforma xbox incluida. Sistema de partículas etc... Estoy bastante metido, así que si queréis creamos un grupo de skype y hacemos cositas. Un saludo!