Tjena!
Har gjort ett litet enkelt ritprogram för DOS i Visual C++ 6.0 och skulle vilja ha lite tips på hur jag kan fixa en del saker.
1. Hur ändrar jag färg på tecknen man skriver?
2. När jag ändrar tecken vill jag att bara de kommande tecknen ska ska ändras. De som redan är skrivna ska vara som de är.
3. Hur skriver jag ut det jag ritat?
#include <iostream> //Biblioteket för cout
#include <conio.h> //Biblioteket för getch()
using namespace std;
//Funktionsprototyper
void funktionRita(int x, int y, char tecken);
char funktionEditera(char tecken);
//Globala variabler
bool rita[80][25];
int main()
{
char tecken = funktionEditera(0);
cout << " 8 - Flytta upp" << endl;
cout << " 2 - Flytta ner" << endl;
cout << " 4 - Flytta v\x84nster" << endl;
cout << " 6 - Flytta h\x94ger" << endl;
cout << " r - Rita" << endl;
cout << " s - Sudda" << endl;
cout << " e - Editera" << endl;
cout << " a - Avsluta" << endl;
cout << endl << "B\x94rja rita!";
int x = 1; //Startpositionen
int y = 1;
int val;
val = getch(); //Läser av den nertryckta tangenten
while (val != 97){
switch(val){
case 56: //Getch()-siffran för 8 (pil upp)
system("cls"); //Rensar rutan
y--; //Gör y-kordinaten 1 mindre vilket medför ett steg upp
funktionRita(x, y, tecken);
val = getch();
break;
case 50: //2
system("cls");
y++;
funktionRita(x, y, tecken);
val = getch();
break;
case 52: //4
system("cls");
x--;
funktionRita(x, y, tecken);
val = getch();
break;
case 54: //6
system("cls");
x++;
funktionRita(x, y, tecken);
val = getch();
break;
case 114: //r
system("cls");
rita[x][y] = true;
funktionRita(x, y, tecken);
val = getch();
break;
case 115: //s
system("cls");
rita[x][y] = false;
funktionRita(x, y, tecken);
val = getch();
break;
case 101: //e
system("cls");
tecken = funktionEditera(0);
funktionRita(x, y, tecken);
val = getch();
break;
default:
val = getch();
break;
}
}
return 0;
}
char funktionEditera(char tecken2)
{
char tecken;
cout << "Vad vill du rita med f\x94r tecken? ";
cin >> tecken;
system("cls");
return tecken;
}
void funktionRita(int x, int y, char tecken)
{
for (int i = 1; i <= 24; i++) //DOS-rutans höjd
{
for (int j = 1; j <= 80; j++) //DOS-rutans bredd
{
if (rita[j][i] == true) //Sätter det valda tecknet på alla valda ställen
cout << tecken;
else if (j == x && i == y) //Sätter ett _ på det aktuella stället
cout << "_";
else //Tomrum på resten
cout << " ";
}
}
}