2. Agenda
Ver como una clase está hecha de métodos y datos.
Mostrar como los juegos son clases en C#.
Describir como los métodos Draw y Update comparten
los datos.
La diferencia entre variables locales en bloques y las
variables miembro en clase.
Utilizar operadores para actualizar los valores de
colores cuando un juego que está en ejecución.
Mostrar el “Overflow” de variables.
3. En el presente ejemplo del método Draw configura y recrea un color.
Nos gustaría además crear un programa que cambie el color todo el
tiempo.
Para poder hacer esto, es necesario comprender cómo trabajan los
juegos
protected override void Draw(GameTime gameTime)
{
Color backgroundColor;
backgroundColor = new Color(50, 70, 70);
GraphicsDevice.Clear(backgroundColor);
base.Draw(gameTime);
}
4. Juegos y las clases
En C# los programas son creados por clases.
Una clase es una colección de comportamientos
(métodos) y datos (variable).
Los diseñadores de XNA crear una clase llamada Game
para aparecer después del juego.
Los juegos se crean basándose en esta clase.
5. •Una clase contiene juntos métodos y datos.
•Las clases pueden ser muy grandes.
•Sus nombres reflejan de manera general su función.
• Game ese nombre para la clase en XNA utilizada para representar un
programa de juego.
•VS crea una clase de inicio “Game” , la cual es creada cuando
hacemos un nuevo proyecto del tipo juego.
•El juego se crea codificando esta clase.
6. Como se ejecuta el juego
el método Update
cambia los datos del
juego cada vez que el
reloj avanza
Update
Datos
del juego
Draw
Clase:Game1
7. Como se ejecuta el juego
el método Draw y lee
los datos del juego y
los dibuja en pantalla
Update
Datos
del juego
Draw
Clase:Game1
8. •Los métodos Draw y Update en un juego XNA son llamados 60 veces
por segundo.
• El Framework XNA lo hace automáticamente.
• Esto pasa en los juegos, es totalmente imperceptible.
•Si el método Update cambia los datos cada vez que es llamado, el
juego dan la apariencia de movimiento.
•Para crear un fuego es necesario codificar los métodos Update y Draw
9. El programa como una clase
Los datos del juego y los métodos Draw
y Update son conjuntados dentro de C#
en una construcción a la que llamamos
clase.
Una clase es una unidad fundamental
de un programa C#.
Esta contiene datos (variables) y
comportamientos (metros).
La clase que XNA crea para un nuevo
juego está localizado dentro de un
archivo llamado Game1.cs
Update
Game
Data
Draw
Game1.cs
10. •El mundo para un juego está compuesto por valores de rojo,
azul y verdecomo para los colores que serán mostrados..
•Es posible almacenar estos valores en variables de tipo byte,
conocemos que un tipo Color puede ser construido tres valores
del tipo byte.
•Estas variables conectadas como cualquier otra, con un hombre
para el tipo seguido por el identificador.
byte redIntensity;
byte blueIntensity;
byte greenIntensity;
11. Almacenar valores de datos en la
memoria
Cuando un programa se ejecuta las
variables que éste utiliza como son
vaciadas a localizaciones particulares
de memoria.
El sistema de tiempo de ejecución
para el programa tiene el cuidado de
donde están actualmente
almacenados estos datos.
Todos los temas son almacenados en
una manera parecida a esta
13. Utilizando los valores dentro del
método Draw
Game
Data
class Game1
{
byte redIntensity;
byte blueIntensity;
byte greenIntensity;
protected override void Draw(GameTime gameTime)
{
Color backgroundColor;
backgroundColor = new Color (redIntensity,
blueIntensity, greenIntensity );
GraphicsDevice.Clear(backgroundColor);
}
}
14. •Pensemos en una clase como una oficina
• conEste contiene personas que desempeñan los métodos y
escritorios con ítem se almacenan los datos de los miembros.
•Esto además contiene micrófonos para llamar un método
15. Variables locales
Crear una variable local llamada backgroundColor
dentro del método Update
Este es utilizado para almacenar el color con el cual se
llena la pantalla.
Esta variable es local para el método Update, y no
puedo ser utilizada en ningún otro lugar.
protected override void Draw(GameTime gameTime)
{
Color backgroundColor;
backgroundColor = new Color (redIntensity,
blueIntensity, greenIntensity );
GraphicsDevice.Clear(backgroundColor);
}
16. •Esta versión del juego
utiliza variables del
mundo para almacenar los
colores que serán
mostrados.
•Note que en C# un
miembro de un dato tipo
byte es inicializado en
“cero” cuando es creado
17. Actualizar los colores
Hasta este momento las pantallas color negra.
Esto es porque los valores iniciales, todos son cero.
Nos planteamos el caso en el cual la pantalla debe de
cambiar de color progresivamente, conforme pase el
tiempo.
Podemos utilizar sentencias de adición en el
métodoUpdate , del cual incrementa los valores para
los colores
18. •VS siempre va a crear un método vacío llamado Update.
•Para lograr lo que nos propusimos anteriormente, el código
deberá ser colocado dentro de este mes
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).
Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your Update logic here
base.Update(gameTime);
}
19. Salir del método Update
En esta primera parte del método se verifica que el
botón Back se esté presionando.
Si el botón ha sido presionado se sale del juego.
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).
Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your Update logic here
base.Update(gameTime);
}
20. •Esta versión del método Update incrementa la intensidad para
los colores rojo, verde y azul.
•++ es un operador que incrementa el valor de una variable en
uno
protected override void Update(GameTime gameTime)
{
// Increase the intensity values
redIntensity++;
blueIntensity++;
greenIntensity++;
base.Update(gameTime);
}
21. Demostración
En esta versión del
juego, se actualiza
la intensidad de los
valores dentro del
metro Update.
Esto causa que la
pantalla cambie
progresivamente.
22. Cada ítem es almacenado
dentro de una localización de
memoria de un tipo en
particular.
Un tipo byt de es almacenado
en una singular localización de
8 bits.
Esto quiere decir que solamente
se pueden almacenar valores
entre cero y 255.
Cuando el programa intenta
colocar el valor de 250 dentro de
la variable, el valor es regresado
a cero
23. Overflow de las variables
El overflow ocurre porque un programador utiliza un
tipo de datos en particular de una manera incorrecta.
Note que el programa por sí mismos no mostrará se
produzca.
Este es el peor tipo de error en tiempo de ejecución.
Es claro que la computadora no sabe que algo extraño
está ocurriendo.
Es necesario tener cuidado para que este tipo de
problemas no ocurran.
24. • Un programa XNA es actualmente una clase en C# que
almacena los datos del mundo del juego, y los métodos Draw y
Update.
•Los datos del el mundo están hechos de variables las cuales
son declaradas como miembros de las clases y éstas pueden ser
utilizadas por todos los métodos.
•El método Draw dibuja el mundo, y el método Update lo
actualiza 60 veces por segundo.
•Los programas en C# pueden además utilizar variables
declaradas dentro de bloques particulares y ser utilizado
solamente dentro de ellos.
•Todas las variables son más creadas dentro de localizaciones de
memoria
25. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.
26. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.
27. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.
28. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.
29. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.
30. Verdadero o falso
Un juego XNA es almacenado dentro de una clase en C#
En XNA, el método Update es llamado siempre antes del
método Draw.
Un dato miembro es similar a una oficina.
El mundo del juego es almacenado dentro de variables
locales.
El tipo de datos byte es almacenado en 8 bits de memoria.
Un programa se tiene automáticamente cuando una
variable causa un Overflow.