Hola a todos.
Sorry for the english readers. Is a newbie question about an object model for a game. Una pequeña duda de diseño para que ver si me podéis ayudar a ver si voy comenzando a pensar en objetos, o debo tirarme al río de 30cm de profundidad que tenemos en Murcia :P Como antecedente, pensar en un juego multijugador de naves. Algo así como Ogame, o Astrowars por ejemplo. Supuestamente, podríamos tener los siguientes objetos. Juego, Jugador, Partida, mapa, galaxia, planeta, base, edificios, naves. A groso modo tomo las siguientes teorías: - *Juego*, clase que contiene todo el juego en sí. Mantendría los parámeotrs de éste, y la colección de *Jugadores* inscritos. Entendemos Juego como el manejador de todo el tinglado. Algo así como cada uno de los servidores. - *Jugador*, sería la clase de cada usuario registrado en ese Juego, o servidor que mantendría su perfil, además de la colección de las *partidas* en las que está jugando. - *Partidas*, sería otra clase que mantendría los parámetros de ésta, y su *mapa* correspondiente. - *Mapa*, mantendría las *galaxias* junto la posición de las naves (y aquien pertenece), que a su vez tendría los *planetas*, y éstos si tiene o no una *Base* (y a quien pertenece), los edificios etc.. Entonces, lo que me hago un lío es con lo siguiente. Con los objetos de esta manera enlazados... - A "quien" le pregunto los jugadores que están en una partida? Y donde guardo esta info? - Lo mismo con las naves y planetas. Si estos están en una colección en *Mapa*, a "quien" pregunto a quien pertenecen? Con un string guardado en una variable? Esa solución no la veo muy, "Smalltalk". A pesar de todo el tiempo pasado, siento hacer estas dudas tan novatas, pero sólo consigo tiempo para ponerme con Smalltalk de mucho en mucho tiempo, y durante poco tiempo. Se abre la veda. Venga, que estamos muy callados últimamente :P -- Giuseppe Luigi Punzi <[hidden email]> <http://www.lordzealon.com> |
El 5/26/08 12:55 PM, "Giuseppe Luigi Punzi" <[hidden email]> escribió: > Hola a todos. > > Sorry for the english readers. Is a newbie question about an object model for > a game. > > Una pequeña duda de diseño para que ver si me podéis ayudar a ver si voy > comenzando a pensar en objetos, o debo tirarme al río de 30cm de profundidad > que tenemos en Murcia :P > > Como antecedente, pensar en un juego multijugador de naves. Algo así como > Ogame, o Astrowars por ejemplo. > > Supuestamente, podríamos tener los siguientes objetos. > > Juego, Jugador, Partida, mapa, galaxia, planeta, base, edificios, naves. > > A groso modo tomo las siguientes teorías: > > - *Juego*, clase que contiene todo el juego en sí. Mantendría los parámeotrs > de éste, y la colección de *Jugadores* inscritos. Entendemos Juego como el > manejador de todo el tinglado. Algo así como cada uno de los servidores. > > - *Jugador*, sería la clase de cada usuario registrado en ese Juego, o > servidor que mantendría su perfil, además de la colección de las *partidas* en > las que está jugando. > > - *Partidas*, sería otra clase que mantendría los parámetros de ésta, y su > *mapa* correspondiente. > > - *Mapa*, mantendría las *galaxias* junto la posición de las naves (y aquien > pertenece), que a su vez tendría los *planetas*, y éstos si tiene o no una > *Base* (y a quien pertenece), los edificios etc.. > > Entonces, lo que me hago un lío es con lo siguiente. Con los objetos de esta > manera enlazados... > > - A "quien" le pregunto los jugadores que están en una partida? Y donde guardo > esta info? > - Lo mismo con las naves y planetas. Si estos están en una colección en > *Mapa*, a "quien" pregunto a quien pertenecen? Con un string guardado en una > variable? Esa solución no la veo muy, "Smalltalk". > > A pesar de todo el tiempo pasado, siento hacer estas dudas tan novatas, pero > sólo consigo tiempo para ponerme con Smalltalk de mucho en mucho tiempo, y > durante poco tiempo. > > Se abre la veda. Venga, que estamos muy callados últimamente :P Lo primero seria tener en claro la teoría de objetos. Un buen libro es "The CRC Card Book" de Bellin - Simone. Es el mismo que estoy recomendado a algunos miembro del Board que difieren sobre como debe ser un "team" de software y no entienden mis analogias de la F1. O sino podes aplicar las "cartitas al debugger", brillantemente explicadas en algun mail viejisimo de nuestros colegas de smalltalking cuando contaron como se hizo Gim. Esto estuvo expuesto formalmente hace un tiempo en las páginas del ESUG , explicado para alguno de los Smalltalks "serios", ojala alguno haya que lea esto y tenga el material, lamentablemente yo no lo grabe. En esencia es usar el DNU como modo de ir armando algo sin tener la menor idea de como debe ser. Si vos escribis en el Workspace... | unJugador | unJugador := Jugador new. Si no tenes nada se genera el primer dibujo, Ahi te vas a dar cuenta que necesitas una clase, que procederas a declarar y completar. mas adelante tal vez descubras que te haria falta algo como ... | unaPartida | unaPartida quienJuega Asi que si no tenes el método quienJuega o #quienJuega lo crearas en la clase , le generaras automáticante los "setters" y "getters" o sea de que forma accedes a eso que necesitas. Tambien descubriras que lo mas probable es que sea una OrderedCollection de instancias de Jugador. Y así.. Al final iras aprendiendo quien le pregunta a quien , que se necesita, etc. Si haces el CRC, ya tendras gran parte de tu camino. Habia una forma de generar el CRC morph alguna vez. Eso te da un esqueleto de "programa" o "aplicación" que tendras que ir completando. Espero que te den muchos mas consejos y que empieces a hacer algo. No importa que sea poco Smalltalk, con el tiempo se va mejorando. Lee Ken Beck, busca algo hecho lo mas parecido a lo que queres para ver como lo hicieron. Ahi Diego no estaba haciendo algo para juego de cartas ? No te recomiendo mis cosas , porque no son buenas. Edgar PS Yo no te deberia contar lo de los DNU , ahora voy a tener que mirar sobre mi hombro a ver si vienen los de la CIA o la KGB :=) Picture 2.png (10K) Download Attachment |
Hola,
Estoy haciendo una pequeña aplicación con Seaside que graba unos archivos de texto en un directorio. En mi máquina funciona OK, pero cuando la pruebo en seasidehosting, me da un error. Se puede grabar en un directorio local en seasidehosting ? Hay algún problema de permisos ? Alguien lo ha intentado ? Desde ya, muchas gracias, Saludos, Francisco |
Hola Francisco:
Yo tengo el Promoter ahi, en demo y grabo unos archivos XML para resguardo de datos y me funciona bien. No hice nada en especial, simplemente funcionó. Saludos. El día 28 de mayo de 2008 11:40, Francisco A. Lizarralde <[hidden email]> escribió: > Hola, > > Estoy haciendo una pequeña aplicación con Seaside que graba unos > archivos de texto en un directorio. En mi máquina funciona OK, pero > cuando la pruebo en seasidehosting, me da un error. > > Se puede grabar en un directorio local en seasidehosting ? > > Hay algún problema de permisos ? > > Alguien lo ha intentado ? > > Desde ya, muchas gracias, > > Saludos, > > Francisco > > -- Germán S. Arduino http://www.arsol.biz http://www.arsol.net |
Hola Germán,
Salta una excepción porque no existe el directorio o el archivo. Pero la idea es que lo cree si no existe, o le grabe encima. saveMatrix | matrixDir stream | matrixDir := (FileDirectory default directoryNamed: #tests) assureExistence. stream := FileStream forceNewFileNamed: (matrixDir fullNameFor: self matrixFileName). self socioMatrix basicPrintOn: stream. stream flush. stream close Puede ser que le esté errando en el path, no sé. Te agradecería que si ves algo raro en el código me lo comentes. Un abrazo, Francisco El mié, 28-05-2008 a las 13:37 -0300, Germán Arduino escribió: > Hola Francisco: > > Yo tengo el Promoter ahi, en demo y grabo unos archivos XML para > resguardo de datos y me funciona bien. > > No hice nada en especial, simplemente funcionó. > > Saludos. > |
Quizás sea problema del directorio, no del archivo.
Es decir, puede crear y grabar archivos, pero los directorios debes tenerlos previamente. No lo sé con segurida, simplemente es una idea. El 28/05/2008, a las 19:42, Francisco A. Lizarralde escribió: > Hola Germán, > > Salta una excepción porque no existe el directorio o el archivo. > Pero la > idea es que lo cree si no existe, o le grabe encima. > > saveMatrix > | matrixDir stream | > > matrixDir := (FileDirectory default directoryNamed: #tests) > assureExistence. > > stream := FileStream forceNewFileNamed: (matrixDir fullNameFor: self > matrixFileName). > self socioMatrix basicPrintOn: stream. > stream flush. > stream close > > Puede ser que le esté errando en el path, no sé. > > Te agradecería que si ves algo raro en el código me lo comentes. > > Un abrazo, > > Francisco > > El mié, 28-05-2008 a las 13:37 -0300, Germán Arduino escribió: > > Hola Francisco: > > > > Yo tengo el Promoter ahi, en demo y grabo unos archivos XML para > > resguardo de datos y me funciona bien. > > > > No hice nada en especial, simplemente funcionó. > > > > Saludos. > > > > > |
Hola Giuseppe,
Si, pensé en eso. Y creé el directorio con la interfaz web de seasidehosting, pero igual me seguía dando esa excepción. No sé si el assureExistence, provoca algún problema o estoy armando mal el path. Seguiré probando ... Muchas gracias, Saludos, Francisco El mié, 28-05-2008 a las 20:08 +0200, Giuseppe Luigi Punzi Ruiz escribió: > > Quizás sea problema del directorio, no del archivo. > > > > Es decir, puede crear y grabar archivos, pero los directorios debes > tenerlos previamente. > > No lo sé con segurida, simplemente es una idea. |
Free forum by Nabble | Edit this page |