GarryMoveOut Temat założony przez niniejszego użytkownika |
Jak wpisać obiekty jednej klasy do tablicy drugiej klasy » 2014-01-22 12:16:45 Chcę wpisać obiekty (przeciwników i przeszkody) klasy gracze i przeszkody. Do tablicy klasy house i room. Potem chcę się poruszać po "mapie" obiektem "czlowiek". Ale nie wiem za bardzo w jaki sposób mam wpisać tych przeciwników i przeszkody do tablicy. plansza.h #include <string> #include <iostream>
class house; class gracze;
class room { friend class house; friend class gracze; public: room * n; house * pok; int x; int y; string description; bool visited; room * wskn; room * wsks; room * wske; room * wskw; room( int wspx, int wspy ) { x = wspx; y = wspy; visited = false; } string pobdescription( string o ) { description = o; return description; } void zmiens() { visited = true; } void pobn( house * d ); void pobs( house * d ); void pobw( house * d ); void pobe( house * d ); };
class house { friend class room; public: room * current; room * tab[ 3 ][ 3 ]; int liczba; house() { for( int i = 0; i <= 2; i++ ) { for( int j = 0; j <= 2; j++ ) { tab[ i ][ j ] = new room( i, j ); } } for( int i = 0; i <= 2; i++ ) { for( int j = 0; j <= 2; j++ ) { ( * tab[ i ][ j ] ).pobn( this ); ( * tab[ i ][ j ] ).pobs( this ); ( * tab[ i ][ j ] ).pobw( this ); ( * tab[ i ][ j ] ).pobe( this ); } } current = tab[ 0 ][ 0 ]; ( * current ).visited = true; } void show() { cout << "X X X X X" << endl; for( int i = 0; i <= 2; i++ ) { cout << "X "; for( int j = 0; j <= 2; j++ ) { cout <<( * tab[ i ][ j ] ).visited << " "; } cout << "X"; cout << endl; } cout << "X X X X X" << endl; } void idz( char znak ) { ( * current ).visited = true; if( znak == 'n' ) { if(( * current ).wskn != NULL ) { current =( * current ).wskn; ( * current ).visited = true; } else { cout << "blad" << endl; } } else if( znak == 's' ) { if(( * current ).wsks != NULL ) { current =( * current ).wsks; ( * current ).visited = true; } else { cout << "blad" << endl; } } else if( znak == 'w' ) { if(( * current ).wskw != NULL ) { current =( * current ).wskw; ( * current ).visited = true; } else { cout << "blad" << endl; } } else if( znak == 'e' ) { if(( * current ).wske != NULL ) { current =( * current ).wske; ( * current ).visited = true; } else { cout << "blad" << endl; } } } };
void room::pobn( house * d ) { if( x != 0 ) { x -= 1; wskn =( * d ).tab[ x ][ y ]; x += 1; } else { wskn = NULL; } } void room::pobs( house * d ) { if( x != 2 ) { x += 1; wsks =( * d ).tab[ x ][ y ]; x -= 1; } else { wsks = NULL; } }
void room::pobw( house * d ) { if( y != 0 ) { y -= 1; wskw =( * d ).tab[ x ][ y ]; y += 1; } else { wskw = NULL; } }
void room::pobe( house * d ) { if( y != 2 ) { y += 1; wske =( * d ).tab[ x ][ y ]; y -= 1; } else { wske = NULL; } }
source.cpp #include <iostream> #include <string> #include <list>
using namespace std;
#include "baza.h" #include "gracze.h" #include "przeszkody.h" #include "plansza.h"
int gracz( gracze & atakujacy, gracze & przeciwnik ) { int _kroki = 0; cout << atakujacy.opis << " zycie[" << atakujacy.zycie << "]" << " spotyka " << przeciwnik.opis << " zycie[" << przeciwnik.zycie << "]" << endl; cout << atakujacy.opis << ": " << atakujacy.okrzyk << endl; cout << przeciwnik.opis << ": " << przeciwnik.okrzyk << endl; while(( atakujacy.zycie && przeciwnik.zycie ) > 0 ) { cout << " atakujacy || przeciwnik" << endl; cout << "\t" << atakujacy.zycie << " || " << przeciwnik.zycie << endl; przeciwnik.zycie = przeciwnik.zycie - atakujacy.atak; atakujacy.zycie = atakujacy.zycie - przeciwnik.atak; _kroki++; if( atakujacy.zycie < 0 ) atakujacy.zycie = 0; if( przeciwnik.zycie < 0 ) przeciwnik.zycie = 0; if( atakujacy.zycie <= 0 ) { cout << atakujacy.opis << " ginie!" << endl; return _kroki =- 1000; } if( przeciwnik.zycie <= 0 ) { cout << przeciwnik.opis << " ginie!" << endl; return _kroki; } } }
int przeszkoda( gracze & atakujacy, przeszkody & przeszkoda ) { int _kroki = 0; cout << atakujacy.opis << " napotyka " << przeszkoda.opis << endl; if( przeszkoda.opor < 20 ) { cout << atakujacy.opis << ": zniszcze to!" << endl; while( przeszkoda.zycie > 1 ) { przeszkoda.zycie = przeszkoda.zycie - atakujacy.atak; if( przeszkoda.zycie < 0 ) przeszkoda.zycie = 0; cout << przeszkoda.zycie << endl; _kroki++; } cout << przeszkoda.opis << " juz nie istnieje" << endl; return _kroki; } else { cout << atakujacy.opis << ": omine to +" << przeszkoda.wielkosc << " krokow" << endl; _kroki = _kroki + przeszkoda.wielkosc; return _kroki; } }
int main() { gracze czlowiek( 100, "czlowiek", 20, "A niech mnie kule bija" ); gracze troll( 20, "Troll", 10, "Oghh" ); gracze ogr( 25, "Ogr", 15, "Arggh" ); gracze elf( 30, "Elf", 20, "Ooo" ); gracze mag( 35, "Magik", 30, "Abra kadabra" ); gracze rycerz( 40, "Rycerz", 30, "Wio" ); przeszkody kamien( 30, "kamyczek", 5, 3 ); przeszkody drzewo( 35, "drzewo", 10, 2 ); przeszkody skala( 40, "skala", 19, 2 ); przeszkody krzaki( 10, "krzaki", 30, 1 ); przeszkody gora( 1000, "gora", 100, 3 ); house home; gracze * l_przeciwnicy[ 5 ] = { & troll, & ogr, & elf, & mag, & rycerz }; przeszkody * l_przeszkody[ 5 ] = { & kamien, & drzewo, & skala, & krzaki, & gora }; int kroki = 0; int tmp = 0; cout << "GRA PRZYGODA" << endl; }
baza.h #pragma once #include <string> #include <iostream>
using namespace std;
class baza { public: int zycie; string opis; baza( int _zycie, string _opis ); ~baza( void ); };
gracze.h #pragma once #include "baza.h" #include <string> #include <iostream>
class room;
class gracze : public baza { friend class room; public: int atak; string okrzyk; gracze( int _z, string _o, int _atak, string _okrzyk ); ~gracze( void ); };
przeszkody.h #pragma once #include "baza.h" #include <string> #include <iostream>
class przeszkody : public baza { public: int opor; int wielkosc; przeszkody( int _zy, string _op, int _opor, int _wielkosc ); ~przeszkody( void ); };
|