"1. To czy ekran miga w dużej mierze zależy od sprzętu."Ale na pewno da się miganie zlikwidować i to na gorszym sprzęcie. Dowód: wszystkie gry rougelike.
"2. Spróbuj zamiast wersji debug dać release powinno tak nie mrugać. Wtedy iostream jest szybsze i używa bufora."Nie wiem jak to zrobić. Przeszukałem chyba wszystkie opcje w menu. C::B wszystko mi robi w katalugu debug. W pasku narzędziowym obok przycisków build itd. mam napis "Build target", ale obok jest wszystko nieaktywne, więc został tylko sam napis.
"3. Zamiast w pętli pisać po jednym elemencie użyj write() czy jakiejś podobnej funkcji... Po jednym elemencie jest baaaardzo wolno."Nie znam write() więc poszukałem i znalazłem to [url]http://www.cplusplus.com/reference/iostream/ostream/write/[/url]. Jak mam rozumieć taki zapis?
"4. Ogólnie cout jest postrzegany za wolniejsze niż np. printf(); może jest jakaś funkcja na winapi która pisze w konsoli określoną ilość znaków, w której podajesz macierz i ilość znaków."Zmiana na printf() nie dała widocznego efektu. WinAPI jeszcze nie znam, zresztą chce zrobić grę na konsolę tekstową, takie jak powstawały jeszcze jak nie było windowsa.
"Albo możesz zrobić też tak:
C/C++PlanszaUpdate();
while()
{
if( klawisz w lewo )
{
idz_w_lewo();
system( "cls" );
PlanszaUpdate();
}
}
Czyli nie rysuj cały czas tego, ale tylko wtedy, kiedy jest potrzebne odrysowanie."Tak właśnie u mnie jest. Rysowanie jest tylko po tym jak wciśnie się jakiś klawisz, czyli wykona jakąś akcję. Gdy nic się nie wciska, to po prostu obraz trwa narysowany i nie miga.
"ogólnie przy rysowaniu mapy, która zawsze ma taki sam rozmiar możesz zastosować pewien trik, po prostu zamiast czyścić ekran przenieś kursor na początek konsoli i rysuj mapę na poprzedniej http://msdn.microsoft.com/en-us/library/windows/desktop/ms686025%28v=vs.85%29.aspx"Dobry pomysł. Tylko potrzebuję przemieścić kursor, a u mnie (Code::Blocks 10.5 instalacja full) nie działało (czyli dawało "error: 'gotoxy' was not declared in this scope") ani gotoxy() ani _gotoxy(), chociaż mam #include <conio.h>, które działa, bo używam getch, które bez conio.h nie działa.
Do tego co jest w tym linku to nawet nie wiem jak się zabrać.
Ale znalazłem coś tutaj http://projectsofashok.blogspot.com/2010/05/gotoxy-in-codeblocks.html
Skopiowałem i DZIAŁA, tylko że nie bardzo rozumiem co to jest. Widzę, że coord to zmienna typu COORD, ale co to jest GetStdHandle(STD_OUTPUT_HANDLE) to nie wiem. I niezbyt mi się podoba to, że muszę dołączyć windows.h, skoro to gra w oknie DOS-a.
Czy gdy dołączam ciągle nowe include dla jednego polecenia, to program jest gorzej zoptymalizowany, czy to nie ma znaczenia?
Widzę, że z tymi bibliotekami to jest niezły bajzel w C++.
"www.google.com (Zapisz sobie na kartce i powieś na monitorze)
O tym były tu już (co najmniej) 2 tematy. Strasznie trudno samemu pomyśleć i poszukać.."Trochę szukałem, ale jak się trafia ciągle na porady, które nie działają, niezrozumiałe kody albo porady typu "kto teraz pisze na konsole", to się w końcu chce samemu opisać problem. Poczytałem trochę kursów na tej stronie i zdziwiłem się, że są takie dobre. Czytałem ich wiele, ale tutaj wyjaśnionych jest wiele rzeczy, które są pomijane gdzie indziej. No to wybrałem to forum.
"system( "CLS" );
A o tym w ogóle zapomnij.
1. Powoduje "fałszywe alarmy" w antywirusach
2. Zwiększa miganie"Czyli teraz, gdy mogę przemieszczać kursor, zamiast system("CLS") czyścić spacjami albo backspace'ami?