Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
casa verde 2024

Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata
 Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...
 teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN
 Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.
 

macao game

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

#1
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
Salut, am nevoie de niste idei de implementare a jocului macao in c++ oop. Am inceput dar m am blocat, nu stiu cum sa fac.
As avea clasele card, card_special(as,umflaturi) derivata din card ,deck  si joc .
Mai jos e ce am apucat sa scriu, nu vrea cod ci doar o idee ce ar trebui sa fac, ca nu mi dau seama...parca e imposibil.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <algorithm>
#include <vector>

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 r,int n)
	{
		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);
};
class card_spec:public card ///cartile speciale AS,umflaturi
{
public:
   
};
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
{
	card cards[52];
	vector<card> cardss;

public:
	deck();
	void print_card(int );
	void print_deck();
	void shufle();
	card get_card(int );
};
deck::deck()
{
	for(int i=1; i<=13; i++)
		for(int j=0; j<=3; j++)
		{
			//cards[(i-1)*4+j].set_value(i,j);
			card c;
			c.set_value(i,j);
			cardss.push_back(c);
		}
}
void deck::print_card(int i)
{
	cout<<cardss[i];
}
void deck::print_deck()
{
	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)
{
	return cards[i];
}
int main()
{
	deck deck1;
	deck1.shufle();
	deck1.print_deck();
	return 0;
}



#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
https://github.com/C...Devel/CruceGame inspiratie (e alt joc, dar tot de carti)

#3
jdavyd

jdavyd

    Member

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

 dani.user, on 28 mai 2017 - 22:28, said:

https://github.com/C...Devel/CruceGame inspiratie (e alt joc, dar tot de carti)
Thanks, uneori ma gandesc ca am o problema cu inspiratia.Azi am un total de vreo 2-3 ore in care n- am reusit sa scriu nicio linie, si te simti asa...mai ales ca trebuie sa predau tema marti Posted Image)
Nu prea cred ca ma descurc cu ce ai postat, am cunostinte basic de poo dupa un semestru

Edited by jdavyd, 28 May 2017 - 22:51.


#4
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
void set_value(int n,int r)

De când o carte își schimbă numărul și culoarea după ce a fost construită?

Pentru n și r aș face enums.

De ce în deck salvezi de două ori cărțile, îți e frică să nu uiți ce cărți ai?

Mai ai nevoie de o clasă, Player.

#5
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
Proful vrea neapãrat moștenire carte speciala(umflaturi...) și nu am ideea cum sa o fac.
Card cards[52] o șterg ca am sa fac cu stl
Și clasa jucãtor nu cred ca fac, fac direct clasa joc

#6
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Moștenirea e una, setter e alta.

#7
jdavyd

jdavyd

    Member

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

 OriginalCopy, on 29 mai 2017 - 13:30, said:

Moștenirea e una, setter e alta.
Si cum sa fac fara, setter ? adica cum ai citi tu cartile?

#8
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Caracterele individuale le-aș citi în value objects, și Card ar accepta în constructor acele două value objects.

Setterii sunt Root of many evils. Evită-i la maxim. Într-un cod curat, mă aștept să văd un setter la 5000-10000 linii de cod.

Un cod curat înseamnă că folosești toate facilitățile oferite de OOP și că respecți principii precum SOLID.

#9
jdavyd

jdavyd

    Member

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

 OriginalCopy, on 29 mai 2017 - 17:03, said:

Caracterele individuale le-aș citi în value objects, și Card ar accepta în constructor acele două value objects.

Setterii sunt Root of many evils. Evită-i la maxim. Într-un cod curat, mă aștept să văd un setter la 5000-10000 linii de cod.

Un cod curat înseamnă că folosești toate facilitățile oferite de OOP și că respecți principii precum SOLID.
Am inceput sem asta poo, si stiu cam baza, cursul s-a terminat dar n-am facut prea multe adica nu am auzit de SOLID, o sa trebuiasca sa invat eu.

#10
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
Totusi eu nu vad rostul unei mosteniri , nu stiu ce sa fac in mostenire? any help?

Edited by jdavyd, 29 May 2017 - 19:33.


#11
OriginalCopy

OriginalCopy

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

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

 jdavyd, on 29 mai 2017 - 19:33, said:

Totusi eu nu vad rostul unei mosteniri , nu stiu ce sa fac in mostenire? any help?
Scrie aici regulile complete de joc pe care vrei sa le implementezi.

Orice proiect se incepe cu definitia regulilor, si apoi se decide limbajul de programare, paradigma de programare, etc.

Apoi se face ceva design, apoi ceva implementare.

Codul e pe la coada.

In functie de reguli ne dam seama daca si unde e nevoie de mostenire.

Programarea nu e ca pictura "hai sa mai tragem o linie aici, sa mai dam cu putin de rosu pe dincolo".

#12
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013
@OriginalCopy, e macao, stii, dai cate o carte jos din mana cu acelasi numari/simbol pana ramai fara carti. Si ai carti speciale, de exemplu As - sta adversarul o tura, 2, 3 - adversarul primeste 2, 3 carti, 7 - schimbi simbolul.
Nici eu nu vad de ce ar trebui o mostenire. Sunt curios cum vrea proful sa fie.

Edited by LittleWho, 29 May 2017 - 19:44.


#13
jdavyd

jdavyd

    Member

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

 OriginalCopy, on 29 mai 2017 - 19:39, said:

Scrie aici regulile complete de joc pe care vrei sa le implementezi.

Orice proiect se incepe cu definitia regulilor, si apoi se decide limbajul de programare, paradigma de programare, etc.

Apoi se face ceva design, apoi ceva implementare.

Codul e pe la coada.

In functie de reguli ne dam seama daca si unde e nevoie de mostenire.

Programarea nu e ca pictura "hai sa mai tragem o linie aici, sa mai dam cu putin de rosu pe dincolo".
4. Construiti un joc de macao
Ma intereseaza:
-sa vad ce carte este jos
-sa vad ce carti are un jucator in mana
-sa pot vedea punctajul la finalul jocului
Nice to have:
-sa pot schimba regulile jocului (ce carte schimba, ce carte sta un tur etc.)
Proiectul trebuie sa contina cel putin o mostenire, o functie virtuala (supraincarcata), o suprascriere de operator, un constructor de copiere.
Proiectul este individual. Fiind doar 4 proiecte, mai multi studenti pot avea acelasi proiect, dar as dori ca distributia proiectelor sa fie cat mai echilibrata
Aia cu schimbat regulilor, cred ca am sa-i dau skip si am sa o implementez dupa examene.
Tema e pana miercuri, chiar daca am primit-o mai demult n-am putut sa ma apuc de ea deoarece trebuia sa invat si sa fac teste de laborator pt poo care sunt ... (sper sa-l trec);
Nici functia virtuala nu mi prea dau seama, pt ca nu as lucra cu pointeri.

 LittleWho, on 29 mai 2017 - 19:44, said:

@OriginalCopy, e macao, stii, dai cate o carte jos din mana cu acelasi numari/simbol pana ramai fara carti. Si ai carti speciale, de exemplu As - sta adversarul o tura, 2, 3 - adversarul primeste 2, 3 carti, 7 - schimbi simbolul.
Nici eu nu vad de ce ar trebui o mostenire. Sunt curios cum vrea proful sa fie.
Reguli din Moldova (de unde sunt), la Bucuresti altele As schimba, 4 stai o tura :))

#14
OriginalCopy

OriginalCopy

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

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

 jdavyd, on 29 mai 2017 - 19:45, said:

4. Construiti un joc de macao
Fiecare persoana cu care am jucat macao stia reguli diferite. Deci defineste regulile. Nu stiu macao, na.

 LittleWho, on 29 mai 2017 - 19:44, said:

Si ai carti speciale, de exemplu As - sta adversarul o tura, 2, 3 - adversarul primeste 2, 3 carti, 7 - schimbi simbolul.
Exact la cartile alea nu exista o definitie concreta si exact acolo ar fi loc de inheritance.

#15
jdavyd

jdavyd

    Member

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

 OriginalCopy, on 29 mai 2017 - 19:48, said:

Fiecare persoana cu care am jucat macao stia reguli diferite. Deci defineste regulile. Nu stiu macao, na.


Exact la cartile alea nu exista o definitie concreta si exact acolo ar fi loc de inheritance.
Dar  nu prea ar avea logica sa derivez din clasa card, nu?
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);
};
class card_spec:public card ///cartile speciale AS,umflaturi
{
	int stay; ///carte care sta
	int change; ///carte care schimba
	int give1; ///carte care da
	int give2;
public:
	void set_rule()
	{
		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;
	}

};



#16
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu vrei nicicum sa cooperezi ca sa iti arat cum ajungi de la o descriere textuala la decizii de design.

Nu meriti timpul meu. Bafta.

#17
jdavyd

jdavyd

    Member

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

 OriginalCopy, on 29 mai 2017 - 19:52, said:

Nu vrei nicicum sa cooperezi ca sa iti arat cum ajungi de la o descriere textuala la decizii de design.

Nu meriti timpul meu. Bafta.
Imi cer scuze, daca asta am arat, sunt deschis.
Unde as putea face acele reguli, sau care ar fi mostenirea?

#18
OriginalCopy

OriginalCopy

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

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

 jdavyd, on 29 mai 2017 - 19:55, said:

Unde as putea face acele reguli, sau care ar fi mostenirea?

 OriginalCopy, on 29 mai 2017 - 19:39, said:

Scrie aici regulile complete de joc pe care vrei sa le implementezi.
Intelegi ce iti cer, sa scrii aici regulile de joc in forma textuala? Nu cod. Codul e fix pix, ceea ce conteaza sunt ideile.

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