GoMiniWin es un mini-conjunto de funciones para abrir una ventana, pintar en ella y detectar la presión de algunas teclas. Lo justo para poder implementar juegos sencillos sin necesidad de conocer el API de Windows o Linux.
Esta librería es un pseudo-port de la librería MiniWin realizada por Pauek pero para Go (la original es para c++). Créditos a él y échenle un ojito a su canal, es un grande!
Asegúrate de estar en Windows o Linux.
go get github.com/jibaru/gominiwin
Para iniciar una nueva ventana, deberás importar el paquete gominiwin y llamar a la función New
.
package main
import (
"time"
"github.com/jibaru/gominiwin"
"github.com/jibaru/gominiwin/colors"
"github.com/jibaru/gominiwin/keys"
)
func main() {
// New incializa una nueva ventana, en este caso de 800x600
w, err := gominiwin.New("Example", 800, 600)
if err != nil {
panic(err)
}
// Podemos pintar en la ventana usando una gorutina y un bucle infinito
go func() {
for {
// Pinta "Hola GoMiniwin!" en la posición (100, 100)
w.SetText(100, 100, "Hola GoMiniwin!")
// Muestra lo pintado
w.Refresh()
// Tiempo de espera para no repintar tan rápido
time.Sleep(36 * time.Millisecond)
}
}()
// Start inicializa la ventana, esta bloquea la gorutina principal
w.Start()
}
Al ejecutar New(...)
, se crea una nueva ventana. Actualmente GoMiniwin solo soporta el uso de una sola ventana, asi que evita crear múltiples ventanas. Esta ventana no se puede redimensionar con el ratón, pero puedes hacer con la función Resize
.
Algo importante a tener en cuenta es que las coordenadas de la ventana son las coordenadas de una "matriz de datos", donde el X crece a medida que vas a la derecha, y la Y crece a medida que vas hacia abajo. El punto (0,0) está en la esquina superior izquierda.
Crea una nueva ventana.
Argumentos | Descripción |
---|---|
title |
El título de la ventana |
width |
Ancho de la ventana |
height |
Alto de la ventana |
Valores de retorno | Descripción |
---|---|
Win | Puntero a la ventana que implementa la interfaz Win . Esta contiene todas las operaciones para pintar o redimensionar. |
error | En caso de error, mensaje informativo. |
Dibuja un punto en las coordenadas especificadas (usa el color actual).
Argumentos | Descripción |
---|---|
x |
Coordenada X del punto. |
y |
Coordenada Y del punto. |
Dibuja una línea desde el punto (x1, y1)
hasta el punto (x2, y2)
(usa el color actual).
Argumentos | Descripción |
---|---|
x1 |
Coordenada X del punto inicial. |
y1 |
Coordenada Y del punto inicial. |
x2 |
Coordenada X del punto final. |
y2 |
Coordenada Y del punto final. |
Dibuja un rectángulo definido por las esquinas superior izquierda (left
, top
) e inferior derecha (right
, bottom
). (usa el color actual para el borde).
Argumentos | Descripción |
---|---|
left |
Coordenada X del lado izquierdo. |
top |
Coordenada Y del lado superior. |
right |
Coordenada X del lado derecho. |
bottom |
Coordenada Y del lado inferior. |
Dibuja un rectángulo relleno (usa el color actual).
Argumentos | Descripción |
---|---|
left |
Coordenada X del lado izquierdo. |
top |
Coordenada Y del lado superior. |
right |
Coordenada X del lado derecho. |
bottom |
Coordenada Y del lado inferior. |
Dibuja un círculo (usa el color actual para el borde).
Argumentos | Descripción |
---|---|
centerX |
Coordenada X del centro del círculo. |
centerY |
Coordenada Y del centro del círculo. |
radius |
Radio del círculo. |
Dibuja un círculo relleno (usa el color actual).
Argumentos | Descripción |
---|---|
centerX |
Coordenada X del centro del círculo. |
centerY |
Coordenada Y del centro del círculo. |
radius |
Radio del círculo. |
Establece el color actual para las operaciones de dibujo.
Argumentos | Descripción |
---|---|
c |
Color en formato colors.Color . |
Establece el color actual utilizando componentes RGB.
Argumentos | Descripción |
---|---|
r |
Componente rojo (0-255). |
g |
Componente verde (0-255). |
b |
Componente azul (0-255). |
Dibuja un texto en las coordenadas especificadas.
Argumentos | Descripción |
---|---|
x |
Coordenada X del texto. |
y |
Coordenada Y del texto. |
content |
Texto a dibujar. |
Devuelve el código de la última tecla presionada.
Valores de retorno | Descripción |
---|---|
int |
Código de la tecla presionada (si existe). |
Obtiene el estado actual del mouse.
Valores de retorno | Descripción |
---|---|
bool |
Indica si el cursor esta dentro de la ventana. |
float32 |
Coordenada X del mouse. |
float32 |
Coordenada Y del mouse. |
Devuelve si el mouse está dentro de la ventana.
Valores de retorno | Descripción |
---|---|
bool |
true si el mouse está dentro, false en caso contrario. |
Devuelve la coordenada X actual del mouse.
Valores de retorno | Descripción |
---|---|
float32 |
Coordenada X del mouse. |
Devuelve la coordenada Y actual del mouse.
Valores de retorno | Descripción |
---|---|
float32 |
Coordenada Y del mouse. |
Devuelve el estado de los botones del mouse.
Valores de retorno | Descripción |
---|---|
bool |
Estado del botón izquierdo (true o false ). |
bool |
Estado del botón derecho (true o false ). |
Devuelve si el botón izquierdo del mouse fue presionado.
Valores de retorno | Descripción |
---|---|
bool |
true si el botón fue presionado. |
Devuelve si el botón derecho del mouse fue presionado.
Valores de retorno | Descripción |
---|---|
bool |
true si el botón fue presionado. |
Inicia el bucle principal de la ventana. Este bloquea la gorutina principal.
Limpia el contenido actual de la ventana.
Refresca la ventana, mostrando los cambios realizados en ésta.
Devuelve el ancho actual de la ventana.
Valores de retorno | Descripción |
---|---|
int |
Ancho en píxeles. |
Devuelve la altura actual de la ventana.
Valores de retorno | Descripción |
---|---|
int |
Altura en píxeles. |
Redimensiona la ventana a un nuevo ancho y alto.
Argumentos | Descripción |
---|---|
newWidth |
Nuevo ancho de la ventana en píxeles. |
newHeight |
Nueva altura de la ventana en píxeles. |
Cierra la ventana y libera los recursos utilizados.