2017-06-12
Folytattam a nosztalgiázást. Anno (pre-windows) ilyesmi rutinokat használtunk. Remélem lesz olyan ember, akinek hasznos lesz az alábbi kód.
Alább látható az ascii() függvény által kilistázott betü készlet. Tiszta DOS.
Magyar ékezetes betüket közvetlenül nem fogunk tudni kiírni. Ehhez engedélyezzük a setlocal( LC_ALL, "hun") hívást. Ekkor megváltozik a betü készlet, sajnos elvesznek a keretekhez használható karakterek.
Itt látható a karakter készletre rajzol koceka.
/*******************************************************************************
* Author - Kiraly Tibor
* http://www.tkiraaly.hu
* Date - 2017.06.12.
* Compiler - Code Blocks & GCC
*
* Kvazigrafikus elemek
*
********************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <ctype.h>
#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;
void gotoxy(int, int); // kurzor pozicionalas
void printat( int, int, char); // egy betu kiirasa pozicioba
void lap( int, int, int, int); // lap torlese szokozokkel
void keret( int, int, int, int); // keret rajzolas +-|
void keret_s( int, int, int, int); // keret rajzolas szimpla vonallal
void keret_d( int, int, int, int); // keret rajzolas dupla vonallal
void ascii_tabla( void); // betuk kilistazasa
int main()
{
// setlocale( LC_ALL, "hun");
system( "cls");
ascii_tabla();
getch();
keret( 5, 5, 15, 40);
getch();
keret_s( 5, 5, 15, 40);
getch();
keret_d( 5, 5, 15, 40);
getch();
lap( 5, 5, 15, 40);
getch();
keret_s( 5, 5, 15, 40);
getch();
system( "cls");
return 0;
}
void gotoxy( int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE), coord);
}
void printat( int x, int y, char c)
{
gotoxy( x, y);
printf( "%c", c);
}
void keret( int x, int y, int magassag, int szelesseg)
{
int i;
for( i= x+ 1; i <= x+ szelesseg- 1; i++)
{
printat( i, y, '-');
printat( i, y+ magassag, '-');
}
for( i= y+ 1; i <= y+ magassag- 1; i++)
{
printat( x, i, '!');
printat( x+ szelesseg, i, '!');
}
printat( x, y, '+');
printat( x, y+ magassag, '+');
printat( x+ szelesseg, y, '+');
printat( x+ szelesseg, y+ magassag, '+');
}
void keret_s( int x, int y, int magassag, int szelesseg)
{
int i;
for( i= x+ 1; i <= x+ szelesseg- 1; i++)
{
printat( i, y, 196);
printat( i, y+ magassag, 196);
}
for( i= y+ 1; i <= y+ magassag- 1; i++)
{
printat( x, i, 179);
printat( x+ szelesseg, i, 179);
}
printat( x, y, 218);
printat( x+ szelesseg, y, 191);
printat( x, y+ magassag, 192);
printat( x+ szelesseg, y+ magassag, 217);
}
void keret_d( int x, int y, int magassag, int szelesseg)
{
int i;
for( i= x+ 1; i <= x+ szelesseg- 1; i++)
{
printat( i, y, 205);
printat( i, y+ magassag, 205);
}
for( i= y+ 1; i <= y+ magassag- 1; i++)
{
printat( x, i, 186);
printat( x+ szelesseg, i, 186);
}
printat( x, y, 201);
printat( x+ szelesseg, y, 187);
printat( x, y+ magassag, 200);
printat( x+ szelesseg, y+ magassag, 188);
}
void lap( int x, int y, int magassag, int szelesseg)
{
int i;
magassag++;
while (magassag--)
{
i= szelesseg+ 1;
gotoxy( x, y+ magassag);
while( i--) printf(" ");
}
}
void ascii_tabla( void)
{
int i= 32;
int j;
system( "cls");
while( i < 256)
{
j= 10;
while( j-- && i < 256)
{
printf( "%d-%c\t", i, i);
i++;
}
printf( "\n");
}
}
És itt a vége, fussatok el véle, innen letölthetitek az egészet összecsomagolva.