Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIÓN
OBJETIVO
Desarrollar el videojuego Pong en Visual C##, aplicando conocimientos de Física, como
son los Vectores, MRU y MRUA
OBJETIVOS ESPECÍFICOS
Adquirir la destreza de desarrollar videojuegos a la manera antigua
Aprender el funcionamiento de las colisiones para desarrollar el videojuego
Aprender a crear librerías y utilizarlas de manera adecuada
MARCO TEÓRICO
VECTORES
(MARTINEZ, 2009) Un vector es todo segmento de recta dirigido en el espacio. Cada vector posee
Hay que tener muy en cuenta el sistema de referencia de los vectores, que estará
formado por un origen y tres ejes perpendiculares. Este sistema de referencia permite
fijar la posición de un punto cualquiera con exactitud.
MAGNITUDES ESCALARES
Son aquellas en las que las medidas quedan expresadas por medio de un número y la
correspondiente unidad. Ejemplo de ello son las siguientes magnitudes, entre otras:
Masa
Temperatura
Presión
Densidad
MAGNITUDES VECTORIALES
Son magnitudes que para estar determinadas precisan de un valor numérico, una
dirección, un sentido y un punto de aplicación.
La suma de dos vectores libres es otro vector libre que se determina de la siguiente
forma:
Se sitúa el punto de aplicación de uno de ellos sobre el extremo del otro; el vector suma
es el vector que tiene su origen en el origen del primero y su extremo en el extremo del
segundo.
Por tanto, el vector suma de dos vectores coincide con una de las diagonales, la
"saliente", del paralelogramo que puede formarse con los vectores que se suman; la otra
diagonal representa la resta de dichos vectores.
Para efectuar sumas o restas de tres o más vectores, el proceso es idéntico. Basta con
aplicar la propiedad asociativa.
El vector que se obtiene al sumar o restar varios vectores se le denomina resultante.
Analíticamente, tenemos que multiplicar el escalar por cada una de las coordenadas del
vector.
M.R.U
Un cuerpo realiza un movimiento rectilíneo uniforme cuando su trayectoria es una línea
recta y su velocidad es constante. Esto implica que recorre distancias iguales en tiempos
iguales.
ECUACIONES DE M.R.U.
v=v0=cte
a=0
x, x0: La posición del cuerpo en un instante dado (x) y en el instante inicial (x0). Su
unidad en el Sistema Internacional (S.I.) es el metro (m)
v,v0: La velocidad del cuerpo en un instante dado (v) y en el instante inicial (v0). Su
unidad en el Sistema Internacional (S.I.) es el metro por segundo (m/s)
a: La aceleración del cuerpo. Su unidad de medida en el Sistema Internacional
(S.I.) es el metro por segundo al cuadrado (m/s2)
MRUA
Un cuerpo realiza un movimiento (M.R.U.A.) o (M.R.U.V.) cuando su trayectoria es una
línea recta y su aceleración es constante. Esto implica que la velocidad aumenta o
disminuye su módulo de manera uniforme.
La aceleración es responsable de que cambie el módulo de la velocidad (también llamado
celeridad o rapidez), se le denomina aceleración tangencial.
x=xo+vot+1/2at2
xo es la posición inicial.
vo es la velocidad inicial.
a es la aceleración.
t es el intervalo de tiempo en el que se estudia el movimiento.
Aceleración (m/s2): su valor permanece constante y distinto de cero
a=cte
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ClassLibrary1;
using System.Media;
// el cero de las coordenadas en bitmap esta en la parte superior izquierda
// y el y es hacia abajo
namespace VideoJuego
{
public partial class Form1 : Form
{
public Form1()
{
P = new Vector2(px, py);
Vo = new Vector2(vx, vy);
Vo2 = new Vector2(10,-150);
A = new Vector2(0, ay);
PR = new Vector2(750,150 );
PL = new Vector2(10, 150);
RYP = new Vector2(100, 150);
Inicialize();
LoadContent();
InitializeComponent();
}
}
private void Inicialize(){//pone todos los objetos al inicio del juego
InicializaFondo();
InicializaRaqueta();
InicializaRaquetaL();
InicializaTexture();// es la pelota
InicializaRaquetayPelota();
}
contador1++;
//this.label2.Text = (gameOver);
}
// colision con la pared derecha
if (P.X <= 0)
{
Vo = new Vector2(-Vo.X, Vo.Y);
contador++;
//this.label2.Text = (gameOver);
this.button2.Text = "Play";
this.timer1.Enabled = false;
// this.label2.Text = (gameOver1);
//Vo2= new Vector2(10, -150);
}
//predice la nueva posicion de la particula en el tiempo t+dt
//colision raqueta derecha
if (700<= P.X &&(PR.Y -5 <= P.Y && PR.Y + 155 >= P.Y))
//if ((raqueta.Width-texture.Width<P.Y))
{
Vo = new Vector2(-Vo.X, Vo.Y);
// contador++;
}
//colision raqueta izquierda
//if (P.X <= 400 && (PR.Y - 5 <= P.Y && PR.Y + 155 > P.Y))
if (P.X< 40 && (PL.Y-5<=P.Y && PL.Y+155>P.Y))
{
Vo = new Vector2(-Vo.X, Vo.Y);
}
int suma = 0;
int suma1 = 0;
suma = contador;
suma1 = contador1;
this.label4.Text = "PUNTAJE 1: "+suma.ToString();
this.label5.Text = "PUNTAJE 2: " + suma1.ToString();
if (suma == contador2 || suma1==contador2)
{
this.label2.Text = (gameOver);
}
//MRUA
// P += Vo*dt+0.5f*A*dt*dt;
// P += Vo * (t + dt) + 0.5f * A * (t + dt) * (t + dt);
// Vo += A * dt;
// Vo2 += A * dt;
////MRU
P += Vo * dt ;
}
{
Bitmap I = new Bitmap(fondo);//variable interna que se convierte en global
Graphics g = Graphics.FromImage(I);
g.DrawImage(texture, P.ToPoint());//transforma el vector p a un punto
g.DrawImage(raqueta, PR.ToPoint());
g.DrawImage(raquetaL, PL.ToPoint());
// g.DrawImage(pelota1, RYP.ToPoint());
this.pictureBox1.Image = I;
}
//this.label2.Text = gameOver;
}
}
}
BIBLIOGRAFÍA