Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Kilka sztuczek w C++


Rekomendowane odpowiedzi

Opublikowano

Poradnik zawiera mniej lub bardziej przydatne wskazówki, jednak liczę na to, że chociaż komuś się przyda :D.
Jestem otwarty na propozycje. Błędy proszę zgłaszać w postach. Zdaje sobie sprawę, że czasem kody nie są zbyt profesjonalne, ale jeszcze się uczę xD.
 
1. Tekst przesuwający się w dół

#include <iostream>
#include <windows.h>
#include <cstdlib>
int main()
  {
      for (int i=1; i<25; i++)
      {
          std::cout << "\t\t\t\tNapis koncowy" << std::endl;
          _sleep(400);
          system("cls");
          for (int b=1; b<i; b++)
          {
              std::cout << std::endl;
          }
      }
      return 0;  
}

2. Tekst przesuwający się w górę


#include <iostream>
#include <windows.h>
int main()
  {
      std::string napis="\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\tNapis";
      for (int i=0; i<24; i++)
      {
          std::string napis2(napis, i+2, napis.length()-i);
          std::cout << napis2 << std::endl;
          _sleep(400);
          system("cls");
      }
      return 0;
  }

3. Kolorowy tekst


#include <windows.h>
#include <iostream>
#include <stdlib.h>
int main() {
    HANDLE uchwyt;
    uchwyt = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( uchwyt, atrybut );
    std::cout << "tekst";
    return 0;
}

Możliwe atrybuty i efekt ich zastosowania:

FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED (standardowy kolor- szary)
FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY (jasny szary)
FOREGROUND_GREEN | FOREGROUND_BLUE (morski)
FOREGROUND_BLUE | FOREGROUND_INTENSITY  lub FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY (intensywny niebieski)
FOREGROUND_BLUE | FOREGROUND_RED (fioletowy)
FOREGROUND_GREEN | FOREGROUND_RED (ciemny żółć)
FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY (intensywny fiolet)
FOREGROUND_RED | FOREGROUND_INTENSITY (intensywny czerwony)
FOREGROUND_GREEN | FOREGROUND_INTENSITY (intensywny zielony)
FOREGROUND_GREEN (zielony)
FOREGROUND_BLUE (niebieski)
FOREGROUND_RED (czerwony)
BACKGROUND_RED (zwykły tekst z czerwonym tłem)
BACKGROUND_GREEN (zwykły tekst z zielonym tłem)
BACKGROUND_BLUE (zwykły tekst z niebieskim tłem)

Opublikowano

3.

void setConsoleColor(int color)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}

gdzie color to 0-15

Opublikowano

4.Nie musisz już korzystać z std::

using namespace std;

5. Jeśli funkcje w for nie przekraczają 1 linijki to nie używaj {} (mój polski ;()

for(;
        blabla();

6. Nie dodawaj niepotrzebnych bibliotek.

2 przykład string i cstdlib

TuByłaSygnatura.png

Opublikowano

 

4.Nie musisz już korzystać z std::

using namespace std;

5. Jeśli funkcje w for nie przekraczają 1 linijki to nie używaj {} (mój polski ;()

for(;
        blabla();

4. To ironia, czy nie? xD

Ja z przyzwyczajenia używam std :P.

 

5. Początkujący powinni używać zawsze klamerek, aby uniknąć błędów w przyszłości xD.

Edit:

+

dlaczego?

Dobrze jest pisać bo lepiej widać co się dzieje i mniej pisania jeśli chce się coś dopisać

Opublikowano
5. Jeśli funkcje w for nie przekraczają 1 linijki to nie używaj {} (mój polski ;()

 

dlaczego?

Dobrze jest pisać bo lepiej widać co się dzieje i mniej pisania jeśli chce się coś dopisać

 

Są wyjątki oczywiście, ale w ogólnej sytuacji to jest czytelniejsze.

Opublikowano

4. To ironia, czy nie? xD

Ja z przyzwyczajenia używam std :P.

 

5. Początkujący powinni używać zawsze klamerek, aby uniknąć błędów w przyszłości xD.

4. Nie to ironia, można z tego korzystać, ale na dłuższą mete jest irytującę.

Te 5 znaków dodatkowych.

5. Lepiej już się przyzwyczajać do nie używania klamerek w niektórych sytuacjach, bo jak nasranych jest tych klamerek to gorzej się czyta taki kod.

 

dlaczego?

Dobrze jest pisać bo lepiej widać co się dzieje i mniej pisania jeśli chce się coś dopisać

 

Są wyjątki oczywiście, ale w ogólnej sytuacji to jest czytelniejsze.

 

Nie mówię, że lepiej bez {}, no ale opierałem się na jego kodzie.

          for (int b=1; b<i; b++)
          {
              std::cout << std::endl;
          }

vs

 

          for (int b=1; b<i; b++)
                  std::cout << std::endl;

TuByłaSygnatura.png

Opublikowano

w takiej sytuacji jak up pokazał to nawet nie ma co do kolejnej linii zjeżdżać z tym coutem, imo:

for(...) std::cout << std::endl;

jest czytelniejsze niż z dodatkowymi linikami

 

ps.

http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice

@eedit

w sumie to jak komuś przeszkadza pisanie 5 dodatkowych znaków to może sobie zrobić klase, która by wypisywała, np:

class Debug
{
public:
    Debug();
    ~Debug();
public:
    void log(const std::string text)
    {
         std::cout << text << '\n';
    }
};
Opublikowano

Po co utrudniasz sobie: std:: jak możesz sobie na początku wypisać using namespace std?,i potem mieć spokój..

 

Pisałem już, że z przyzwyczajenia.

Poza tym:

 

 

w takiej sytuacji jak up pokazał to nawet nie ma co do kolejnej linii zjeżdżać z tym coutem, imo:

for(...) std::cout << std::endl;

jest czytelniejsze niż z dodatkowymi linikami

 

ps.

http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice

@eedit

w sumie to jak komuś przeszkadza pisanie 5 dodatkowych znaków to może sobie zrobić klase, która by wypisywała, np:

class Debug
{
public:
    Debug();
    ~Debug();
public:
    void log(const std::string text)
    {
         std::cout << text << '\n';
    }
};
Opublikowano

using namespace std; dlaczego tego w szkołach i kursach uczą? W większych projektach jak używa się STL'a i boosta(mają sporo funkcji/klas o takiej samej nazwie) przeszkadza.

Nie pomagam na PW, od tego macie forum!!!

 

#PHP-things

 

 

08FMpDu.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...