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