martes, 30 de junio de 2015

ZinLock (adaptación al c#)

ZinLock es un juego desarrollado para miniclip.com el cual viene con extensión swf.
Mi idea era hacer una copia para practicar así que todos los derechos son de su autor y de miniclip.com yo solo lo he recreado.

Ademas tiene algunos extra para que sea mas divertido :D 
1.puedes crear mapas y compartirlos con quien quieras dándole al mapa solución :D
2.hay teclas que sirven para ayudar a que la partida sea mejor la T que sirve para parar la partida (para el tiempo y esconde las fichas) y luego otras que tenéis que ir descubriendo ;)

mi adaptación se puede descargar aqui y  el codigo fuente .


este trabajo esta bajo la licencia GNU y es solo para estudiar y jugar, queda prohibida su venta sin el consentiminento del autor intelectual del juego ZinLock (diria que su nickname es Lightforce)

lunes, 4 de mayo de 2015

Series.ly Offline (UnOfficial)

Es una aplicacion que tiene el estilo de series.ly. con imagenes de allí.
 la aplicacion no cuenta con el respaldo de series.ly porque no tiene nada que ver con ellos es un plagio para uso casero y no quiero que se relacione con ellos (para evitar problemas legales por el uso de nombre,logos,imagenes,idea...).

Modo de uso
Se coloca el programa preferiblemente en la carpeta de series i/o peliculas
se ejecuta y carga las carpetas que tenga en el directorio actual de una forma especial y es que cada carpeta la trata como una serie(si contiene archivos multimedia) y mira su interior en busca de todos sus archivos de video mirando sus subcarpetas así podemos tener organizadas nuestras series por subcarpetas.
Despues por su cuenta escanea todas las unidades en busca de carpetas multimedia y las añade con la particularidad que en estas carpetas no mira sus subcarpetas ya que estas tambien se añaden de forma separada.
La ultima versión  mira las unidades que se insertan y coge las carpetas multimedia y cuando se extraen las quita :)

 
en rojo tenemos la carpeta donde se encuentra porque en este caso hay dentro archivos multimedia a parte de sus carpetas.Es por eso que al no contener subcarpetas tiene el color ese clarito

en azul tenemos las carpetas de las series encontradas en la carpeta donde esta el exe. como mezcla sus subdirectorios tienen un color mas oscuro.

en verde tenemos las carpetas encontras por el disco duro y como veis tienen el color clarito para que se vea que no contien sus subdirectorios.

Enlace descarga (Incluye codigo fuente)

Descripcion Interficies dll Utilitats

IClonable lo que diferencia de Icloneable es que no devuelve un object sino un objecto dynamico así nos olvidamos de hacer castings.

IClaveUnicaPorObjeto Devuelve un IComparable para poder usar cualquier clase que la implemente la idea es que la clave que devuelve el metodo Clave() sea unica.

Descripcion Clases dll Utilitats

Enumerador (abstract) (tengo que decir que se ha adaptado el codigo de una pagina web para hacerlo generico que ese ha sido mi unico trabajo y bueno hacer que se use el campo unico para comparar los elementos.) Es una clase Generica que sirve para crear enumeraciones heredando de ella. La clase hija solo tiene que incluir los elementos que tinen que aparecer en la enumeracion como objetos staticos readonly.rAdemás tiene que incluir un constructor sin parametros publico(se usa en metodos para reflaxion y poder obetener la lista de objectos static readonly de la clase).Lo que tiene de particular es que para comparar se usa el valor Key que debe ser IComparable (así no tienen que ser estrictamente string,valor puede ser int,double,u una clase IComparable. La idea es que una enumeracion pueda ser mas flexible y poder admitir clases hechas por nosotros. De esta clase Enumerador se derivan unas cuantas para poder facilitar su uso como Enumerador sirve para usar nuestras clases. Enumerador sirve como una Enumeracion enum pero se comparar por la string en vez del int... 

Imagen con ruta Es una clase que carga solo las imagenes una vez y si se necesita otra vez la obtiene desde un diccionario(eviatando acceder a la memoria del disco que es mas lenta) tambien se puede quitar de la memoria una imagen en particular o todas (para aliviar la Ram) y cuando se necesite se vuelve a cargar. En caso de que la ruta no tenga una imagen compatible con Bitmap o no exista se pondra una imagen (new Bitmap(1,1) para evitar problemas (estaba por poner null pero creo que puede dar menos problemas poner una imagen que null...) 

Lista es una List y lo que tiene es que es multithread asi se evitan problemas al usarla con threads.Lo que tiene de particular es que si la clase implementa IClaveUnicaPorObjeto la busqueda de los objetos para saber si existen o si se contien tiene la misma potencia que un diccionario Hash.Sino usa el metodo de List Contains(T).Como curiosidad tiene metodos usado en Stack como Peek,Pop y Push para poder usarlos si tenemos esa necesidad... 

ListaOrdenada es una SortedList que es multithread (como Lista).Tiene de particular que si Tkey implementa Icomparable y Tvalue implementa IClaveUnicaPorObjecto se puede usar el mismo objecto Tvalue para obtener la clave y así facilita el metodo de añadir...por otro lado si no se implementa el metodo para añadir devuelve false para decir que no es compatible con el sistema...

TwoKeysList Sirve para poder asignar a un objeto dos llaves unicas. Yo lo he usado para tener una lista de NombresDeArchivos,HashDelArchivo y el archivo podia obetener así el objeto con el hash o con su ruta y podia obtener la otra llave con la otra.Tambien se puede obtener una Array KeyValuePair, KeVayluePair y KeyValuePair o con sus valores por separado Key1[],Key2[],Value[] El GetEnumerator devuelve KeyValuePair,Value> 

MiRandom Es una clase estatica simple para olvidarse de hacer new Random para obtener un numero aleatorio.(lo veo mas practico que crear un objeto...) 

Pila Es una Stack que es multithread. 

PointZ sirve para representar puntos en coordenadas x,y,z y ademas implementa la interficie IComparable para poder ser usado en diccionarios. 

text Viene a sustituir la clase string por rendimiento ya que guarda el texto en un StringBuilder haciendo que sea muy rapido.Ademas cuenta con conversiones implicitas para concatenar facilmente y no es necesario hacer new de la clase ya que convierte implicitamente string a text y al reves. ademas implementa metodos de StringBuilder y String ademas de los propios que he ido desarroyando a medida que he ido necesitando. 

 MiPool Es una clase que se usa para hacer en subprocesos unas faenas lo que tiene de especial es que tiene varias formas de ser usado y utiliza delegados para hacer la faena. Tiene dos formas de usarse una es usando un objeto MiPool el qual se le añade una faena o una pila de faena a hacer usando un metodo entonces hace cada faena en un thread diferente y usa el metodo pasado como delegado la faena son los objetos para tratar.Tiene un maximo de threads que se puede cambiar para usar mas o menos la ponencia de la cpu. Yo lo use para escanear los directorios de las unidades pasadas como faena :) El segundo metodo es de forma estatica y usa Tiket para hacer referencia a una sola faena y con ese tiket se puede gestionar la tarea pudiendo abortar en cualquier momento su ejecucion.Se puede incluso esperar a que esa tarea se haya realizado o solo esperar un tiempo determinado y luego continuar (así se puede abortar la espera de forma automatica) tambien se puede abortar su espera desde otro hilo. Tambien tiene un maximo de faenas haciendose a la vez. Tiene una variate generica para que el metodo que se pase tenga como objeto pasado por parametro el tipo que deseamos (para evitar castings y poder aumentar su comprension). Lo mejor es que se pueden usar metodos anonimos como delegado teniendo la ventaja que se pueden usar las variables del metodo, las del objeto y de la clase.

DiscoLogico Es una clase que permite obtener los archivos y carpetas de una unidad ademas si quieres puedes suscribirte a eventos estaticos para saber si la unidad se pierde (se desconecta) o si encuentra alguna mientras escanea.Es util para tener una lista de unidades al dia sin tener que preocuparse por tener o no todas o si hay alguna que no esta actualmente...

Descripcion Controls Windows Forms dll Utilitats

Animacion Controles Ciclica Es un control que sirve para visualizar en movimiento unos controles añadidos. cuando el control acaba el recorrido llama a un delegado (un metodo que el programador ha puesto para este caso) y el control esta bajo las manos del programador pudiendo decidir que hace con él yo lo que hice fue pasar unas imagenes y cuando acaba una imagen ponia otra.Despues el control se pone el ultimo de la cola y cuando le toque salir saldrá.

Color ListBox Es un control parecido al listbox normal lo unico es que cada elemento que se añade se le puede poner un color(si no se le pone sera por defecto SystemColors.Control), la letra será blanca si el color es oscuro y negra si es claro. Cuando se selecciona un elemento se le invierte el color

ControlUsuario Solo sirve para ser heredado y tiene una propiedad para guardar un objeto pero el tipo de este es dynamic para no tener que hacer castings

Etiqueta Hereda de Label y lo que tiene de particular es que el texto se redimensiona al tamaño de la etiqueta. El punto débil es que la letra se puede hacer muy pequeña y si se tiene una lista y hay distintas longitudes queda un poco mal dado que se ven de diferente tamaño cada una...

Imagen Seleccionable Es un control que sirve para presentar al usuario una imagen con un titulo y al hacer clic se selecciona o se deselecciona. Lo que tiene de particular es que carga la imagen cuando queremos (así podemos hacer muchos sin preocuparnos). Yo lo use para saber si el usuario quería esa imagen o no.

Visor Imagenes Seleccionables es un visor que permite visualizar controles imagen seleccionable. lo que tiene de particular es que carga los controles conforme se tienen que usar así no tarda tanto en cargar. Se puede configurar el numero de filas y de columnas que se visualizan a la vez. Los Controles Imagen se redimensionan de forma cuadrada y se ajusta a las Filas y Columnas ( int medida = Width / Columnes; if (Height / Files < medida) medida = Height / Files;)

LabelTextBox Es una etiqueta que si se pone en modo editar se vuelve un textbox y al revés. se puede usar en formularios para poder presentar el texto sin que el usuario pueda escribir y cuando veamos pueda (si ponemos un boton para desbloquear y bloquear el editado...)

Presentacion Dll Utilidades

Hola a tod@s voy a comenzar este blog con una dll que estoy desarroyando desde hace unos meses.

 Se trata de Clases,Interficies , clases de Extension y controles windows forms que he ido necesitando y he ido viendo que se podian usar de forma independiente al programa que iba destinado es por eso que lo he puesto todo en una dll llamada Gabriel.Cat.Utilitats el namespace de momento es Gabriel.Cat (creo que es practico porque aun no hay mucho material para dividirlo...)

 Ahora voy ha hacer una descripción de cada clase,control windows forms,Interficie y metodo de extension como se usan y que utilidad tienen :)

https://github.com/tetradog/Git.Gabriel.Cat.Utilitat (repositorio oficial :D)