Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Nu pot activa Memory Integrity

Supratensiuni accidentale

Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...
 Mother's Day

Recomandare aparat de vidat alime...

Izolatie exterioara casa parter P...

Cuvinte si expresii neclare
 Mod de lucru Purmo Tempco Digital...

Samsung S90C vs LG C3

Problema sunet RCS

Amortizor sertare bucatarie
 Codrea Pallady

Blocurile goale! Orase in car...

Motorul pe benzina 1.0 SCe65

Mostenire In 1986
 

macao game

- - - - -
  • Please log in to reply
64 replies to this topic

#37
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014

View Postdani.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.
Va inteleg.
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
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,288
  • Înscris: 06.01.2007
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,474
  • Înscris: 10.08.2005
Prin asezi frumos intelegem "un rand, o regula". Astfel spatiu din dreapa ramane pentru schite (legaturi)

#40
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
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
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013
@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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,474
  • Înscris: 10.08.2005
  • Jocul se tine la o masa (board),
  • pe masa sunt piese, in cazul tau un pachet de carti,
  • cartile pot fi cu fata in sus sau cu fata in jos ( pentru unele jocuri)
  • jucatorii detin piese
  • ETC ETC ETC


#43
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
M-a batut tema...

#44
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postjdavyd, on 30 mai 2017 - 18:08, said:

M-a batut tema...
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.

#45
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014

View PostOriginalCopy, 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.
Am scris exact ce mi am pus in cap.Codul arata foarte rau dar asta a iesit, si se blocheaza la un simplu getter Posted Image)) . Asta e primul proiect care nu mi iese.Si totusi se presupene ca ar fi trebuit sa mi iasa si fara ajutorul vostru.

Edited by jdavyd, 30 May 2017 - 19:24.


#46
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,252
  • Înscris: 24.02.2007
Smart pointers pt managementul memoriei.

#47
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014

View Postdani.user, on 30 mai 2017 - 19:38, said:

Smart pointers pt managementul memoriei.
Daca am fi facut la facultate.

#48
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postjdavyd, on 30 mai 2017 - 19:42, said:

Daca am fi facut la facultate.
Facultatea nu mai e dadaceala. La facultate te duci ca sa auzi lucruri, dar daca auzi de ele din alte surse, tot poti sa le folosesti.

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.

#49
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,252
  • Înscris: 24.02.2007
Daca te bazezi doar pe ce faci la facultate...

#50
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,474
  • Înscris: 10.08.2005

View Postjdavyd, on 30 mai 2017 - 19:23, said:

Am scris exact ce mi am pus in cap
Si cum dovedesti chestia asta?

Edited by MarianG, 30 May 2017 - 20:07.


#51
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014

View PostMarianG, on 30 mai 2017 - 20:07, said:

Si cum dovedesti chestia asta?
Cod, vrei sa-l pun?

#52
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,252
  • Înscris: 24.02.2007

View PostOriginalCopy, on 30 mai 2017 - 18:10, said:

Cand esti pregatit sa inveti programare ca lumea, vino cu regulile complete de joc, si te ajut sa inveti ca la carte.


#53
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,474
  • Înscris: 10.08.2005
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
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postjdavyd, 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;/

Prima eroare: campurile clasei nu sunt initializate
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate