Hej på er alla. Ett annat sätt är att plocka ett av n där n går från max till max-14 ur en lista, kan bli lite mer effektivt. Hejsan <b>>De jag kallar för possetiva/negativa kort.</b> Till att börja med bör du hålla alla kort i en vector och vill du då plocka fram ett eller flera kort bör du blanda korten vectorn, det kan man göra genom att välja ett slumpvist valt kort och ta bort det ur vektorn för att sedan lägga till det som sista enhet i vectorn, gör man det ca: 140ggr så kan du betrakta korten som blandade. Sedan plockar du bara ut de 14 översta korten så har du löst det problemet. Det finns betydligt bättre sätt att blanda kortleken, för att inte tala om de inbyggda. Kanon killar Viist finns det bättre sätt men det där var det jag kom på på en gång...Slumpa fram 14 kort av 78 möjliga
Undrar om någon vet hur jag ska gå till väga.
Har 78 kort ( jpg format/bilder)
Ska slumpa fram 14 kort av dessa 78.
Samma kort får inte komma upp 2 gånger.
25 kort av dessa kan även ligga upp och ner.
(possitiv=rättvänt kort, negativ=felvänt kort)
Som ni förstår så är detta ingen vanlig kortlek. (en slags spå-kortlek)
Om det skulle underlätta när jag skriver programmet så kan jag kopiera de 25 korten
och spara dessa upp och ner. Då skullle det bli 78+25 kort.
Men det gäller samma här, bara ett kort av varje får komma upp.
Oavsett om det är possitivt eller negativt kort som kommer upp.
Någon som kan hjälpa mig....
Mvh
Urban OlssonSv: Slumpa fram 14 kort av 78 möjliga
Angående korten upp och ner:
Hur lagrar du korten nu?
Det enklaste är att helt enkelt ha en bool i klassen eller strukten som står för "är kortet uppåt?"Sv:Slumpa fram 14 kort av 78 möjliga
Det jag menar med att 25 kort kan vara upp och nervända är följande.
Av dessa 78 kort så kan 25 även ligga upp och ner.
(det betyder något annat då, i spå termer)
53 kort kan inte ligga mer än på de vanliga sättet, men de övriga 25 kan
ligga på 2 sätt. De jag kallar för possetiva/negativa kort.
(Dessa 25 kort ser ut som alla de andra kort, fast de ligger bara upp och ner.)
De 78 kort jag har nu är lagrat på det vanliga sättet.
Men jag reder inte riktigt ut hur jag ska koda mig igenom detta.
/UrbanSv: Slumpa fram 14 kort av 78 möjliga
Jag skulle kallat dem positiva/negativa. =)
<b>>De 78 kort jag har nu är lagrat på det vanliga sättet.
Men jag reder inte riktigt ut hur jag ska koda mig igenom detta.</b>
Jo, men vad är "lagrat på det vanliga sättet"?
Det vanligaste sättet jag kan tänka mig är en vector av en klass du har skrivit själv. Då säger jag: lägg till en "bool positive" till den klassen.
Eller ligger det som strängar i en vector? Gör då om det till std::pair<std::string, bool> eller skriv en egen klass eller struct.
Eller i värsta fall; använd ytterligare en vector för att beskriva om de är upp eller ner.Sv: Slumpa fram 14 kort av 78 möjliga
Om du medan du blandar även vill slumpa fram vridningen på korten (positiv / negativ) så kan du innan du stoppar in kortet i vectorn slumpa vridningen för att sedan återinföra kortet.
Ett simpelt kodexempel, som kanske inte är helt korrekt men ger en tydlig bild över hur jag menar:
struct card
{
public int value;
public bool negative;
public bool can_be_negative;
}
class deck
{
private:
vector <card> cards;
public:
deck()
{
for (int i = 0; i < 78; i++)
{
card c;
if (i < 25)
c.can_be_negative = true;
else
c.can_be_negative = false;
cards.push_back(c);
}
};
shuffle()
{
for (int i = 0; i < cards.size() * 3; i++)
{
int r = get_random_number_between(0, cards.size()-1);
card c = cards.at(r);
if (c.can_be_negative)
c.negative = get_random_bool_value();
cards.remove(c);
cards.push_back(c);
}
}
};Sv:Slumpa fram 14 kort av 78 möjliga
Sv:Slumpa fram 14 kort av 78 möjliga
Då har jag lita att labba med.
Tack ska ni ha
/UrbanSv: Slumpa fram 14 kort av 78 möjliga