macao game
Last Updated: Jun 02 2017 09:12, Started by
jdavyd
, May 28 2017 22:19
·
0
#37
Posted 29 May 2017 - 21:46
dani.user, on 29 mai 2017 - 21:39, said:
Redeschidem discutia cand vrei sa inveti cum se face ca la carte, nu pe fuga in ajun. Design si OOP necesita timp si atentie, nu sunt ca o problema matematica unde o solutie poate fi exprimata in 3 cuvinte. Am sa incerc sa o refac mai tarziu. Deocamdata incerc sa bag clasa aia derivata dar nu reusesc... si nici nu stiu daca voi reusi sa fac ceva deoarece nu i vad rostul .Sper sa termin tema macar cat sa i arat ceva. |
#38
Posted 29 May 2017 - 22:15
Zi ma ce naiba e aia o umflatura, ca pare a fi o "extragere" speciala sau ceva "extraordinar"
Daca faci o clasa sa zicem Extragere, unde ai o functie virtuala Asezare() care face ceva acolo .. ca regula generala a jocului. (adica asezi juvete peste juvete, sa zicem) Inteleg ca umflatura aia e o extragere speciala (un 2, 3, As... etc, joker) Tre sa faci o clasa Umflatura care deriveaza din extragere, unde suprascrii Asezare() care va face ceea ce tre sa faca o umflatura din aia. (salti 2-3 carti, stai o tura si ce mai ai tu pe-acolo) Ca sa ai mostenire, functii virtuale in action tre sa faci o clasa derivata din alta. Poti face clasa derivata pentru fiecare tip de umflatura din aia. Si in main operezi cu membrul Asezare() si-ti va executa cod din clasele derivate. Nici eu nu stiu cum se joaca macao aia, poate te-as fi ajutat mai mult. Am jucat acum 30 de ani, am uitat cum e. LE: Sory , acum am citit ca ti se impune card si card_special. Fa un membru virtual card::PlayCard( ) si-l suprascrii in card_special::PlayCard() Trebue sa ai clara in cap regula jocului daca vrei sa scoti ceva bun. Altfel.. te poti juca cu mostenirea asta sa scoti ceva, dar nu va functiona dupa regulile jocului daca nu le asezi frumos pe hartie sa intelegi algoritmul de joc. |
#39
Posted 30 May 2017 - 04:31
Prin asezi frumos intelegem "un rand, o regula". Astfel spatiu din dreapa ramane pentru schite (legaturi)
|
#40
Posted 30 May 2017 - 13:32
Am scris ceva dar sunt blocat de 1 ora...
Mi-a dat proful niste idei cum sa fac aceea clasa derivata. Acum nu am erori de compilare dar la debugger imi da eroare la cout si return din get_card. Daca are cineva chef sa ma ajute. #include <iostream> #include <time.h> #include <stdlib.h> #include <stdio.h> #include <algorithm> #include <vector> int suma=0; int nr=0; using namespace std; class card { protected: int suit; ///0-clubs, 1-diamonds, 2-hearts, 3-spades int number;/// 1-Ace, 2, ..., 10,11- Jack, 12-Queen, 13-King,14-Joker N,15-Joker R public: card() {} card(int n,int r) { suit=r,number=n; } void set_value(int n,int r) { suit=r; number=n; } int get_number() { return number; } int get_suit() { return suit; } friend ostream & operator <<(ostream &o,card &c); virtual void show_card(int i) { cout<<"Jucatorul "<<i+1<<" trebuie sa puna cartea"<<number<<" sau orice carte de "<<suit; } }; class card_give:public card { public: card_give(int n,int r):card(n,r) {} void show_card(int i) { cout<<"Jucatorul "<<i+1<<" trebuie sa puna o carte de dat sau sa ia "<<suma<<"carti."; } }; class card_stay:public card { public: card_stay(int n,int r):card(n,r) {} void show_card(int i) { cout<<"Jucatorul "<<i+1<<" trebuie sa puna o carte de stat o tura sau stea "<<nr<<" ture."; } }; class card_change:public card { public: card_change(int n,int r):card(n,r) {} void show_card(int i) { cout<<"Jucatorul "<<i<<"a pus "<<number<<" si schimba in "; } }; ostream& operator<< (ostream &o,card &c) { if( c.number >= 2 && c.number <= 10 ) cout << c.number; else switch(c.number) { case 11: cout << "J"; break; case 12: cout << "Q"; break; case 13: cout << "K"; break; case 1: cout << "A"; break; } switch(c.suit) { case 0: cout <<"-clubs"; break; case 1: cout <<"-diamonds"; break; case 2: cout <<"-hearts"; break; case 3: cout <<"-spades"; break; } return o; } class deck { vector<card*> cardss; int give1,give2,stay,change; public: deck() {}; void print_card(int ); void make_deck(); void read_special_card(); void print_deck(); void shufle(); card get_card(int ); int get_size(); void remove_card(); }; int deck::get_size() { return cardss.size(); } void deck::remove_card() { cardss.pop_back(); } void deck::read_special_card() { int x,y; cout<<"Stabiliti cartea pt a sta o tura: "; cin>>x; stay=x; cout<<"\nStabiliti cartea pt a schimba: "; cin>>x; change=x; cout<<"\nStabiliti cartile (2) pt umflaturi: "; cin>>x>>y; give1=x; give2=y; } void deck::make_deck() { for(int i=1; i<=13; i++) if(i!=give1&&i!=give2&&i!=stay&&i!=change) { for(int j=0; j<=3; j++) { card *c=new card(i,j); cardss.push_back(c); } } else if(i==give1||i==give2) { for(int j=0; j<=3; j++) { card *c=new card_give(i,j); cardss.push_back(c); } } else if(i==stay) { for(int j=0; j<=3; j++) { card *c=new card_stay(i,j); cardss.push_back(c); } } else { for(int j=0; j<=3; j++) { card *c=new card_change(i,j); cardss.push_back(c); } } } void deck::print_card(int i) { cout<<(*cardss[i]); } void deck::print_deck() { if(get_size()==0) cout<<"Packet gol!"; else for(int i=0; i<52; i++) { print_card(i); cout<<endl; } } void deck::shufle() { random_shuffle(cardss.begin(),cardss.end()); } card deck::get_card(int i) { cout<<*cardss[i]; cout<<4; cout<<endl; return (card)*(cardss[i]); } class player { vector<card* > cards; string name; public: player() {}; string get_name(); void set_name(string ); void append_card(card* );///trage carte void discard(int);///sterge carte void print_hand();///afiseaza ce se afla in mana bool void_hand(); int size_cards();///dim }; int player::size_cards() { return cards.size(); } bool player::void_hand() { if(cards.size()) return 0; return 1; } void player::set_name(string x) { name=x; } void player::append_card(card* Card) { cards.insert(cards.begin(),Card); } string player::get_name() { return name; } void player::print_hand() { vector<card* >:: iterator i; int a= 0; for(i=cards.begin(); i!=cards.end(); i++) { a++; for (int c = 0; c < a; c++) { cout << " "; } cout << *i << endl; } } void player::discard(int a) { card c_return; vector <card* >::iterator i; i = cards.begin(); for (int f = 0; f < a; f++) { i++; } c_return = **i; cards.erase(i); //return c_return; } class master { deck deck1; public: master() {}; void make() { deck1.make_deck(); } void rules() { deck1.read_special_card(); } void shufle() { deck1.shufle(); } void print() { deck1.print_deck(); } void share_card(player &p1,player &p2) { for(int i=51; i>=41; i--) { if(i%2) {cout<<"da"; card *c; *c=deck1.get_card(i); p1.append_card(c); deck1.remove_card(); } else { card *c; *c=deck1.get_card(i); p2.append_card(c); deck1.remove_card(); } } } }; void set_names(player &p1,player &p2) { string x,y; cout<<"Player1 name: "; cin>>x; cout<<"Player2 name: "; cin>>y; p1.set_name(x); p2.set_name(y); } void play_game(master m,player &p1,player &p2,deck &deck1) { m.shufle(); //m.share_card(p1,p2); cout<<p1.size_cards()<<"===="<<p2.size_cards(); cout<<p1.get_name()<<endl<<p2.get_name()<<endl; p1.print_hand(); cout<<endl; p2.print_hand(); card *c=new card; *c=deck1.get_card(6); c->show_card(0); } void start_game() { master m; player p1,p2; deck deck1; int opt; while(opt!=0) { cout<<"You have started a new game."; cout<<endl<<"0.Back to main menu."; cout<<endl<<"1.Read players names."; cout<<endl<<"2.Set rules of game."; cout<<endl<<"3.Create deck."; cout<<endl<<"4.Start game."; cout<<endl; cin>>opt; switch(opt) { case 0: { cout<<"You have returned to main menu."<<endl; system("pause"); system("cls"); } break; case 1: { set_names(p1,p2); system("pause"); system("cls"); } break; case 2: { m.rules(); cout<<"Done!"<<endl; system("pause"); system("cls"); } break; case 3: { m.make(); cout<<"Done!"<<endl; system("pause"); system("cls"); } break; case 4: { cout<<"Game started."; play_game(m,p1,p2,deck1); } break; default: { cout<<"WRONG OPTION."; } break; } } } void menu() { int opt=1; while(opt!=0) { cout<<" MACAO "; cout<<endl<<"1.Start new game."; cout<<endl<<"2.Exit."; cout<<endl<<"------------------------------------------------------"; cout<<endl; cin>>opt; switch(opt) { case 1: { start_game(); cout<<endl; system("cls"); } break; case 2: { cout<<"EXIT!"; exit(0); } break; default: { cout<<"WRONG OPTION."<<endl; system("pause"); system("cls"); } } } } vector<card *> c; card gget_card(int i) { card *cc; cc=c[i]; return *cc; } int main() { menu(); /* card *x; x= new card(1,2); c.push_back(x); card *cc=new card; *cc=gget_card(0); cout<<*cc; return 0; */ } |
#41
Posted 30 May 2017 - 14:01
@jdavyd, oamenii se chinuie pe aici sa te ajute, dar tu te cam incapatanezi. Codul efectiv o sa-l scrii in vreo ora maxim, daca pui la punct designul. De aia ti s-a cerut sa scrii regulile, ca sa-ti faci o idee structurata despre joc si ca sa poata si oamenii sa te ajute sa faci un design.
Daca tot o sa vii sa arunci niste cod pe aici, nu cred ca or sa se oboseasca sa te ajute. |
#42
Posted 30 May 2017 - 14:48
|
#44
Posted 30 May 2017 - 18:10
#45
Posted 30 May 2017 - 19:23
OriginalCopy, on 30 mai 2017 - 18:10, said:
Gresit. Tu te-ai dat batut. Cand esti pregatit sa inveti programare ca lumea, vino cu regulile complete de joc, si te ajut sa inveti ca la carte. Edited by jdavyd, 30 May 2017 - 19:24. |
#47
Posted 30 May 2017 - 19:42
#48
Posted 30 May 2017 - 19:52
jdavyd, on 30 mai 2017 - 19:42, said:
Daca am fi facut la facultate. La facultate nu te duci ca sa te invete ei ceva cu lingurita. Te duci ca sa auzi niste cuvinte cheie, pentru a te intoarce acasa si a invata singur. |
#50
Posted 30 May 2017 - 20:07
#51
Posted 30 May 2017 - 20:32
#52
Posted 30 May 2017 - 20:34
#53
Posted 30 May 2017 - 20:37
Nu omule, vreu sa te fac sa intelegi ca atunci cand iti pui ceva in cap si vrei sa urmezi, trebuie sa il pui intr-un mediu non-volatile.
Oamenii isi fac liste de dorinte, "lucruri de facut inainte sa mor", oare de ce? Edited by MarianG, 30 May 2017 - 20:40. |
#54
Posted 31 May 2017 - 10:08
jdavyd, on 30 mai 2017 - 18:08, said:
M-a batut tema... Quote
protected: int suit; ///0-clubs, 1-diamonds, 2-hearts, 3-spades int number;/ Apoi de ce denumirea proiectului este in Romana iar codul comentat este in engleza ? Acest cod este facut de tine sau este furat din alta parte ? |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users