Mexico Spel - Wetenschappelijk Onderbouwde AI
Versie 2.1 | 4 December 2025
Vanaf versie 2.0 zijn alle 8 psychologische principes volledig geïmplementeerd in game_vs_computer.js. De AI simuleert nu complex menselijk gedrag met realistische fouten en emotionele reacties. Versie 2.1 voegt probabilistische triggers toe - psychologische effecten treden op met 60-80% kans, voor meer onvoorspelbaarheid.
Deze documentatie beschrijft de psychologische AI voor ons Mexico dobbelspel (1v1 tegen computer). De AI is ontworpen om menselijk gedrag te simuleren op basis van wetenschappelijk onderzoek.
"Een perfecte AI is saai. Een menselijke AI maakt 'intelligente fouten' - psychologische biases, niet computational errors."
Belangrijkste wetenschappelijke bevindingen die de AI vormgeven:
Kahneman & Tversky (1979), Prospect Theory
Spelers worden RISICOVOLLER (loss-seeking)
Spelers worden VOORZICHTIGER (risk-averse)
Speler achter met 2 levens → neemt grotere risico's Speler voor met 2 levens → speelt veiliger, beschermt lead
PLOS One (2022), "Conceptualising Tilt in Sports Betting"
Computer verliest 3 rondes achter elkaar → TILT mode: threshold -10, bluffChance × 1.5 → Speelt slechter, meer risico, minder rationeel → Na 2-3 rondes: herstel naar normale state
Nature (2024), Tversky & Kahneman
"Ik heb 5x slecht gegooid, nu moet ik wel goed gooien"
"Ik ben on fire, dit gaat gewoon door"
PLOS One (2016), "To Bluff like a Man"
Code Locatie: game_vs_computer.js, regels 9-31
| Personality | Worp 1 | Worp 2 | Worp 3 | Bluff% | Psychologie |
|---|---|---|---|---|---|
| Voorzichtig (30%) | ≥61 | ≥61 | ≥31 | 5% | Geen |
| Rationeel (50%) | ≥61 | ≥65 | ≥22 | 10% | -3 pts |
| Agressief (20%) | ≥54 | ≥54 | ≥31 | 20% | -5 pts |
const AI_PERSONALITIES = {
SCARED: {
name: 'Voorzichtig',
thresholds: { 1: 61, 2: 61, 3: 31 },
bluffChance: 0.05,
psychologyFactor: 0,
description: 'Speelt veilig, wil niet verliezen'
},
RATIONAL: {
name: 'Rationeel',
thresholds: { 1: 61, 2: 65, 3: 22 },
bluffChance: 0.10,
psychologyFactor: 3,
description: 'Speelt volgens kansberekening'
},
AGGRESSIVE: {
name: 'Agressief',
thresholds: { 1: 54, 2: 54, 3: 31 },
bluffChance: 0.20,
psychologyFactor: 5,
description: 'Speelt riskant, neemt risico'
}
};
Code Locatie: game_vs_computer.js, regels 35-60
gameState.voorgooierPattern = []; // [false, true, false] = [open, blind, open]
// Recording pattern
if (gameState.playerToGoFirst === 'player' && !gameState.isFirstRound) {
gameState.voorgooierPattern.push(isBlind);
}
// Enforcing pattern
const throwIndex = computer.throwCount;
if (throwIndex < gameState.voorgooierPattern.length) {
const mustBeBlind = gameState.voorgooierPattern[throwIndex];
isBlind = mustBeBlind;
logToConsole(\`[REGEL] Computer MOET \${mustBeBlind ? 'BLIND' : 'OPEN'} gooien\`);
}
Code Locatie: game_vs_computer.js, regels 539-550
Speler gooit 2+ keer open, dan blind → Psychologisch signaal: waarschijnlijk lage score
"Waarom zou je blind gooien na meerdere open worpen? Meestal omdat je score laag is en je geen betere optie hebt."
// PSYCHOLOGY: Analyze player behavior
if (player.currentThrow !== null && player.isBlind && player.throwCount >= 2) {
const adjustment = personality.psychologyFactor;
if (adjustment > 0) {
const oldThreshold = threshold;
threshold = Math.max(threshold - adjustment, 43);
logToConsole(\`[AI Psychologie] Speler gooide \${player.throwCount}× en toen blind\`);
logToConsole(\`[AI Psychologie] Threshold aangepast: \${oldThreshold} → \${threshold}\`);
}
}
Code Locatie: game_vs_computer.js, regels 526-532
• Niet té laag (ongeloofwaardig) en niet rationeel hoog
• 52 op worp 2 = 67% kans om te verliezen (normaal: gooi door)
// BLUFF OPTION
if (Math.random() < personality.bluffChance) {
if (computer.currentThrow >= 43 && computer.currentThrow <= 62) {
logToConsole(\`[AI BLUF] Stop bij \${computer.displayThrow}\`);
return false;
}
}
Elk principe heeft een probabilistische trigger - ze treden op met 60-80% kans, voor realistische onvoorspelbaarheid.
adjustment = min(livesAdvantage × 3, 10) × (0.8 tot 1.2)// Voorbeeld: Computer +2 levens voorsprong → 80% kans: Threshold +5 tot +7 punten (voorzichtiger) → 20% kans: Geen effect (speelt normaal)
// Voorbeeld: 3 verliezen op rij → Tilt level 2 (moderate) → Threshold -10, bluffChance ×1.4 → Speelt emotioneel, meer risico's
adjustment = min(recentBadThrows × 2, 8) × (0.7 tot 1.3)// Voorbeeld: 4 slechte worpen achter elkaar → 65% kans: Threshold -5 tot -10 punten → 35% kans: Geen effect
adjustment = min(consecutiveGood × 2, 8) × (0.75 tot 1.25)// Voorbeeld: 4 goede worpen achter elkaar → 70% kans: Threshold -6 tot -10 punten → 30% kans: Geen effect
// Voorbeeld: Net vorige ronde gewonnen → 75% kans: Threshold -5 punten (risicovoller) → 25% kans: Geen effect
// Voorbeeld: Eerste worp = 65 (goed) → 60% kans: Threshold -3 punten (verwacht meer goede worpen) → 40% kans: Geen effect
// Voorbeeld: 3 recente wins, threshold = 60 → 70% kans: confidenceMultiplier = 1.09, threshold = 65 → 30% kans: Geen effect
// Voorbeeld: Current throw = 58, threshold = 61
→ 40% kans: Stopt bij 58 ("good enough")
→ 60% kans: Gooit door (rationeel)
In versie 2.1 hebben we probabilistische triggers toegevoegd aan alle psychologische principes. Dit zorgt ervoor dat de AI zich meer als een echte mens gedraagt:
"Mensen zijn niet consistent - ze reageren soms wel en soms niet op dezelfde situatie. Dat is wat deze AI nu simuleert."