Git Product home page Git Product logo

miniwin's People

Contributors

pauek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

miniwin's Issues

Sugerencia para MiniWin

[SUGERENCIA] Objetos tipo Sprite?

Esto ya es un poco mas específico para vídeo juegos, haber si logro explicarme con claridad..

Imagina no tener que pintar todo en pantalla a trazos/circulos/cuadrados/rectangulos.. vale.. imagina que todas tus funciones de pintar tienen un overload que permite pintar en "otro buffer" que buffer? el que crea el objeto Sprite.

Sprite sería una clase la cual tendría varios métodos getters y setters, como por ejemplo algo así:

int pepe = new Sprite();

Con eso guardamos en la variable 'pepe' un identificador que apunta a la instancia que se ha creado de la clase Sprite, vale, pues ahora para setear la posición de ese sprite simplemente haríamos:
pepe.x = lo que sea..
pepe.y = lo que sea..

lo que sucede es que hace falta que la clase Sprite cree un lienzo propio donde poder pintar, así en vez de tener que pintar todo a mano cada vez se pinta una vez en el lienzo del Sprite y luego simplemente se le da unas coordenadas al propio objeto.

Las propiedades que debería tener mínimas para que quede interesante el tema son estas:
.X -> coordenada en el eje X
.Y -> coordeanda en el eje Y
.Z -> prioridad de pintado, esto es para colocar cada Sprite a una profundidad "manejable", simplemente indica el orden en que se va a pintar en la ventana este sprite, si 2 sprites tienen el mismo valor de Z entonces se pintará primero el que se creó primero sin mas.
.ANGULO -> esta propiedad permitiría rotar dado un angulo como se va a pintar el sprite, es muy práctica ;)

Bueno.. esto ya no es tan simple como las otras sugerencias.. implica mucho trabajo sobre todo para gestionar el sistema de los lienzos de los Sprites..

Si creo un sprite así: pepe = new Sprite();

Ahora debería poder pintar en el con todas las funciones de pintado.. esto ya es mas complejo XD.. no sabría como hacerlo así a bajo nivel..

Entonces en el bucle principal del programa:
pepe.queTePintes();

Y ale.. sprite pintado de un plumazo.

Un saludo.

Sugerencia para MiniWin

[SUGERENCIA] función: float mideAngulo( x1, y0, x1, y1 );

Esta función retorna el angulo entre dos puntos, es básicamente el teorema de pitagoras, es bastante sencilla, pero extremadamente util en casos como este:

Imagina que necesitas rotar un dibujo 'n' grados, entonces.. imagina que quieres que por ejemplo una carita dibujada en la pantalla sepa que angulo forma el mouse u otro objeto con el centro de la cara.. se puede usar ese angulo para orientar cualquier cosa hacia el puntero del mouse o lo que se quiera.

Un saludo.

No renderiza en ciertas ocasiones

Hola, en muchas ocasiones cuando compilas, y llenas la pantalla con muchos rectángulos, a veces lo hace, otras veces no, a veces lo hace incompleto, es un problema de compilación que no se como solucionar

Problema

Buenos dias.
He encontrado un pequeño error que hace funcionar mal las coordenadas del raton bajo linux.
En el fichero miniwin.cpp en la parte de linux:

float raton_y() {
return _mouse_state.x;
}

Deberia devolver .y

Sugerencia para MiniWin

[SUGERENCIA] función fundirPantalla( porcentaje );

Buenas Pauek, esta es una función muy chula para hacer fundidos de pantalla, imagina un bucle donde se llama a esta función mediante una variable como parámetro, esta variable irá iterando con valores de entre 255 a 0, y lo que realiza la función es simplemente aplicar un "alpha" a los pixel de la ventana, de este modo por ejemplo podría crear algo como esto:

1 - llamo a fundirPantalla( 0 ); esto deja la ventana en negro haya o no dibujado algo..
2 - limpio la pantalla con vlimpia creo que es..
3 - dibujo todo lo que necesite..
4 - ahora creo un bucle que llama a fundirPantalla( int my_var ) con una variable tipo int desde 0 hasta 255.. y lo que sucede es que poco a poco la ventana va recuperando el "color".
5 - una vez he llamado a la función con el valor 255 ya se ha realizado el fundido a 100% visible y ale.. a continuar haciendo cosas del juego..

Un saludo.

Sugerencia para MiniWin

[SUGERENCIA] función int mideDistancia( x0, y0, x1, y1 );

Esta función mide la distancia entre 2 pixels, es tremendamente útil para por ejemplo, teniendo claros los centros de dos circulos, poder conocer cuando colisionan entre si, sabiendo el radio de los circulos simplemente hay que medir la distancia entre los centros con esta función, si el resultado es mayor que la suma de los centros hay colisión.

Un saludo majo, espero no aburrirte con todo esto ;)

Sugerencia para MiniWin

[SUGERENCIA] Función que guarda en una variable el color de un pixel de la ventana.

Esto es especialmente util cuando se quiere comprobar si se toca un objeto de un determinado color por ejemplo, un posible prototipo de la función podría ser este:

get_pixel(float x, float y, int R_, int G_, int B_ );

Bueno.. un poco chapuza XD.. en el fondo la idea es recoger el nivel de 0 a 255 de cada componente de color de un pixel de la ventana, esto sirve para detectar colisiones muy básicas a nivel de "pixel perfect", otra aplicación es la de realizar mezclas de colores para aplicar filtros a la ventana, me explico.. recojo el color de un pixel por ejemplo en x/y 50, 70, vale.. ahora recojo los colores de los pixeles coolindates a este, por ejemplo el color del pixel superior el inferior el izquierdo y el derecho, son 4 pixeles + el propio pixel al que voy a aplicar la mezcla.. pues la cuenta de la vieja XD.. sumo los componentes de los 5 pixels y lo divido entre 5, y se lo aplico al pixel central, y así sucesivamente.

Tiene un montón de aplicaciones, otra sería por ejemplo.. dibujo un puntero para el mouse.. de un color muy concreto, vale.. pues desde otro sitio puedo saber si el mouse colisiona con la zona que yo quiera comprobar ya que conoceré el color del puntero del mouse "o de lo que yo quiera" y podré escanear una zona en busca de ese color, si la encuentro entonces hay colisión ;)

Sugerencia para MiniWin

[SUGERENCIA] cambiaColor( colorOriginal, colorNuevo );

Esta función recorre la ventana en busca de pixels de un determinado color, si encuentra una coincidencia pinta un punto con el color "colorNuevo".

Como ves es una mezcla de otra sugerencia que te he comentado get_pixel() + punto()

Digamos que sería una forma de facilitar a la gente el montarse una función especifica para hacer todo esto de un solo tiro.

Un saludo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.