Basic Paint

Abel Naya Forcano

/*
Programa que permite 'dibujar' en la pantalla. Utiliza las flechas para moverte y + - para pintar/borrar
Debido a que el programa tiene que borrar la pantalla y redibujarla tarda bastante, pero al menos de momento no conozco otra manera.
*/

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h> //Para getch

//Definicion del tamaño del lienzo
#define ancho 79
#define largo 24

//definicion de los caracteres utilizados
#define blanco 219
#define negro 32
#define puntos 177

//definicion de las teclas utilizadas
#define arriba 72
#define abajo 80
#define derecha 77
#define izquierda 75
#define pintar 43
#define borrar 45

using namespace std;

char lienzo[largo][ancho]; //lienzo
int x=0,y=0; //posicion pincel

void dibujar() //redibuja el lienzo
{
system("cls"); //borra pantalla

for(int j=0; j<largo ; j++)
{
for(int i=0; i<ancho ; i++)
{
if(x==i && y==j) //dibuja el pincel sin sobreescribir la variable lienzo
{
cout<<(char)puntos;
}
else
{
cout<<lienzo[j][i];
}
}
cout<<endl;//si el lienzo coincide con el tamaño de la pantalla es posible que tengas que quitar esto
}


}

int main()
{
for(int i=0; i<ancho; i++) for(int j=0; j<largo; j++) lienzo[j][i]= negro; //prepara el lienzo, puedes cambiarlo a blanco si prefieres

char tecla; //almacenara la tecla pulsada

dibujar();

while(1)
{


switch(getch()) //analiza la tecla
{
case arriba:
y>0 ? y-- : y=largo-1; //gracias al ? podemos comprimir el codigo en una línea: mueve el pincel hacia arriba, y si esta en la cima lo pone al final
break;
case abajo:
y<largo-1 ? y++ :y=0;
break;
case derecha:
x<ancho-1 ? x++ :x=0;
break;
case izquierda:
x>0 ? x-- :x=ancho-1;
break;
case pintar:
lienzo[y][x]=blanco;
break;
case borrar:
lienzo[y][x]=negro;
break;
default: //Las flechas activan dos getch() por lo que de esta forma nos evitamos redibujar el lienzo dos veces
continue;
}
dibujar(); //actualiza la pantalla con los cambios realizados
}

}
/* NOTA:
Existe la función gotoxy(a,b) pero no es estandar y no existe en muchos compiladores (en concreto en el que yo utilizo)
*/


Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Una respuesta a Basic Paint

  1. Muy bueno!!. Funciona perfectamente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s