Agradeciendo los comentarios de sir ramza, les dejo este magnifico sitio de entusiastas de la programación de juegos.
Sitio Web
http://www.ramzaengine.com.ar/
Mini guía de creación de juegos MMORPG
http://www.ramzaengine.com.ar/readarticle.php?article_id=9
Saludos.
jueves, junio 19, 2008
martes, junio 03, 2008
lunes, junio 02, 2008
miércoles, mayo 21, 2008
Patrón de diseño estrategia

"El patrón Strategy permite mantener un conjunto de algoritmos de los que el objeto cliente puede elegir aquel que le conviene e intercambiarlo según sus necesidades.
Los distintos algoritmos se encapsulan y el cliente trabaja contra un objeto contexto o Context. Como hemos dicho, el cliente puede elegir el algoritmo que prefiera de entre los disponibles o puede ser el mismo objeto Context el que elija el más apropiado para cada situación.
Cualquier programa que ofrezca un servicio o función determinada, que pueda ser realizada de varias maneras, es candidato a utilizar el patrón Strategy. Puede haber cualquier número de estrategias y cualquiera de ellas podrá ser intercambiada por otra en cualquier momento, incluso en tiempo de ejecución."
Los distintos algoritmos se encapsulan y el cliente trabaja contra un objeto contexto o Context. Como hemos dicho, el cliente puede elegir el algoritmo que prefiera de entre los disponibles o puede ser el mismo objeto Context el que elija el más apropiado para cada situación.
Cualquier programa que ofrezca un servicio o función determinada, que pueda ser realizada de varias maneras, es candidato a utilizar el patrón Strategy. Puede haber cualquier número de estrategias y cualquiera de ellas podrá ser intercambiada por otra en cualquier momento, incluso en tiempo de ejecución."
En definitiva esta explicación está medio rebuscada así que les paso un diagrama de clases que hice para mi tesis inspirado en el libro Head FirstDesign Patterns.
Saludos
Etiquetas:
Ingeniería de Software,
Patrones de diseño
domingo, mayo 18, 2008
Paginación con SQL Server 2005 (v2.0)
Sin mucho preámbulo les dejo un stored procedure generado por las plantillas NetTiers que permite paginar una tabla de las siguientes características:
| Tabla |
-------------
| Id
| Clave
| Descripcion
| Activo
Create PROCEDURE [dbo].[Catalogo_Simple_Paginar]
(
@WhereClause varchar (2000) ,
@OrderBy varchar (2000) ,
@PageIndex int ,
@PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize
IF (@OrderBy is null or LEN(@OrderBy) < 1)
BEGIN
-- default order by to first column
SET @OrderBy = '[Id]'
END
-- SQL Server 2005 Paging
declare @SQL as nvarchar(4000)
SET @SQL = 'WITH PageIndex AS ('
SET @SQL = @SQL + ' SELECT'
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' TOP ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ROW_NUMBER() OVER (ORDER BY ' + @OrderBy + ') as RowIndex'
SET @SQL = @SQL + ', [Id]'
SET @SQL = @SQL + ', [Clave]'
SET @SQL = @SQL + ', [Descripcion]'
SET @SQL = @SQL + ', [Activo]'
SET @SQL = @SQL + ' FROM dbo.[Catalogo_Simple]'
IF LEN(@WhereClause) > 0
BEGIN
SET @SQL = @SQL + ' WHERE ' + @WhereClause
END
SET @SQL = @SQL + ' ) SELECT'
SET @SQL = @SQL + ' [Id],'
SET @SQL = @SQL + ' [Clave],'
SET @SQL = @SQL + ' [Descripcion],'
SET @SQL = @SQL + ' [Activo]'
SET @SQL = @SQL + ' FROM PageIndex'
SET @SQL = @SQL + ' WHERE RowIndex > ' + convert(nvarchar, @PageLowerBound)
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' AND RowIndex <= ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ORDER BY ' + @OrderBy
exec sp_executesql @SQL
-- get row count
SET @SQL = 'SELECT COUNT(*) as TotalRowCount'
SET @SQL = @SQL + ' FROM dbo.[Catalogo_Simple]'
IF LEN(@WhereClause) > 0
BEGIN
SET @SQL = @SQL + ' WHERE ' + @WhereClause
END
exec sp_executesql @SQL
END
| Tabla |
-------------
| Id
| Clave
| Descripcion
| Activo
Create PROCEDURE [dbo].[Catalogo_Simple_Paginar]
(
@WhereClause varchar (2000) ,
@OrderBy varchar (2000) ,
@PageIndex int ,
@PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize
IF (@OrderBy is null or LEN(@OrderBy) < 1)
BEGIN
-- default order by to first column
SET @OrderBy = '[Id]'
END
-- SQL Server 2005 Paging
declare @SQL as nvarchar(4000)
SET @SQL = 'WITH PageIndex AS ('
SET @SQL = @SQL + ' SELECT'
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' TOP ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ROW_NUMBER() OVER (ORDER BY ' + @OrderBy + ') as RowIndex'
SET @SQL = @SQL + ', [Id]'
SET @SQL = @SQL + ', [Clave]'
SET @SQL = @SQL + ', [Descripcion]'
SET @SQL = @SQL + ', [Activo]'
SET @SQL = @SQL + ' FROM dbo.[Catalogo_Simple]'
IF LEN(@WhereClause) > 0
BEGIN
SET @SQL = @SQL + ' WHERE ' + @WhereClause
END
SET @SQL = @SQL + ' ) SELECT'
SET @SQL = @SQL + ' [Id],'
SET @SQL = @SQL + ' [Clave],'
SET @SQL = @SQL + ' [Descripcion],'
SET @SQL = @SQL + ' [Activo]'
SET @SQL = @SQL + ' FROM PageIndex'
SET @SQL = @SQL + ' WHERE RowIndex > ' + convert(nvarchar, @PageLowerBound)
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' AND RowIndex <= ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ORDER BY ' + @OrderBy
exec sp_executesql @SQL
-- get row count
SET @SQL = 'SELECT COUNT(*) as TotalRowCount'
SET @SQL = @SQL + ' FROM dbo.[Catalogo_Simple]'
IF LEN(@WhereClause) > 0
BEGIN
SET @SQL = @SQL + ' WHERE ' + @WhereClause
END
exec sp_executesql @SQL
END
sábado, junio 30, 2007
XNA y C# Programación para Juegos de windows y xbox 360
¿Quién dijo que programar juegos es difícil?
Ciertamente lo es, hay que aprender a cargar imagenes, interactuar con el teclado y el mouse, cargar sonidos y música (este último todavía no lo he aprendido), definir y programar la secuencia lógica de un juego y si se tiene tiempo, hacer el juego en 3d (pero muuucho tiempo).
No lo niego, soy un fan de los videojuegos y siempre había querido desarrollar uno desde cero, alguna vez utilicé Java en un juego de memoria, pero a raíz de que se ha liberado por microsoft una herramienta como XNA donde existe la posibilidad para instalar los juegos en la consola de XBOX 360 (hay que pagar pero pues no todo puede ser gratis con microsoft, right?), estoy aprendiendo mucho de la manera más sencilla.
Ahora bien, no sabía nada de XNA, solo de C# y programación orientada a objetos, pero hacer juegos realmente requiere de 3 cosas. La idea, Ganas de Superar Retos y ser Autodidacta.
La Idea vino cuando me decidí a hacer un juego y le pregunté a mi hijo que si lo programábamos juntos y me dijo: ¡Vamos a hacer un juego de números y letras!... !y que se quemen!... Ok, la parte de números y letras para que el aprenda a utilizar el teclado me encantó... pero "que se quemen" me imaginé que iba a requerir a un verdadero programador de juegos, sin embargo, dado que a sus 3 años y medio ya maneja el mouse, porque no darle incentivos para que aprenda a utilizar el teclado, y luego que aprenda C# y que trabaje como programador, y que yo me pueda jubilar pronto... perdón, perdón, ya me fui por la tangente...
Las Ganas de Superar Retos es para empezar con un juego fácil en 2d, de ahí podemos tener la base y pasar a juegos 3d, ya pronto llega mi tarjeta 3d y podré hacer los tutoriales, no intenten hacerl los tutoriales 3d sin una tarjeta 3d porque... bueno mejor no los limito, solo recuerden donde se localiza su botón para reiniciar la PC.
Por último ser Autodidacta implica pasar un buen rato googleando en Internet o comprar los libros que ya existen para programación de juegos en XNA pero lo más importante es que no se desanimen, ya sea que sean buenos programadores o no, creo que los juegos que vayan a crear aunque estén limitados les permiten experimentar cosas como: Patrones de Diseño, Uso de Interfaces, Diseño Gráfico, Creación de Música y Efectos de Sonido y lo mejor de todo, Diseño 3d con herramientas gratuitas como Bryce 5.5 (el Bryce 6 cuesta unos 20 dolares)
Bien, después de todo este preámbulo un poquito más para ubicarlos en el juego, ya sea que sean programadores o no, espero que con
este tutorial y el código fuente de la versión 1.0.0.7 de Juego Letras Números que les proporcionaré al final logren por lo menos cambiarle los sonidos y las imagenes que gusten para tropicalizar el juego para sus retoños (hijos).
Ciertamente lo es, hay que aprender a cargar imagenes, interactuar con el teclado y el mouse, cargar sonidos y música (este último todavía no lo he aprendido), definir y programar la secuencia lógica de un juego y si se tiene tiempo, hacer el juego en 3d (pero muuucho tiempo).
No lo niego, soy un fan de los videojuegos y siempre había querido desarrollar uno desde cero, alguna vez utilicé Java en un juego de memoria, pero a raíz de que se ha liberado por microsoft una herramienta como XNA donde existe la posibilidad para instalar los juegos en la consola de XBOX 360 (hay que pagar pero pues no todo puede ser gratis con microsoft, right?), estoy aprendiendo mucho de la manera más sencilla.
Ahora bien, no sabía nada de XNA, solo de C# y programación orientada a objetos, pero hacer juegos realmente requiere de 3 cosas. La idea, Ganas de Superar Retos y ser Autodidacta.
La Idea vino cuando me decidí a hacer un juego y le pregunté a mi hijo que si lo programábamos juntos y me dijo: ¡Vamos a hacer un juego de números y letras!... !y que se quemen!... Ok, la parte de números y letras para que el aprenda a utilizar el teclado me encantó... pero "que se quemen" me imaginé que iba a requerir a un verdadero programador de juegos, sin embargo, dado que a sus 3 años y medio ya maneja el mouse, porque no darle incentivos para que aprenda a utilizar el teclado, y luego que aprenda C# y que trabaje como programador, y que yo me pueda jubilar pronto... perdón, perdón, ya me fui por la tangente...
Las Ganas de Superar Retos es para empezar con un juego fácil en 2d, de ahí podemos tener la base y pasar a juegos 3d, ya pronto llega mi tarjeta 3d y podré hacer los tutoriales, no intenten hacerl los tutoriales 3d sin una tarjeta 3d porque... bueno mejor no los limito, solo recuerden donde se localiza su botón para reiniciar la PC.
Por último ser Autodidacta implica pasar un buen rato googleando en Internet o comprar los libros que ya existen para programación de juegos en XNA pero lo más importante es que no se desanimen, ya sea que sean buenos programadores o no, creo que los juegos que vayan a crear aunque estén limitados les permiten experimentar cosas como: Patrones de Diseño, Uso de Interfaces, Diseño Gráfico, Creación de Música y Efectos de Sonido y lo mejor de todo, Diseño 3d con herramientas gratuitas como Bryce 5.5 (el Bryce 6 cuesta unos 20 dolares)
Bien, después de todo este preámbulo un poquito más para ubicarlos en el juego, ya sea que sean programadores o no, espero que con
este tutorial y el código fuente de la versión 1.0.0.7 de Juego Letras Números que les proporcionaré al final logren por lo menos cambiarle los sonidos y las imagenes que gusten para tropicalizar el juego para sus retoños (hijos).
El tutorial se divide en los siguientes puntos:
- Instalación de XNA, Visual Studio Express Edition y DirectX SDK
- Creación del Proyecto y blanco de instalación del juego
- Clase Juego (Game)
- Componentes de Juego (Clase GameComponent)
- Lógica del Juego de Letras y Números
- Update y Draw para lógica de juego y Despliegue de Componentes de Juego
- Sonidos
- Texturas Animadas (Una Explosión!!! lo logré!!!)
- Conclusión y Código Fuente
Instalación de XNA y Visual Studio Express Edition
Como son completamente gratuitos (raro en microsoft pero así es) les paso los links a las herramientas que necesitaremos:
El VSExpress http://msdn.microsoft.com/vstudio/express/visualcsharp/
El XNA y el DirectX SDK: http://msdn2.microsoft.com/en-us/xna/bb500976.aspx
Creación del Proyecto y blanco de instalación del juego
Una vez instaladas Todas las herramientas abran el XNA Game Studio Express
...
Conclusión y Código Fuente
Como les platiqué en mi blog post anterior http://empacarino.blogspot.com/search/label/blogger hay una página que permite subir archivos de manera gratuita: http://www.content-type.com/
Así que les dejo el link para bajar todo el proyecto que tendrán que recompilar para verlo en acción.
http://www.content-type.com/-858347663/Jorge+Baroudi+-+JuegoLetrasNumeros+v1.0.0.7.rar.htm
Saludos!
miércoles, marzo 21, 2007
Paginacion con sql server 2005
paginacion sin dolor en sql server 2005
SELECT * FROM (
SELECT *, row_number() over (order by campo1, campo2) as rownumber
WHERE campo1 like 'a%' and campo2 = 'x'
) as tb
WHERE rownumber between 1 and 9
estos ultimos valores los vas cambiando por tu inicio y tu fin de numeros de registros, el inicio mas el numero de registros que deseas mostrar (menos uno) te da el fin del between.
se volvió mas sencillo paginar en sql server 2005, pero tienes un defecto aunque es casi imperceptible dado el buen rendimiento del sqo server 2005. el problema reside en que de todas maneras, el query de la subconsulta tiene que jalar todos los datos para poder hacer la paginación.
pruebenlo y me dicen, bajense el sql server 2005 express edition que es gratis y suerte!
luego les platico de los linked servers, son una maravilla si no los utilizaron en sql server 2000, ahora es mas facil usarlos.
saludos
SELECT * FROM (
SELECT *, row_number() over (order by campo1, campo2) as rownumber
WHERE campo1 like 'a%' and campo2 = 'x'
) as tb
WHERE rownumber between 1 and 9
estos ultimos valores los vas cambiando por tu inicio y tu fin de numeros de registros, el inicio mas el numero de registros que deseas mostrar (menos uno) te da el fin del between.
se volvió mas sencillo paginar en sql server 2005, pero tienes un defecto aunque es casi imperceptible dado el buen rendimiento del sqo server 2005. el problema reside en que de todas maneras, el query de la subconsulta tiene que jalar todos los datos para poder hacer la paginación.
pruebenlo y me dicen, bajense el sql server 2005 express edition que es gratis y suerte!
luego les platico de los linked servers, son una maravilla si no los utilizaron en sql server 2000, ahora es mas facil usarlos.
saludos
Suscribirse a:
Entradas (Atom)

1
