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

Odczytywanie znaku z konsoli

Ostatnio zmodyfikowano 2010-04-13 00:17
Autor Wiadomość
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 :
C/C++
]
#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
P-16067
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ą.
P-16079
Elaine
» 2010-04-12 20:08:50
Ależ API Windowsa jest bardzo przyjazne! ...jeśli porównujemy z analogicznymi klamotami pod *niksami.
P-16083
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ć.
P-16090
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ć.
P-16094
« 1 »
  Strona 1 z 1