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

Poruszający się punkt w tablicy [C]

Ostatnio zmodyfikowano 2015-04-20 13:58
Autor Wiadomość
Krzemien
Temat założony przez niniejszego użytkownika
Poruszający się punkt w tablicy [C]
» 2015-04-20 10:54:55
Witam!
Jestem początkującym "programistą" w C , a dokładniej studentem, który dopiero poznaje podstawy programowania. W celu wyćwiczenia w sobie zdolności programisty chciałem stworzyć "mini gre". Stworzyć pole gry w postaci ramki i w środku wrzucić powiedzmy jakąś cyfre/literke whatever, którą naciskając na klawiaturze numerycznej 4,6,8,2, będę mógł przesuwać ten "obiekt" w lewo, prawo, góra, dół.
Zacząłem od zrobienia tablicy. Jeszcze próbuję dojść do tego w jaki sposób usunąć środek tablicy,  a zostawić tylko ramkę.
Na razie mam coś takiego:
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1 
1 0 0 0 1
1 1 1 1 1

Ale głównym moim problemem jest znalezienie dodatkowej zmiennej która będzie zwracała położenie mojego "obiektu" do generowanej tablicy. No i też czy da się w jakiś sposób zrobić, żeby przycisk "sterowania" nie musiał być zatwierdzany enterem? Próbowałem scanf i getchar... :/

Być może moje pytanie jest banalne, albo niezrozumiałe, ale chciałbym powiększyć swoją wiedzę na temat programowania i jego schematów.
P-131197
darko202
» 2015-04-20 13:58:47
1.
może kbhit()
nie wiem czy to C czy C++,


2.
kiedyś próbowałem podobny projekt w C++
może jeszcze w czymś ci pomoże -- poniżej
początek wyglądał tak
   
C/C++
//main.cpp
#include <stdio.h>
#include <iostream>

#include "Gra.h"

using namespace std;

int main()
{
    Gra g;
    g.Nowa();
   
    while( g.Ruch() )
    {
       
    }
}


C/C++
//gra.cpp

#include "Gra.h"


Gra::Gra( void )
{
    plansza.Zmien( gracz.dane );
}


Gra::~Gra( void )
{
}

void Gra::Nowa()
{
    plansza.Rysuj();
}

bool Gra::Ruch()
{
    char c;
    int liczba;
    _sleep( 1000 ); //
    while( kbhit() )
    {
        liczba = _getch();
        if( liczba == 72 ) //  cout<<" gora ";
             c = 'g';
       
        if( liczba == 80 ) //  cout<<" dol ";
             c = 'd';
       
        if( liczba == 75 ) //  cout<<" lewo ";
             c = 'l';
       
        if( liczba == 77 ) // cout<<" prawo ";
             c = 'p';
       
        if( liczba == 107 ) // k koniec
             return false;
       
    }
   
    plansza.Rysuj();
    return true;
}

C/C++
//plansza.cpp
#include "Plansza.h"

Plansza::Plansza( void )
{
    for( int i = 0; i < MAX_WIERSZY; i++ )
    for( int j = 0; j < MAX_KOLUMN; j++ )
         dane[ i ][ j ].znak = '.';
   
}

Plansza::~Plansza( void )
{
}

void Plansza::Rysuj()
{
    for( int i = 0; i < MAX_WIERSZY; i++ )
    {
        cout << " \n";
        for( int j = 0; j < MAX_KOLUMN; j++ )
        {
            cout << dane[ i ][ j ].znak;
        }
    }
   
    ZmienKursor( 0, 0 );
   
}

void Plansza::Zmien( Dane poz )
{
    dane[ poz.wiersz ][ poz.kolumna ].znak = poz.znak;
}

void Plansza::ZmienKursor( int x, int y )
{
    COORD p;
    p.X = x;
    p.Y = y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), p );
}

C/C++
//gracz.cpp
#include "gracz.h"


Gracz::Gracz( void )
{
    dane.wiersz = MAX_WIERSZY / 2;
    dane.kolumna = MAX_KOLUMN / 2;
    dane.znak = 'G';
    dane.iBlad = 0;
    dane.kierunek = ' ';
    dane.sBlad = "";
}


Gracz::~Gracz( void )
{
}

P-131198
« 1 »
  Strona 1 z 1