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

[C++] Kolizje w konsoli Windows

Ostatnio zmodyfikowano 2010-07-13 11:33
Autor Wiadomość
maciejo
Temat założony przez niniejszego użytkownika
[C++] Kolizje w konsoli Windows
» 2010-07-13 10:01:15
Jak zrobic "kolizje" w konsoli , chodzi mi o to ze np. mam mapke i po tej mapce chodze sobie gosciem i jesli dotkne krawedzi mapy to nie moze isc w tamta strone
chyba rozumiecie o co chodzi?
P-19822
TheLukon
» 2010-07-13 10:20:28
Ja zawsze robiłem tak że pisałem sobie funkcje która była instrukcja switch któa kolejno była odpowiedzialna za porusznie sie bohatera. Oto kod:
C/C++
case 'w':
if( maps[ pozycja_x ][ pozycja_y - 1 ] == ' ' )
     --pozycja_y;

break;
Jak widzisz, gdy wciśniemy "w" na klawiaturze to instrukcja if będzie sprawdzała czy na tej własnie pozycji czyli:
C/C++
maps[ pozycja_x ][ pozycja_y - 1 ]
jest wolne miejsce:
C/C++
== ' '
Pozniej inkrementujemy lub dekrementujemy zmienna, i przechodzimy do rysowania mapy z bohaterem.
P-19825
maciejo
Temat założony przez niniejszego użytkownika
» 2010-07-13 10:35:06
cos u mnie nie dziala jakby co to nie uzywam tablic , ale probowalem bez tego maps i nic
P-19826
TheLukon
» 2010-07-13 11:03:22
To napisz jak to robisz.
P-19827
maciejo
Temat założony przez niniejszego użytkownika
» 2010-07-13 11:06:55
Mapa jest zrobiona w takim stylu:
cout<<"|---------|"<<endl;
...
a pozniej jest switch odpowiadajacy za poruszanie sie
P-19828
TheLukon
» 2010-07-13 11:15:05
Radzę ci, zrób to jako tablice.
P-19829
lenrokskate
» 2010-07-13 11:22:07
C/C++
#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

int ludek_x = 0;
int ludek_y = 0;

bool koniec = false;
char ruch;

char mapa[ 10 ][ 10 ] = {
    ' ', ' ', ' ', '|', '|', '-', '-', '-', '-', '-',
    '|', '-', ' ', '-', '-', ' ', ' ', ' ', ' ', '|',
    '|', ' ', ' ', ' ', '|', ' ', ' ', ' ', ' ', '|',
    '|', ' ', '-', ' ', '|', ' ', ' ', ' ', ' ', '|',
    '|', ' ', '|', ' ', '|', '-', ' ', ' ', ' ', '|',
    '|', ' ', '|', ' ', ' ', ' ', ' ', ' ', ' ', '|',
    '|', ' ', '|', ' ', ' ', '|', ' ', ' ', ' ', '|',
    '|', ' ', '-', ' ', '-', ' ', ' ', ' ', ' ', '|',
    '|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|',
    '|', '-', '-', '-', '-', '-', '-', '-', '-', '-'
};

int main( int argc, char * argv[] )
{
    while( !koniec )
    {
        system( "cls" );
        for( int y = 0; y < 10; y++ )
        {
            for( int x = 0; x < 10; x++ )
            {
                if( x == ludek_x && y == ludek_y ) cout << "x";
                else
                     cout << mapa[ x ][ y ];
               
            }
            cout << "\n";
        }
        ruch = getch();
        switch( ruch )
        {
        case 'w': if( mapa[ ludek_x ][ ludek_y - 1 ] == ' ' )
                 --ludek_y;
           
            break;
        case 's': if( mapa[ ludek_x ][ ludek_y + 1 ] == ' ' )
                 ++ludek_y;
           
            break;
        case 'a': if( mapa[ ludek_x - 1 ][ ludek_y ] == ' ' )
                 --ludek_x;
           
            break;
        case 'd': if( mapa[ ludek_x + 1 ][ ludek_y ] == ' ' )
                 ++ludek_x;
           
            break;
        case 'q': koniec = true; break;
        }
    }
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-19830
maciejo
Temat założony przez niniejszego użytkownika
» 2010-07-13 11:25:42
Dobra dzieki za rade a co do sterowania wole strzalki i jakby ktos chcial wiedziec to ich kody to :
UP - 72
DOWN - 80
LEFT - 75
RIGHT - 77
P-19831
« 1 » 2
  Strona 1 z 2 Następna strona