webForumDet fria alternativet

DOSoshop :)

1 svar · 489 visningar · startad av orvar

orvarMedlem sedan feb. 2001109 inlägg
#1

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 << " ";
		}
	}
}
PhorpherMedlem sedan feb. 20002 059 inlägg
#2

1: SetConsoleTextAttribute(...);

2: Du får väl ändra tillbaka färgen till ursprungsfärg efter du ritat ett tecken?

3: Pass.

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb