[java libGDX] Pasjans - możliwe ruchy pomiędzy Tableau ale z odrzucaniem zapętlonych ruchów
Ostatnio zmodyfikowano 2026-01-11 21:43
skovv |
» 2026-01-10 15:16:32 Ciężko powiedzieć nie widząc całego kodu.. ogółem ja bym sobie nadal wartości kart według kolejności.. od asa szło chyba i na to 2 i tak dalej? To as wartość 1, 2 to 2, 3 to 3 i tak dalej.. i teraz jak chcesz sprawdzić czy możesz wykonać jakikolwiek ruch to to sprawdzasz dla każdej talii czy jej ostatnia karta jest o 1 wieksza od ostatniej karty z innych kupek, jeśli nie to kolejna kilka itp.. za dużo inspirujesz się chatem gpt, pamiętaj że to debil o pisze bo każesz ale on często nie wie co piszesz i nie musi rozumieć do końca co chcesz a używając jego kodu którego do końca nie rozumiesz narobisz sobie lipy w kodzie |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-10 16:33:20 Sam nie mam pojęcia jak to opisać logicznie. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-10 17:20:43 Chyba wymyśliłem. Teraz testować trzeba. // move the cards from Tableau to Tableau (ANTI-LOOP - how?) for (Tableau from : Tableaus.tableaus) {
if (from._cards.isEmpty()) continue;
if(from._cards.get(0)._isOpen && from._cards.get(0)._value == 13) continue;
for(int i=0;i<from._cards.size();i++){ for(Tableau to : Tableaus.tableaus){ if(from == to){ continue; }
if(to._cards.isEmpty()) continue;
Card prevCard; if(i==0) prevCard = null; else prevCard = from._cards.get(i-1);
boolean prevCardIsOpen; if(prevCard == null) prevCardIsOpen = false; else prevCardIsOpen = prevCard._isOpen;
boolean cardsAreEqual; if(prevCard == null) cardsAreEqual = false; else cardsAreEqual = prevCard._value == to.getLastCard()._value;
boolean cardsAreOtherColor = false;
if(prevCard == null){ cardsAreOtherColor = true; } else{ if (prevCard._color == Card.cardColor.Heart || prevCard._color == Card.cardColor.Tile) { cardsAreOtherColor = (to.getLastCard()._color == Card.cardColor.Pike || to.getLastCard()._color == Card.cardColor.Clover); }
if (prevCard._color == Card.cardColor.Pike || prevCard._color == Card.cardColor.Clover) { cardsAreOtherColor = (to.getLastCard()._color == Card.cardColor.Heart || to.getLastCard()._color == Card.cardColor.Tile); } }
String color1, color2; color1 = color2 = "";
switch(from._cards.get(i)._color){ case Heart: color1 = "Heart"; break; case Tile: color1 = "Tile"; break; case Pike: color1 = "Pike"; break; case Clover: color1 = "Clover"; break; }
switch(to.getLastCard()._color){ case Heart: color2 = "Heart"; break; case Tile: color2 = "Tile"; break; case Pike: color2 = "Pike"; break; case Clover: color2 = "Clover"; break; }
if( from._cards.get(i)._isOpen && !prevCardIsOpen && to.cardIsAcceptable(from._cards.get(i))){ System.out.println("move the cards from Tableau to Tableau1"); System.out.println(from._cards.get(i)._value + color1 + from._id + " to " + to.getLastCard()._value + color2 + to._id); return true; }
if(prevCardIsOpen && cardsAreEqual && cardsAreOtherColor && to.cardIsAcceptable(from._cards.get(i))){ System.out.println("move the cards from Tableau to Tableau2"); System.out.println(from._cards.get(i)._value + color1 + from._id + " to " + to.getLastCard()._value + color2 + to._id); return true; } } } }
//editteraz chyba działa, szrobiłem parę różnych testów i zawsze pokazuje poprawnie ruchy |
|
skovv |
» 2026-01-10 23:00:14 Daj cały kod rozgrywki, jak definiujesz karty itp itd |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-11 12:46:28 Sporo jest tego kodu - ponad 1500 linii. I to w różnych plikach. Łatwiej chyba było, by podać link do repo i wyjaśnić co gdzie i jak. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-11 14:20:34 |
|
skovv |
» 2026-01-11 18:09:53 Ehh za dużo tego, sory ale nie chce mi się aż tak przebijać :D No ogółem tak:
bool ruchmozliwy = false; for(kupka : wszystkie kupki) { if(ta kupka nie jest pusta oraz ta karta nie jest niemozliwa do przeniesienia) { for(innakupka : wszystkiekupki) { if(innakupka != kupka && innakupka.ostatniakarta != pusta) { if(kupka.ostatniakarta == innakupka.ostatniakarta-1) { ruchmozliwy = true; break; }// bo jopek idzie na dame itp nie? czyli karta ktora rzucamy ma byc mniejsza o 1 nie? } } } } return ruchmozliwy; |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-11 19:37:23 Mniej więcej tak zrobiłem i dodałem warunki na otwartą/zamkniętą kartę |
|
| 1 « 2 » 3 |