Ruch elementow po ekranie gotoxy

0

Witam. Okolo 3 dni temu postanowilem nauczyc się troszke programowac obiektowo. Spedzilem nad tym juz kilka godzin i jakies mizerne efekty pracy mam. Probuje zrobic cos na wzor gry Frogger. Mam juz Zabe i Samochod nie mam jednak pojecia jak je wprawic w ruch. Probuje juz dlugo przeczytalem mase tematow ale no niestety nie umiem tego wcielic w zycie. Chcialbym aby Zaba byla sterowana za pomocą klawisz "w a s d", a samochod sam poroszal się od prawej do lewej i wracal do poczatku drogi. Moze ktos pomoc? oto kod:

main:

#include <iostream>
#include <windows.h>

//pliki uzyte w programie
#include "klasy.h"


using namespace std;

int main() {

	Plansza cos;
	cos.cPlansza(); //obiekt Plansza

	Zaba cos1;
	cos1.cZaba(); //obiekt Zaba

	Auto cos2;
	cos2.cAuto(); //obiekt Auto
	
	
	cout<<endl<<endl;
 

return 0;
}

naglowkowy:

class Plansza //glowna klasa
	{
	public:
		Plansza(){};
		void gotoxy(int x, int y);
		int plansza[46][150];
		int cPlansza();
		

	
};

class Zaba : public Plansza
{
public:
	Zaba(){};
	void Klawisz();
	int zX, zY;
	int cZaba();
	void Ruch();
	int dX; int dY;
};

class Auto : public Plansza
{
public:
	Auto(){};
	int pax, pay;
	int cAuto();
	void Jazda();
};

klasy:

#include "klasy.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h> 

using namespace std;
typedef HWND (WINAPI * _GetConsoleWindow)(void);

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

//-----------------------------------------------------------------------------
	//Metoda zmieniajaca rozmiar okna konsoli
HMODULE hDll = LoadLibrary("kernel32.dll");
_GetConsoleWindow proc = (_GetConsoleWindow)GetProcAddress(hDll, "GetConsoleWindow");
HWND hConsole = proc();

void rozmokna()
{   
//Nowy rozmiar bufora - odpowiednio większy
   COORD cord = {200, 200};
   SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), cord);

   //maksymalizacja tego okna
   ShowWindow(hConsole, SW_MAXIMIZE);
}
//-----------------------------------------------------------------------------

//---------------KOLOR----------------------------------------------------
HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);
void color(double n) {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), n); 
}
//------------------------------------------------------------------------
//-------------------------EKRAN------------------------------------------
void startthegame()
{
     color(14);
	cout<<" ----    -----    -----    -----    -----    -----   -----"<<endl;
	cout<<"|       |     |  |     |  |        |        |       |     |"<<endl;
	cout<<"|       |     |  |     |  |        |        |       |     |"<<endl;
	cout<<"|----   |-----   |     |  |  ---   |  ---   |-----  |----- "<<endl;
	cout<<"|       | \\      |     |  |     |  |     |  |       | \\   "<<endl;
	cout<<"|       |  \\     |     |  |     |  |     |  |       |  \\  "<<endl;
	cout<<"|       |   \\     -----    -----    -----    -----  |   \\ "<<endl<<endl;

	cout<<"---------------------------- :D ----------------------------"<<endl<<endl;
	cout<<"--------------------Karol Urbanczyk 1.1v--------------------"<<endl<<endl;
	system("PAUSE");
	cout<<"------------------------------------------------------------";
	cout<<endl;
	cout<<endl;
     }
//------------------------------------------------------------------------

//------------PLANSZA-----------------------------------------------------
int Plansza::cPlansza()
{
	rozmokna();
	startthegame();
	system("cls");
	int i, j;

	for(i=0;i<=45;i++) {
		cout<<endl;
		for(j=0;j<=149;j++) {
			if(i<5 || i>40) {
				color(119);
				cout<<" ";
				plansza[i][j]=1;
			}
			if(i>19 && i<25) {
				color(15);
				cout<<"-";
				plansza[i][j]=1;
			}
		}
	}
	return 0;
}
//------------------------------------------------------------------------
//---------------ZABA-----------------------------------------------------
int Zaba::cZaba()
{
	int i,j;

	for(i=0;i<=4;i++) {
		cout<<endl;
		for(j=0;j<=4;j++) {
			gotoxy(j+0,i+42);
			if( i==1 || (i==2 && j==2) || (i==3 && j==1) || (i==3 && j==3) || (i==4 && j==0) || (i==4 && j==4)) {
				color(34);
				cout<<" ";
			}
			if(i==0 && j==2){
					color(36);
					cout<<"^"; }

		}
	}
	return 0;
}


//---------------------------RUCH ZABY------------------------------------

//---------------------------KLAWISZE-------------------------------------
void Zaba::Klawisz()
	{
		char klawisz = getch();
		
		if(klawisz == 'w')
		{dX = 0; dY = 5; }
		if(klawisz == 's')
		{dX = 0; dY = (-5); }
		if(klawisz == 'a')
		{dX = 5; dY = 0; }
		if(klawisz == 'd')
		{dX = (-5); dY = 0; }

	}


//---------------AUTO-----------------------------------------------------
int Auto::cAuto()
{
		int i,j,x,y;
	int da=5;

for(i=0;i<=4;i++) {
		cout<<endl;
		for(j=0;j<=4;j++) {
			gotoxy(j+144,i+6);
			if( (i==2 && j==1) || ((i>0&&i<4) && j==2) || ((i>0&&i<4) && j==3) || (i==2 && j==4)) {
				color(153);
				cout<<" ";
			}
			if(i==2 && j==0){
					color(158);
					cout<<":"; }
		
		if( (i==1 && j==1) || (i==1 && j==4) || (i==3 && j==1) || (i==3 && j==4) ){
					color(158);
					cout<<"O"; }
		plansza[i][j]=3;
	}} 

	gotoxy(0,60);
	system("pause");
	return 0;
	}

z gory dziekuje za pomoc

0

Tak na szybko pisane, przyznam się że nie analizowałem kodu i nie znam gry na jakiej się wzorujesz...
Kod jest łatwy wiec powinieneś zrozumieć i zmodyfikować go pod swoim katem

#include <iostream>
#include <conio>
#include <windows>

using namespace std;

char    znak;

class rPlayer
{
        private :
                int X, Y;

        public :

        rPlayer()
        {
                X = 40;
                Y = 12;
        }

        ~rPlayer() {}

        void ruch_gracza();
        void rysuj_gracza();
};

void rPlayer :: ruch_gracza()
{
        if (znak == 'w') Y--;
        if (znak == 's') Y++;
        if (znak == 'd') X++;
        if (znak == 'a') X--;
}

void rPlayer :: rysuj_gracza()
{
        gotoxy(X,Y);
        cout << "P";
}

int main()
{
        rPlayer Player;

        do
        {
                system("cls");

                Player.rysuj_gracza();

                if (kbhit != 0) znak = getch();

                Player.ruch_gracza();


        } while (znak != 27);

        return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1