Taller de emuladores

Acá encontrarás ejemplos en distintos lenguajes, podés elegir el que prefieras y probarlo antes del sábado para validar que tu entorno esté bien configurado.
Prueba de funcionamiento: oprimir la tecla "1" para dibujar un pixel blanco, soltarla para dibujar un pixel negro.

C/C++

Ejemplo básico con SDL2

  • Bajar las dependencias con sudo apt install build-essential libsdl2-dev
  • Bajar el archivo cpp, compilarlo con g++ taller.cpp -Wall -O2 -o taller -lSDL2
  • Correr ./taller

Rust

Ejemplo básico con rust-sdl2. Cargo.toml. Ubicar los archivos de la siguiente forma:

taller/Cargo.toml
taller/src/main.rs
Luego correr cargo build y cargo run

Python

Ejemplo básico con pygame
Bajar dependencias con pip3 install pygame, luego correr python taller.py

JavaScript

Ejemplo básico con canvas

Java

Ejemplo básico con AWT Usar un IDE (por ejemplo IntelliJ) o los siguientes comandos:

sudo apt install openjdk-11-jdk-headless
javac Taller.java
java Taller


Otros lenguajes

Si querés usar otro lenguaje acá hay algunos recursos que podés ir investigando para realizarlo. Lo mínimo sería: (Cualquier duda escribime por Telegram)

  • Crear una ventana
  • Manejar eventos (detectar cuando se presionan y sueltan las teclas, mouse no hace falta)
  • Dibujar píxeles en pantalla (tener una función setPixel y si se puede getPixel también)

Alternativa C/C++: Si preferís compilarlo old-school para x86 de 16 bits con TurboC, podés usar el modo 13h y escribir directo en la memoria de video (0xA0000) y leer del teclado usando el BIOS keyboard buffer

Alternativa C/C++: Immediate2d: una biblioteca de gráficos tiny, solo Windows

Alternativa C/C++: Minifb: una biblioteca tiny pero multiplatforma

Alternativa Rust: Rust_Minifb, una biblioteca más liviana que SDL

VB6

Casi que está todo resuelto acá, se pueden usar los eventos KeyDown/KeyUp. Para leer y dibujar píxels se puede agregar un Picturebox en un form.

MicroPython

Para leer desde las teclas se puede usar distintos pines de GPIO. Como pantalla se puede usar un mini OLED SSD1306, que está soportado nativamente vía I2C o SPI.

C# u otro de .NET

Se puede agregar un componente WriteableBitmap a un formulario, y luego con wBitmap.WritePixels(...) se pueden manipular sus píxeles. Los eventos de teclado se pueden capturar directo en el form.

PHP

También se puede usar un binding de SDL2