Efekt napisów końcowych i konsola c++

Odpowiedz Nowy wątek
2014-12-13 17:38
0

Witam
Jak zrobić efekt napisów końcowych w konsoli c++.
Chodzi o to że napisy przesuwają się od dołu do góry

Pozostało 580 znaków

2014-12-13 18:02
0

Dodawaj spacje tak aby to wyśrodkować a następnie co np. sekundę przesuwaj wiersz na dół.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.

Pozostało 580 znaków

2014-12-13 18:14
#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;
  }

:D

Pozostało 580 znaków

2014-12-13 20:31
0

Dzięki @Min0s, ale ten tekst idzie od góry na dół a nie tak jak ja bym wolał.
Wiesz co trzeba by tu zmienić aby tak było?

Pozostało 580 znaków

2014-12-13 20:58
kq
0

Wyświetl tyle pustych linii ile ma konsola (domyślnie 25).


Pozostało 580 znaków

2014-12-13 22:44
1
BigZ25 napisał(a):

Dzięki @Min0s, ale ten tekst idzie od góry na dół a nie tak jak ja bym wolał.
Wiesz co trzeba by tu zmienić aby tak było?

Tak główkowałem i przypomniałem sobie o stringach, rozwiązanie okazało się takie proste :D.

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <string>
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 koncowy";
      for (int i=0; i<25; i++)
      {
          std::string napis2(napis, i+1, 70-i);
          std::cout << napis2 << std::endl;
          _sleep(400);
          system("cls");
      }
      return 0;
  }
edytowany 1x, ostatnio: Min0s, 2014-12-13 22:47

Pozostało 580 znaków

2014-12-14 03:25
2

@Min0s, to samo tylko bez przekombinowań:

#include <iostream>
#include <windows.h>
 
int main()
  {
   const char 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 koncowy";
   for (int i=0;napis[i]!='\t';++i)
     {
      std::cout<<(napis+i)<<std::endl;
      _sleep(400);
      system("cls");
     }
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-14 14:25
0

Wszystko super, ale jak zrobić gdy mamy więcej zdań (jedno pod drugim). Przecież podnoszenie każdego zdania osobno nie ma sensu

edytowany 1x, ostatnio: BigZ25, 2014-12-14 14:25

Pozostało 580 znaków

2014-12-14 15:02
0
BigZ25 napisał(a):

Wszystko super, ale jak zrobić gdy mamy więcej zdań (jedno pod drugim). Przecież podnoszenie każdego zdania osobno nie ma sensu

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <string>
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 koncowy\n\t\t\t\tNapis koncowy 2\n\t\t\t\tNapis koncowy 3\n\t\t\t\tNapis koncowy 4";
      for (int i=0; i<25; i++)
      {
          std::string napis2(napis, i+1, (napis.length()-i));
          std::cout << napis2 << std::endl;
          _sleep(400);
          system("cls");
      }
      return 0;
  }

\n Powoduje przejście do nowej linii

Pozostało 580 znaków

2014-12-14 15:30
0

Wielkie dzięki @Min0s.

a tak z ciekawości do czego służy \t?

Akapit :p - Min0s 2014-12-14 15:40

Pozostało 580 znaków

2014-12-14 15:40
msm
1

a tak z ciekawości do czego służy \t?

Wyświetla znak "tab".

A jeśli chodzi o wątek, może mnie coś mija, ale dlaczego nie po prostu:

int main() {
   std::string lines[] = {
       "linia 1", "", "", // każdy napis w tablicy to jedna linia, puste napisy dla pustych linii
       "linia 2", "", "", 
       "linia 3", "", "", "", 
       "linia 4", "", "", "",
       "THE END", "", "", "", "", "", "", ""
   };
   int line_ct = sizeof(lines)/sizeof(*lines);
   // 40 - ilość wierszy w konsoli, w teorii może być wyższa więc lepiej by to było pobrać skądś
   // upewniamy sie że jesteśmy na dole konsoli - przy okazji powoduje to że system() jest niepotrzebne
   for (int i=0; i<40; i++) { 
       std::cout << std::endl;
   }
   for (int i=0; i<line_ct; i++) {
       // wypisujemy kolejną linię, a reszta się przesuwa sama automatycznie do góry
       std::cout << lines[i] << std::endl;
       sleep(400); // i czekamy trochę czasu
   }
   return 0;
}
edytowany 7x, ostatnio: msm, 2014-12-14 15:44
Będzie "bardziej mrugać". - _13th_Dragon 2014-12-14 16:49

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0