Ir ao conteúdo
  • Cadastre-se
the_petriuh

C++ RESOLVIDO preciso de bibliotecas C++

Posts recomendados

Pessoal, meu problema é o seguinte: minha atividade da faculdade é criar um programa em que o usuário possa deslocar o cursor da tela para onde ele quiser, utilizando coordenadas, e também o usuário pode mudar a cor do texto e o fundo do texto. Esse programa precisa ser escrito em C++. eu sei que da pra usar a biblioteca "windows.h" para isso, mas o meu professor disse que não pode usar nenhuma biblioteca do C, tem que ser do C++, ou seja, não pode usar nenhuma biblioteca com ".h" e também não poderei usar o comando "system(""color x)", usando o cmd do Windows. eu queria saber se tem uma biblioteca própria do C++ para isso, ou outro método que vocês me aconselharem. meu sistema é o Windows 10, e estou usando o VISUAL STUDIO 2017.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@the_petriuh     você pode usar a biblioteca conio2.h ?     então instale ela e configure o codeblocks lá em seting/compiler/linker setings/other links setings e coloque ali esses comandos :

-lgdi32
-lconio

e depois no programa use o textcolor seguido dos valores de zero até 15  para colorir as letras  ,  e o gotoxy seguido de um valor de zero até 80 para mover o cursor pelas colunas e outro valor de zero até 25 para mover o cursor pelas linhas ,

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 tem que ser no visual Studio, e não pode ser nenhuma biblioteca com ".h" no final. Sério cara, meu professor é um *****.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, the_petriuh disse:

não pode ser nenhuma biblioteca com ".h"

Seu professor é o maior *****.
Mas como manda ele, e não você... toma aqui:
 

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

Instale SFML e você poderá criar uma janela em modo gráfico

adicionado 4 minutos depois

Aqui um tutorial de como instalar no visual studio. https://www.sfml-dev.org/tutorials/2.5/start-você.php

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/
#include <iostream>
using namespace std;

/*Name          BG  FG
Black           30  40
Red             31  41
Green           32  42
Yellow          33  43
Blue            34  44
Magenta         35  45
Cyan            36  46
White           37  47
Bright Black    90  100
Bright Red      91  101
Bright Green    92  102
Bright Yellow   93  103
Bright Blue     94  104
Bright Magenta  95  105
Bright Cyan     96  106
Bright White    97  107*/
int main()
{
	//Texto vermelho (31) Fundo branco (107)
	cout << "\033[31m\033[107m";
	cout << "Hello Word" << endl;
	//Move o curso (linha 20, coluna 40)
	cout << "\033[20; 40H";
	//Texto branco (97) Fundo magenta (105)
	cout << "\033[97m\033[105m";
	cout << "Hello Word" << endl;
	//Volta ao normal
	cout << "\033[37m\033[40m";
	cin.get();
	return 0;
}

/033 equivale a "Esc".

Tabela completa dos códigos "Esc"

http://ascii-table.com/ansi-escape-sequences.php

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Flávio Pedroza parece ser uma solução boa. Vou testar aqui

 

adicionado 28 minutos depois

@Flávio Pedroza a questão das cores funcionou, mas o do cursor não. ele não foi para a posição especificadatela.png.423d25e801d14e15d9d560ea83bfebde.png

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mal, tinha um espaço a mais que não devia estar, o certo é:

//cout << "\033[20; 40H"; errado!
cout << "\033[20;40H"; //ok!

Só um adendo: para que esses códigos funcionem no console do windows, tem que habilitar no registro:

https://stackoverflow.com/questions/51680709/colored-text-output-in-powershell-console-using-ansi-vt100-codes

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@the_petriuh @the_petriuh     você pode usar a biblioteca conio2.h ?     então instale ela e configure o codeblocks lá em seting/compiler/linker setings/other links setings e coloque ali esses comandos :

-lgdi32
-lconio

e depois no programa use o textcolor seguido dos valores de zero até 15  para colorir as letras  ,  e o gotoxy seguido de um valor de zero até 80 para mover o cursor pelas colunas e outro valor de zero até 25 para mover o cursor pelas linhas ,

 

ou então você pode usar um cabeçalho ,   crie um novo arquivo c++ com nome de graficos e coloque esse código

#include <windows.h>
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;

static int __BACKGROUND = 1;
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
void gotoxy_2(int x, int y){
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int som(int f){
    Beep(f,150);
    return 0;
}

 nele ,  depois no outro programa que você for fazer coloque essa linha no início :

#include "graficos.cpp"

e salve ele na mesma pasta onde está o código com nome graficos.cpp ,   depois um programa como esse do exemplo , sem windows.h ,  vai funcionar  :

#include <iostream>
#include "graficos.cpp"
using namespace std;
int main(){
    textcolor_2(12,14);
    system("cls");
    gotoxy_2(25,9);
    cout<<"Colorindo Letras !\n\n\n"<<endl;
    som(800;
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada.  Uma dica, tente fazer funções para mudar a posição do curso e as cores. Ex.:

void gotoxy(int x, int y)
{
	cout << "\033["<< x <<";"<< y <<"H";
};

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 A ideia é boa, mas a sequências de escape já resolveram melhor meu problema, porque na verdade eu tinha que criar uma classe no C++ que fizesse isso, então eu acho que é até mais portável. mas obrigado pela ajuda

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!