Ładny brzuch

Chc zrobi program(kompilator Borland Bulider 6 C++) ktry bdzie prosi o nacinicie ktrego z KURSORW a potem wykonywa podane instrukcje. Jak mog to zrobi?? Chodzi mi o to jak przypisa do instrukcji "case" wcinity przez uytkownika przycisk(KUROSR).



#include <iostream> #include <conio.c> using namespace std; int main() {   char c;       while(c!=27) {       c = getch();             switch(c) {         case 80 : { cout << "down" << endl; } break;         case 72 : { cout << "up" << endl; } break;         case 77 : { cout << "right" << endl; } break;         case 75 : { cout << "left" << endl; }       }       }         }


#include <iostream> #include <conio.c> using namespace std; int main() {   char c;       while(c!=27) {       c = getch();             switch(c) {         case 80 : { cout << "down" << endl; } break;         case 72 : { cout << "up" << endl; } break;         case 77 : { cout << "right" << endl; } break;         case 75 : { cout << "left" << endl; }       }       }         }


Dziki. Ale jednego nie rozumiem a mianowicie warunku dla ptli while. Moe mi kto to wyjani?




27 jest to numer klawisza escape. Czyli wykonuj to co jest w ptli do pki zawarto zmiennej c nie rwna si 27 (czyli dopki nie zostanie nacinity klawisz Esc).

Pytam si o to bo chciabym napisa gierk - popularnego "wa". Nie mylaem o tym ale czy takie zastosowanie ma sens, czyli czy do poruszania wem warto uy tej instrukcji?? Jestem pocztkujcym wic prosz o wyrozumiao jeli ten sposb wydaje si by gupi :D

a zdradzisz mi jak chcesz wywietlac tego wa? WINAPI? Czy w jakims C++ Builderze?

Moe ci si przyda: http://www.i-lo.tarn...ylog/index.html


a zdradzisz mi jak chcesz wywietlac tego wa? WINAPI? Czy w jakims C++ Builderze?


Moe ci si przyda: http://www.i-lo.tarn...ylog/index.html


#include <iostream> #include <conio.c> using namespace std; int main() {   char c;       while(c!=27) {       c = getch();             switch(c) {         case 80 : { cout << "down" << endl; } break;         case 72 : { cout << "up" << endl; } break;         case 77 : { cout << "right" << endl; } break;         case 75 : { cout << "left" << endl; }       }       }         }

Ostatnio pisze wlasna klase to obslugi konsoli ktora wprowadza tez elementy interfacu graficzne ze sie tak wyraze (tekstowe paski statusow menu przyciski itp)

Oto fragment z mojej klasy do klawiatury a dokladnie jedna definicja typu (moze sie przyda):
typedef enum TKey { CK_LEFT = 75, CK_RIGHT = 77, CK_UP = 72, CK_DOWN = 80, CK_ENTER = 13, CK_TAB = 9, CK_ESC = 27 };

wystarczy ze zrobisz zmienna TKey przycisk; dla przykladu i zrobisz rzutowanie dzialania funkcji getch() na wlasnie TKey. Nie wiem jak dziala dokladnie Borland ale powinno dzialac:

przycisk = static_cast<TKey>(getch());

A patrzac na ten kod ktory dostales to jest on w pelni dobry.

Trzeba jeszcze pamietac ze GETCH() DLA KLAWISZY STRZALEK ZAWSZE NA POCZATKU ZWRACA 0 POTEM WLASCIWA WARTOSC dlatego trzeba pobrac go dwa razy w takim wypadku.

Pozdrawiam


(...)
przycisk = static_cast<TKey>(getch());
(...)


Ostatnio pisze wlasna klase to obslugi konsoli ktora wprowadza tez elementy interfacu graficzne ze sie tak wyraze (tekstowe paski statusow menu przyciski itp)

Oto fragment z mojej klasy do klawiatury a dokladnie jedna definicja typu (moze sie przyda):
typedef enum TKey { CK_LEFT = 75, CK_RIGHT = 77, CK_UP = 72, CK_DOWN = 80, CK_ENTER = 13, CK_TAB = 9, CK_ESC = 27 };

wystarczy ze zrobisz zmienna TKey przycisk; dla przykladu i zrobisz rzutowanie dzialania funkcji getch() na wlasnie TKey. Nie wiem jak dziala dokladnie Borland ale powinno dzialac:

przycisk = static_cast<TKey>(getch());

A patrzac na ten kod ktory dostales to jest on w pelni dobry.

Trzeba jeszcze pamietac ze GETCH() DLA KLAWISZY STRZALEK ZAWSZE NA POCZATKU ZWRACA 0 POTEM WLASCIWA WARTOSC dlatego trzeba pobrac go dwa razy w takim wypadku.
Pozdrawiam


I to jest przykad na to, e trzeba zawsze pisa sekcj default w blokach switch-case. A jak ja sobie wcisn klawisz, ktrego *nie ma* w Twoim enum'ie? Bd si fajne rzeczy z progsem dziay ;).

Generalnie enum suy do tego, eby 1) nie uywa #define do robienia staych cakowitych w programie, 2) ograniczy liczbowy zbir wejciowy w jakiej funkcji do kilku cisle ustalonych wartoci, ktre podajemy przez nazw. Takie naduywanie enum'w nie wiadczy dobrze o stylu programowania - w ten sposb jakgdyby samemu hackujesz ograniczenia, ktre osobicie ustawie w kodzie.

Pozdrawiam,
TeMPOraL.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •