kizia Temat założony przez niniejszego użytkownika |
Odczytywanie znaku z konsoli » 2010-04-12 17:39:31 Ja wiem że moja wiedza o programowaniu jest mała, ale ja nie chcę narysować figury tylko wczytać znak z konsoli. Tak jak pisałem, dodałem biblioteke <curses.h> ale wtedy program nie działa tak jak należy. Teraz drugi program bo w tamtym nie dodałem biblioteki :D : ] #include <iostream> #include <conio.h> #include <windows.h> #include <curses.h>
using namespace std;
inline void gotoxy( int x, int y ) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); }
void figura(); int x = 4, y = 10; char ruch; bool koniec = true;
int main() { while( koniec ) { system( "cls" ); figura(); gotoxy( x, y ); cout << "X"; ruch = getch(); switch( ruch ) { case 'w': y--; break; case 's': y++; break; case 'a': x--; break; case 'd': x++; break; } } }
void figura() { gotoxy( 2, 7 ); cout << char( 201 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 187 ); for( int i = 8; i < 11; i++ ) { gotoxy( 2, i ); cout << char( 186 ); } gotoxy( 2, 11 ); cout << char( 200 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 188 ); gotoxy( 7, 8 ); cout << char( 200 ); gotoxy( 7, 10 ); cout << char( 201 ); gotoxy( 2, 13 ); cout << char( 201 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 187 ); for( int i = 14; i < 17; i++ ) { gotoxy( 2, i ); cout << char( 186 ); } gotoxy( 2, 17 ); cout << char( 200 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 188 ); gotoxy( 7, 14 ); cout << char( 200 ); gotoxy( 7, 16 ); cout << char( 201 ); gotoxy( 8, 8 ); for( int i = 0; i < 8; i++ ) cout << char( 205 ); cout << char( 187 ); for( int i = 9; i < 11; i++ ) { gotoxy( 16, i ); cout << char( 186 ); } gotoxy( 16, 11 ); cout << char( 188 ); gotoxy( 13, 11 ); cout << char( 205 ) << char( 205 ) << char( 205 ); gotoxy( 12, 11 ); cout << char( 200 ); gotoxy( 12, 10 ); cout << char( 187 ); gotoxy( 11, 10 ); cout << char( 201 ); gotoxy( 11, 11 ); cout << char( 186 ); gotoxy( 11, 12 ); cout << char( 200 ); for( int i = 0; i < 5; i++ ) cout << char( 205 ); gotoxy( 17, 12 ); cout << char( 188 ); for( int i = 11; i > 9; i-- ) { gotoxy( 17, i ); cout << char( 186 ); } gotoxy( 17, 10 ); cout << char( 201 ) << char( 205 ) << char( 205 ) << char( 187 ); for( int i = 11; i < 15; i++ ) { gotoxy( 20, i ); cout << char( 186 ); } gotoxy( 20, 15 ); cout << char( 188 ); gotoxy( 17, 15 ); cout << char( 200 ) << char( 205 ) << char( 205 ); gotoxy( 13, 14 ); cout << char( 201 ) << char( 205 ) << char( 205 ) << char( 205 ) << char( 187 ); gotoxy( 8, 10 ); cout << char( 187 ); for( int i = 11; i < 14; i++ ) { gotoxy( 8, i ); cout << char( 186 ); } gotoxy( 8, 14 ); cout << char( 188 ); gotoxy( 8, 16 ); cout << char( 205 ) << char( 205 ) << char( 188 ); gotoxy( 10, 15 ); cout << char( 201 ) << char( 187 ); gotoxy( 11, 16 ); cout << char( 186 ); gotoxy( 11, 17 ); cout << char( 186 ); gotoxy( 11, 18 ); cout << char( 200 ) << char( 205 ) << char( 188 ); for( int i = 15; i < 18; i++ ) { gotoxy( 13, i ); cout << char( 186 ); } }
Oczywiście figura jest nie istotna. Tylko jak ograniczyc ten X zeby z niej nie wyłażił :D |
|
DejaVu |
» 2010-04-12 19:32:14 W sumie drugą część Twojego pytania można przekształcić do stwierdznia: 'jak wykryć kolizję'... a na to można udzielić wielu odpowiedzi.
Co do odczytania znaku to nie napisałaś jakie błędy się pokazują w logu kompilacji itd. Masz kurs poświęcony New Curses włącznie z instalacją jeśli dobrze pamiętam, ale najwyraźniej to dla Ciebie za mało. Chcesz mieć przenośne rozwiązanie - najłatwiej użyć stosownej biblioteki i jest nią w tym wypadku New Curses. Nie chcesz - to możesz się męczyć z API np. Windows'a, które nie należy do przyjaznych zwłaszcza, że podkreślasz, iż jesteś osobą początkującą. |
|
Elaine |
» 2010-04-12 20:08:50 Ależ API Windowsa jest bardzo przyjazne! ...jeśli porównujemy z analogicznymi klamotami pod *niksami. |
|
kizia Temat założony przez niniejszego użytkownika |
» 2010-04-12 21:31:51 Dobra. Ten program wygrał ze mną :D Ale jeszcze do niego wróce ;p . I dzięki za instrukcje dotyczące New Curses .Biblioteke zainstwalowałem zgodnie z instrukcjami .Włączam program bez biblioteki New Curses i wszystko działa, a gdy ją dodaje to program wbija się w nieskończoną pętle i nic nie można zrobić. |
|
DejaVu |
» 2010-04-13 00:17:22 Polecam przerobić cały kurs New Curses. Jest on krótki i pokazuje jak z tej biblioteki korzystać. |
|
« 1 » |