• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlanie tekstu w konsoli powoli

Object Storage Arubacloud
0 głosów
4,423 wizyt
pytanie zadane 3 kwietnia 2016 w C i C++ przez chet Nowicjusz (170 p.)
edycja 3 kwietnia 2016 przez chet
Zastanawiam się, czy jest może opcja żeby w konsoli (w języku C++) tekst się tak jakby... rozwijał. Chodzi mi o to, żeby nie pokazywał się od razu cały tekst, tylko wyświetlał się tak jakbyśmy sami go pisali. Jeśli się tak da, to prosiłbym o wyjaśnienie i instrukcję jak zrobić coś takiego.

edit: lepiej jednak będzie, jeśli podam przykład.

Chodzi mi o efekt, jaki uzyskali twórcy gry tekstowej "Otchłań".

chciałbym właśnie napisać taką małą gierkę, a żeby troche immersji było (hłe, hłe) to potrzebuje właśnie takiego efektu.

2 odpowiedzi

0 głosów
odpowiedź 3 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 3 kwietnia 2016 przez chet
 
Najlepsza
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    string napis = "Hello world!";

    for (int i = 0; i < 12; i++)
    {
        cout << napis[i];
        Sleep(750);  // odstep czasowy zmien sobie na jaki chcesz
    }
    return 0;
}

Możesz to zrobić w pętli. Wypisujesz kolejne litery wyrazu, "usypiając" program na X czasu co każdą iterację pętli (w moim przykładzie 750 milisekund).

komentarz 3 kwietnia 2016 przez chet Nowicjusz (170 p.)
A co jeśli chciałbym napisać jakieś słowo np. "Lubie..." i sprawić, żeby te 3 kropki wyświetlały się wolniej niż samo słowo? Musiałbym to zrobić w dwóch oddzielnych pętlach?
komentarz 3 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)

Hmm..., mogę zaproponować 2 pomysły: pierwszy, to sprawdzanie tekstu w tekście (substring) - jeśli dany substring wystąpi to możesz zmienić sobie czas w funkcji Sleep(). Drugi pomysł, trochę bardziej żmudny - wstaw sobie w IF numer iteracji, od - do, wedle których dany tekst ma pojawiać się szybciej/wolniej. Do funkcji Sleep() wstaw sobie zamiast konkretnych liczb zmienną, której wartość będziesz sobie zmieniał w IF i tym samym regulował czas wstrzymania wypisywania kolejnych liter wyrazu.

0 głosów
odpowiedź 3 kwietnia 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)
edycja 3 kwietnia 2016 przez SebekChlebek

Funkcja:

Sleep(czas_w_milisekundach)

Potrzebna bilbioteka <windows.h>

Sleep zatrzymuje program na określony czas.

np.:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
cout << "H";
Sleep(300);
cout << "e";
Sleep(300);
cout << "l";
Sleep(300);
cout << "l";
Sleep(300);
cout << "o";
Sleep(300);
cout << " ";
Sleep(300);
cout << "W";
Sleep(300);
cout << "o";
Sleep(300);
cout << "r";
Sleep(300);
cout << "l";
Sleep(300);
cout << "d";
Sleep(300);
cout << "!";

    return 0;
}

 

Możesz wykorzystać jeszcze tablice string i pętle. (Lepsza wersja!)

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    string napis = "Wlazl kotek na plotek i mruga, ladna to piosenka. \nNie dluga. Nie krotka, a w sam raz. \nZaspiewaj koteczku jeszcze raz.";
for (int i = 0; i < napis.length(); i++)
{
    Sleep(250);
    cout << napis[i];
}

    return 0;
}

 

komentarz 3 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)
Trochę dużo linijek kodu będzie, jeśli autor tematu zechce tak napisać jakiś wiersz :)
komentarz 3 kwietnia 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)
edycja 3 kwietnia 2016 przez SebekChlebek
Racja, dlatego napisałem jeszcze drugą możliwość, bardziej wydajną, czytelną jaką są tablice i pętle + nie trzeba liczyć liter .;)

Podobne pytania

0 głosów
2 odpowiedzi 2,523 wizyt
pytanie zadane 17 marca 2016 w C i C++ przez easytodo Mądrala (5,380 p.)
0 głosów
1 odpowiedź 204 wizyt
0 głosów
2 odpowiedzi 1,059 wizyt
pytanie zadane 23 marca 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

92,555 zapytań

141,403 odpowiedzi

319,558 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...