Ik snap helemaal niets van de rating en de wijzigingen daarin. Hoe zit dat?
De rating wordt bepaald als de som van het Wij -/- Zij puntenverschil dat jij hebt weten te behalen minus het Wij -/- Zij verschil dat de AI met dezelfde kaarten heeft weten te behalen over de laatste 150 handjes + 5000. De rating van de AI is daarmee per definitie precies 5000.

Voorbeeld: handje 140, jouw rating was 5500
Jij speelt : 20 – 142 (wij – zij = -122)
AI speelt : 40 – 122 (wij – zij = -82)

In dit geval gaat jouw rating met -122 – -82 = -40 punten omlaag en wordt 5.460

Na 150 handjes wordt het iets lastiger: bij handje 151+ gaat eerst 1/150 van het totaal scoreverschil af om vervolgens het verschil uit handje 151 er bij op te tellen.

Voorbeeld: handje 151, jouw rating was 5500
Jij speelt : 20 – 142 (wij – zij = -122)
AI speelt : 40 – 122 (wij – zij = -82)

Eerst gaat er 500/150 af van de rating (5500-3 = 5497) om er vervolgens nog eens 40 van af te halen: de rating wordt dan dus 5.457. Als je dus gelijk aan de AI blijft spelen zal jouw rating langzaam maar zeker weer richting de 5000 zakken (of stijgen als je achter stond).

Het kan zo zijn dat je bij nat spelen toch in rating achteruit gaat. Je had dan of meer roem kunnen halen of je had een rating boven de 5.000 en de computer wist met exact dezelfde uitslag de tegenstander nat te spelen en je had al meer dan 150 handjes gespeeld die meetellen voor de rating.

Via het detail scherm dat je aan het einde van een ronde kan oproepen kan je tot in detail zien wat de computer gespeeld zou hebben.

Ik heb Kraken of de Trainer gekocht, maar er wordt niets geactiveerd!
Dat klopt, zodra je kraken hebt gekocht kan je zelf in de instellingen van de App de Kraken modus (of de Trainer) activeren. Open de instellingen en scroll een stukje naar beneden om de Kraken sectie te vinden.
Waarom komt de AI nooit uit met de troef boer terwijl hij die wel heeft ?
Mijn vrouw was gewend te spelen met de kleintje boer conventie, i.e. een afspraak tussen twee partners. Het hecht een conventionele betekenis aan de uitkomst van de eerste slag als die kaart géén troef is. Als men uitkomt met een niet-troef kleintje (7, 8 of 9) dan wil dit aan de maat zeggen: ‘Maat, ik heb de Boer, probeer zo snel mogelijk aan slag te komen en kom daarna uit met een liefst roemgevoelige troef (Vrouw, 10) voor mijn Boer’. Het voordeel van deze conventie is, dat men met een troefbezit van Boer, Heer toch de nel kan vangen, als die rechts van de speler zit en zijn maat de 10 kan voorspelen. Men maakt hier gebruik van de regel dat overtroeven verplicht is en men vermijdt het risico dat een uitkomst met de Boer alleen de 7, 8 en de Vrouw oplevert. De conventie kent ook risico’s; als de maat niet aan slag kan komen, omdat hij geen bijkaarten heeft, kan de tegenpartij op een gegeven moment slagen gaan introeven, waar zij eigenlijk ‘geen recht op hadden’ als meteen troef zou worden getrokken. Het andere risico is, dat als men de Boer niet heeft en niet meteen troef wil trekken, men moet uitkomen met een plaatje in een niet troefkleur (Aas, 10, Heer, Vrouw of Boer) en er een ‘gevaarlijke hand’-situatie ontstaat.

In de eerst volgende versie zal deze conventie uitgeschakeld kunnen worden (dan speelt de AI deze conventie niet meer en zal hij uitkomen door de speler ook niet alszodanig interpreteren).

Waarom komt de AI bij de eerste slag uit met een nel/10/vrouw terwijl hij de boer niet heeft ?
Dit doet de AI alleen als hij moet uitkomen terwijl zijn maat speelt. Hij neemt aan dat zijn maat de boer wel moet hebben en zal roemgevoelig uitkomen.
Waarom reageert de AI niet op mijn seinen ?
Moeilijk te zeggen. Wat makkelijker te beantwoorden is, zijn de seinen waar de AI op reageert (dit doe ik nu uit m’n hoofd, dus waarschijnlijk ben ik niet compleet):

  • afseinen met een enkele kaart
  • afseinen met twee kaarten (de AI maakt hier een random keuze in, als hij die optie heeft)
  • opseinen (bijv. plaatje opgooien op een slag van maat)
  • Aas op een slag van zijn maat gooien houdt in dat ie de 10  van die kleur heeft
  • indien er niet gespeeld wordt door de bot en zijn maat en de bot moet uitkomen, dan zal hij uitkomen in een singleton of in een kaart van drie of meer. Het is dan altijd de bedoeling dat zijn maat de slag pakt en terug komt in die kleur (om zo slagen te kunnen “stelen”)
  • Kleintje Boer (zie ook hier boven)
  • Speel de AI en komt hij in de eerste slag uit met een Aas, dan heeft hij de nel maar niet de troefboer.
  • Komt de AI uit met een 10 terwijl de Aas nog niet gespeeld is, dan heeft hij de Aas naar alle waarschijnlijkheid   ook.

Tegenkleur seinen doet de AI niet en zal hij ook niet herkennen.

Waarom krijg ik geen 100 roem bij een tegenpit ?
Daarom niet. Tegenpit is gewoon NAT en bij deze Klaverjas app krijg je daar geen extra punten voor. Zie ook artikel 17  van het KBN spelreglement:

Artikel 17
Uitsluitend de spelende partij kan in aanmerking komen voor een “mars”, “pit”, “pan”, (162 punten + 100 roem) wegens het incasseren van alle acht slagen.

Ik had vier boeren in een slag en ik kreeg maar 100 roem ! Dat klopt niet, ik had 400 roem moeten krijgen!
In sommige gebieden wel, maar in deze App krijg je bij “four of a kind” slechts 100 roem ( en een eervolle vermelding in Game Center).
Waarom kan ik geen roem maken ?
Geen idee. Kan namelijk prima. De AI is echter wel zo geprogrammeerd dat hij roemkansen voor slagen die (zeker of waarschijnlijk) aan de tegenstander zullen zijn zo klein mogelijk houdt.
Waarom kan ik geen PIT maken ?
Kan ook prima. Wellicht heb je hele slechte kaarten, gewoon pech of kan je niet klaverjassen. Het kost ook ervaren klaverjassers  soms toch echt enige tijd om een pit te spelen met deze App, maar het kan zeker wel.
Ik krijg de indruk dat de App vals speelt. Klopt dat ?
Absoluut niet. De App speelt niet vals. Iedere beslissing die de AI neemt is volledig gebaseerd op het eerdere gameverloop, de seinen van zijn maat, de seinen die de tegenstanders elkaar hebben gegeven en de kaarten nog in handen en in het spel.

Er wordt niet gespiekt en ook het schudden van de kaarten gaat volledig random:

for (id anObject in kaartSpel)
{
NSUInteger randomPos = arc4random()%([tmpArray count]+1);
[tmpArray insertObject:anObject atIndex:randomPos];
}

Realiseer je ook dat ik er geen enkel belang bij heb om de app van jou te laten winnen of om jouw maat express dommer te maken. Ik heb liever tevreden klanten die een goede klaverjaspartij kunnen spelen dan gefrustreerde klanten omdat ik ze moedwillig voor de gek houd. Het enige verschil tussen WIJ en ZIJ dat ben echt JIJ.

Waarom is mijn maat dommer dan de tegenstanders ?
Het mooie van object georiënteerd programmeren is dat je slecht één keer een object hoeft te programmeren en het vervolgens meerdere keren kan initiëren.  Zo ook in deze App. De drie computer gestuurde spelers zijn alle drie instanties van exact hetzelfde object. Dat houdt in dat jouw maat net zo slim of dom is als jouw tegenstanders. Dat de tegenstanders slimmer over komen heeft wellicht te maken met het feit dat zij precies weten hoe en wat geseind wordt en dat ze in beginsel geen fouten maken met tellen van kaarten. Onbedoeld seinen naar de AI kan hele rare uitkomsten tot gevolg hebben aangezien de AI geen rekening houdt met domme menselijke spelers… een sein zal dus altijd opgevolgd worden ook al zou een mens direct zien dat dat niet verstandig zou zijn.
Wanneer komt functionaliteit X nou eindelijk eens in het programma ?
Uiteraard sta ik open voor leuke suggesties om de App beter te maken. Veel van de suggesties die ik heb ontvangen hebben hun weg inmiddels ook al gevonden naar de App (nieuwe achtergronden, game center, geluiden, instelbare tijd na een slag, etc.). Heb je een goed idee, laat het mij dan weten.

 

Jouw vraag hier ….

Heb je ook een vraag, stel hem dan hier. Als je antwoord wilt, vergeet dan niet je e-mail adres te vermelden.