Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Granice konsoli.

Ostatnio zmodyfikowano 2014-12-05 11:38
Autor Wiadomość
nehel
Temat założony przez niniejszego użytkownika
[C++] Granice konsoli.
» 2014-12-03 22:43:25
Witam.

Mam do napisania projekt w którym trzeba narysować figurę (w kształcie litery E) która ma się nie wysypywać kiedy dotknie granicy konsoli. Nie ważne, czy za pomocą przesunięcia, czy powiększenia do maksymalnych rozmiarów; ma się nie wysypać. No i problem polega na tym, że udało mi się taką funkcję stworzyć tylko dla dolnej granicy. Próbowałem analogicznie z pozostałymi granicami, lecz figura działa tak: górna krawędź figury, po dotarciu do górnej krawędzi konsoli zmienia pozycję (cała górna krawędź figury i tylko ta część figury) z aktualnej na początek konsoli (lewy górny róg), prawa krawędź granicy "przepuszcza" połowę figury, po czym figura się zatrzymuje, natomiast lewa krawędź konsoli przetwarza całą figurę (kiedy ta już całkowicie zniknie z konsoli, mimo że powinna poprzestać właśnie na krawędzi konsoli) na poziomą linię długości górnej krawędzi figury i przemieszcza całą figurę na lewy górny róg konsoli (sytuacja wtedy jest taka sama jak z górną krawędzią figury).

Mam takie dane konsoli i wytyczne co do granic:
C/C++
int x = 0, y = 0;
int console_size_x = 80;
int console_size_y = 25;

if( x > console_size_x - bok ) // prawa krawedz konsoli
     x = console_size_x - bok;

if( x < 0 ) // gorna krawedz konsoli
     x = 0;

if( y > console_size_y - bok ) // dolna krawedz konsoli
     y = console_size_y - bok;

if( y < 0 ) // lewa krawedz konsoli
     y = 0;

Próbowałem metodą prób i błędów, po kolei podstawiać wszędzie te same dane, tzn albo 0 albo console_size_x/console_size_u albo 80 / 25, albo próbowałem dodać ten bok i wszędzie wynik marny. Jedyną dobrze działającą funkcją jest dolna krawędź zatrzymująca figurę.
Byłbym bardzo wdzięczny za wszelką pomoc.
PS. Jestem początkującym programistą i staram się rozumieć co robię, dlaczego tak zmieniam / tak jest, jak sprawić by lepiej działał, lecz w tym przypadku nie potrafię wyobrazić sobie rozwiązania tego problemu po tej metodzie prób i błędów.

EDIT: Problem rozwiązany!
P-122131
darko202
» 2014-12-05 11:38:43
na - http://www.coderscity.pl​/ftopic46608.html
jest opisany podobny problem

jest jeszcze możliwość wykorzystania  set_gfx_mode z biblioteki allegro 
np.
http://icis.pcz.pl/~kaczmarek​/MiASI/MIASI_Allegro.pdf 
ale chyba nie oto Ci chodzi
P-122251
« 1 »
  Strona 1 z 1