document.write ("
\r\n"); function shuffle(array) { let counter = array.length; // While there are elements in the array while (counter > 0) { // Pick a random index let index = Math.floor(Math.random() * counter); // Decrease counter by 1 counter--; // And swap the last element with it let temp = array[counter]; array[counter] = array[index]; array[index] = temp; } return array; } function trekkKort() { return kort[kortTeller++]; } function omstokk() { shuffle(kort); kortTeller=0; } function giKortSpiller(spiller,antall) { for (var a=0; a"; //t+="Trumf: "+trumf+ "

"; //t+=""; //t+=""; t=t+lagKortboks(3)+lagKortboks(2)+lagKortboks(1)+lagKortboks(0)+''; //t+="
"; if (spillStatus==STATUS_OMGANG_FERDIG) t+="

"; if (totalpoeng[0].length>0) {; t+="
Poeng
"; var sum= new Array(); t+=""; t+=""; t+=""; for (var a=0; a<4; a++) {sum[a]=0;t+=""; } t+=""; for (var a=0; a"; for (var b=0; b<4;b++) { t+=""; sum[b]+=totalpoeng[b][a]; } t+=""; } t+=""; for (var b=0; b<4;b++) t+=""; t+=""; t+="
"; t+="Omgang";if (a>0)t+="";else t+="Meg";t+="
"+totalpoeng[b][a]+"
Sum"+sum[b]+"
"; } } bord.innerHTML=t; } function lagKortboks (spiller){ // transform: translate(10px); bakgrunn=""; if (spiller==spillerTur && spillStatus==STATUS_STIKK_FERDIG) bakgrunn="background: #B7C4CC;"; var t="
"; //var t=""; t=t+"
"; for (var a=0; a"; if (spiller==0 || 0==1)t+="";else t+=""; if (spiller==0 && spillerTur==spiller) t+=""; } //t+=""; t+="
"; //t+=""; t+="
"; if (spiller>0) t+=""; else if (spiller==spillerTur && spiller==0 && spillStatus==STATUS_STIKK) t+="Meg"; else t+="Meg"; t+="
"; //if (antallStikk[spiller]>0) t+=antallStikk[spiller]+ " stikk"; //if (stikkpoeng[spiller]!=0) t+=stikkpoeng[spiller]+ " stikkpoeng"; if (spiller==spillerTur && spiller==0 && spillStatus==STATUS_STIKK) t+= "
Din tur"; t+="
"; //t+=""; t+="
"; if (spillStatus==STATUS_STIKK_FERDIG_VIS) { if (spiller==stikkVinner()) for (var a=3; a>=0; a--){if (a==3) klasse="sskort"; else klasse="sskorthand";t+=""; } } else { if (spiltKort[spiller]!=null) t+=""; } t+="
"; t+="
"; //t+=""; return t; } function spillKort(a) { if (!lovligTrekk(spillerKort[spillerTur][a],spillerTur)) { alert("Du kan ikke spille det kortet."); return; } spiltKort[spillerTur]= spillerKort[spillerTur][a]; var index = spillerKort[spillerTur].indexOf(spiltKort[spillerTur]); // if (index > -1) { spillerKort[spillerTur].splice(index, 1); // } spillerTur++; if (spillerTur>3) spillerTur=0; if (spillerTur==stikkStarter) { spillerTur=stikkVinner(); spillStatus=STATUS_STIKK_FERDIG; oppdaterBord(); setTimeout(stikkFerdig,3000); } else { if (spillerTur>0) setTimeout(datatrekk,1000); } oppdaterBord(); } function stikkFerdig() { if (spillStatus==STATUS_STIKK_FERDIG){ spillStatus=STATUS_STIKK_FERDIG_VIS; oppdaterBord(); setTimeout(stikkFerdig,3000); return; } var vinner = stikkVinner(); stikkpoeng[vinner]+=regnUtStikkpoeng(); spiltKort = new Array(); spillerTur=vinner; stikkStarter=vinner; antallStikk[vinner]++; spillStatus=STATUS_STIKK; oppdaterBord(); if (antallKort(0)<=0) { if (antallStikk[vinner]==13) stikkpoeng[vinner]=0; spillStatus=STATUS_OMGANG_FERDIG; var nr= totalpoeng[0].length; totalpoeng[0][nr]=stikkpoeng[0];totalpoeng[1][nr]=stikkpoeng[1];totalpoeng[2][nr]=stikkpoeng[2];totalpoeng[3][nr]=stikkpoeng[3]; oppdaterBord(); return; } if (stikkStarter>0) setTimeout (datatrekk,1000); } function datatrekk() { var besteScore=-9999; var besteTrekk=-1; for (var a=0; abesteScore) { besteScore=score; besteTrekk=a; } } } if (besteTrekk==-1) alert ("Fant ikke trekk "+besteScore+ " "+ spillerTur+ " "+ score); spillKort(besteTrekk); } function trekkScore(k,spiller){ var verdi=0; var harSparDame=0, antallSpar=0; var sparDameIgjen=kortIgjen (FARGE_SPAR,12,12); var ruterKnektIgjen = kortIgjen (FARGE_RUTER,11,11); var hjerterIgjen = kortIgjen (FARGE_HJERTER,0,15); //Grunnleggende kortverdier if (sparDameIgjen*10+hjerterIgjen>5) verdi=verdi+k.verdi; else verdi= verdi-k.verdi; if (ruterKnektIgjen && k.farge==FARGE_RUTER && k.verdi>11) verdi-=k.verdi*2; if (sparDameIgjen && k.farge==FARGE_SPAR && k.verdi>12) verdi+=k.verdi*2; if (k.farge==FARGE_SPAR && k.verdi<12 && kortIgjenSpiller (FARGE_SPAR,12,14,spiller)>0 && kortIgjenSpiller (FARGE_SPAR,1,11,spiller)<4) verdi-=25; verdi = verdi+ kortIgjenAndre (k.farge,0,15,spiller)/3-kortIgjenSpiller (k.farge,0,15,spiller); var vinner=0; if (stikkVinner(k)==-1) vinner=1; if (kortIgjenAndre(k.farge,0,k.verdi,spiller)4+sparDameIgjen*2+hjerterIgjen/3) vinner=0; if (vinner==1) { //Man kan vinne stikket verdi=verdi-regnUtStikkpoeng()-k.verdipoeng; if (k.farge==FARGE_RUTER && kortIgjenAndre (k.farge,11,11,spiller)==1 && k.verdi>11 && regnUtStikkpoeng()<30 && Math.random()<0.5 && antallKortIgjenIStikket()>1 && antallKortIStikket()>0) { verdi+=500; // alert ("Ta den "+ verdi); } if (kortIgjenAndre(k.farge,0,15 ,spiller)<4-1) { verdi= verdi-sparDameIgjen*10-hjerterIgjen; } if (sparDameIgjen==1 && k.farge==FARGE_SPAR && k.verdi>12) verdi-=30*antallKortIgjenIStikket(); if (k.farge==FARGE_RUTER && k.verdi==11) { verdi=verdi-kortIgjenAndre (FARGE_RUTER,12,14,spiller)*antallKortIgjenIStikket()*30; // alert("knekt "+ verdi); } if (verdi<0 && kortIgjenAndre(k.farge,0,k.verdi,spiller)8) verdi+=k.verdi*10; if (antallKortIStikket()==4) { if (k.farge==FARGE_SPAR && k.verdi>12 && sparDameIgjen==1) verdi+=50; if (k.farge==FARGE_RUTER && k.verdi>11 && regnUtStikkpoeng()>=0 && ruterKnektIgjen==1 ) verdi-=25; } else { if (k.farge==FARGE_RUTER && k.verdi==11 && kortIgjen(FARGE_RUTER,12,14)-kortIgjenSpiller(FARGE_RUTER,12,14,spiller)>0) { verdi= verdi -200+antallKortIStikket()*2; //alert("Ikke knekt nå "+verdi); } if (k.farge==FARGE_SPAR && k.verdi>=12 && sparDameIgjen==1) verdi= verdi-60+antallKortIStikket()*2; if (ruterKnektIgjen==1 && k.farge==FARGE_RUTER&& k.verdi>11) verdi+=20; } if (kortIgjen(k.farge,0,15)==kortIgjenSpiller(k.farge,0,15,spiller)) { if (sparDameIgjen==1) verdi-=200; verdi-=hjerterIgjen*2; } if (kortIgjenAndre(k.farge,0,15,spiller)==0) verdi=verdi-sparDameIgjen*10-hjerterIgjen; } else { verdi+=k.verdi; if (k.farge==FARGE_RUTER && k.verdi==11) verdi-=200; if (k.farge==FARGE_RUTER && k.verdi>11 && ruterKnektIgjen==1) verdi-=100; if (k.farge==FARGE_HJERTER) verdi+=10; if (k.farge==FARGE_SPAR && k.verdi==12) verdi+=200; if (k.farge==FARGE_SPAR && k.verdi>12 && sparDameIgjen==1) verdi+=100; } if (isNaN(verdi)) alert("stopp1"); if (harSparDame==1 && k.farge==FARGE_SPAR) verdi= verdi -Math.max(0,5-antallSpar)*4; if (isNaN(verdi)) alert("stopp2"); // alert(k.fil + " " + verdi); //Vil beholde høye kort viss knekten er igjen mot slutten if (sparDameIgjen==0 && ruterKnektIgjen==1 && hjerterIgjen<6) verdi-=k.verdi*5; if (isNaN(verdi)) alert("stopp3"); //Fordel med å være renons if (sparDameIgjen==1 && kortIgjenSpiller(FARGE_SPAR,12,15,spiller)>0 || kortIgjenSpiller(FARGE_HJERTER,0,15,spiller)>0) { if (sparDameIgjen==0) verdi+=liteKortScore(spiller,FARGE_SPAR); verdi+=liteKortScore(spiller,FARGE_HJERTER); verdi+=liteKortScore(spiller,FARGE_RUTER); verdi+=liteKortScore(spiller,FARGE_KLOVER); } if (isNaN(verdi)) alert("stopp4"); if (sparDameIgjen==1 && k.farge==FARGE_SPAR && k.verdi<12) verdi=verdi+kortIgjenSpiller(FARGE_SPAR,0,11,spiller)-kortIgjenSpiller(FARGE_SPAR,13,14,spiller)*5; //alert(verdi); if (isNaN(verdi)) alert("stopp5"); return verdi+Math.random()*1; } function liteKortScore(spiller,farge){ return Math.pow(Math.max(0,antallKort(spiller)/4- kortIgjenSpiller(farge,0,15,spiller)),2)*5; } function stikkVinner(nyttKort) { var max=-1, nr=-1; if (typeof nyttKort !== 'undefined') { max=nyttKort.verdi; if (typeof spiltKort[stikkStarter] !== 'undefined') if (nyttKort.farge==spiltKort[stikkStarter].farge) max+=100; if (nyttKort.farge==trumf)max+=200; } for (var a=0; a<4; a++) { if (typeof spiltKort[a] !== 'undefined') { var verdi=spiltKort[a].verdi; if (spiltKort[a].farge==spiltKort[stikkStarter].farge)verdi+=100; if (spiltKort[a].farge==trumf)verdi+=200; if (verdi>max) { max=verdi; nr=a; } } } return nr; } /* function neste() { if (spillStatus==STATUS_INTRO){ omstokk(); spillStatus=STATUS_STIKK; oppdaterBord(); return; } if (spillStatus==0){ } } */ function regnUtStikkpoeng() { var sum=0; if (typeof spiltKort[0] !== 'undefined') sum+=spiltKort[0].verdipoeng;if (typeof spiltKort[1] !== 'undefined') sum+=spiltKort[1].verdipoeng;if (typeof spiltKort[2] !== 'undefined') sum+=spiltKort[2].verdipoeng;if (typeof spiltKort[3] !== 'undefined') sum+=spiltKort[3].verdipoeng;0; return sum; } function antallKortIStikket() { var sum=0; if (typeof spiltKort[0] !== 'undefined') sum++;if (typeof spiltKort[1] !== 'undefined') sum++;if (typeof spiltKort[2] !== 'undefined') sum++;if (typeof spiltKort[3] !== 'undefined') sum++; return sum; } function antallKortIgjenIStikket() { var sum=4;if (typeof spiltKort[0] !== 'undefined') sum--;if (typeof spiltKort[1] !== 'undefined') sum--;if (typeof spiltKort[2] !== 'undefined') sum--;if (typeof spiltKort[3] !== 'undefined') sum--; return sum; } function lovligTrekk(k, spiller){ if (spiller==stikkStarter) return true; if (k.farge==spiltKort[stikkStarter].farge) return true; for (var a=0; a=minVerdi && spillerKort[a][b].verdi<=maksVerdi) sum++; return sum; } function kortIgjenSpiller (farge, minVerdi, maksVerdi,spiller){ var sum=0; for (var b=0; b< antallKort(spiller);b++) if (spillerKort[spiller][b].farge==farge && spillerKort[spiller][b].verdi>=minVerdi && spillerKort[spiller][b].verdi<=maksVerdi) sum++; return sum; } function kortIgjenAndre (farge, minVerdi, maksVerdi,spiller){ return kortIgjen(farge,minVerdi,maksVerdi)-kortIgjenSpiller(farge,minVerdi,maksVerdi,spiller); } function nyOmgang() { spillerTur=totalpoeng[0].length % 4; stikkStarter=spillerTur; omstokk(); spiltKort = new Array(); antallStikk = new Array(); stikkpoeng = new Array(); spillerKort=new Array(); spillStatus=STATUS_STIKK; spillerKort[0]=new Array();giKortSpiller (0, 13);spillerKort[0].sort(function(a, b){return a.sortering == b.sortering? 0 : +(a.sortering > b.sortering) || -1; });antallStikk[0]=0;stikkpoeng[0]=0;spillerKort[1]=new Array();giKortSpiller (1, 13);spillerKort[1].sort(function(a, b){return a.sortering == b.sortering? 0 : +(a.sortering > b.sortering) || -1; });antallStikk[1]=0;stikkpoeng[1]=0;spillerKort[2]=new Array();giKortSpiller (2, 13);spillerKort[2].sort(function(a, b){return a.sortering == b.sortering? 0 : +(a.sortering > b.sortering) || -1; });antallStikk[2]=0;stikkpoeng[2]=0;spillerKort[3]=new Array();giKortSpiller (3, 13);spillerKort[3].sort(function(a, b){return a.sortering == b.sortering? 0 : +(a.sortering > b.sortering) || -1; });antallStikk[3]=0;stikkpoeng[3]=0;spillerKort[4]=new Array();giKortSpiller (4, 13);spillerKort[4].sort(function(a, b){return a.sortering == b.sortering? 0 : +(a.sortering > b.sortering) || -1; });antallStikk[4]=0;stikkpoeng[4]=0; oppdaterBord(); if (spillerTur>0) setTimeout(datatrekk,1000); } function leggTilAdvarsel() { window.addEventListener("beforeunload", function (e) { var confirmationMessage = 'Dette spillet har ingen lagre-funksjon. Hvis du forlater denne sida, så må du starte helt på nytt neste gang. Er du sikker på at du vil avbryte spillet?'; (e || window.event).returnValue = confirmationMessage; //Gecko + IE return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc. }); } var melding=""; var antKort=0; var kortTeller=0; var STATUS_INTRO=-1; var STATUS_STIKK=10; var STATUS_STIKK_FERDIG=20; var STATUS_STIKK_FERDIG_VIS=30; var STATUS_OMGANG_FERDIG=40; var FARGE_SPAR='spar'; var FARGE_HJERTER='hjerter'; var FARGE_RUTER='ruter'; var FARGE_KLOVER='kløver'; var trumf="";//spar"; var spillStatus=STATUS_INTRO; var spiltKort; var antallStikk; var stikkpoeng; var spillerKor; var totalpoeng = new Array(); var kort = new Array(); for (var a=1; a<=13; a++) { var verdi=a; if (verdi==1) verdi=14; var symbol=a; if (a==1) symbol="a"; if (a==11) symbol="j"; if (a==12) symbol="q"; if (a==13) symbol="k"; kort[antKort++]=lagKort(verdi,'s'+symbol,FARGE_SPAR); kort[antKort++]=lagKort(verdi,'h'+symbol,FARGE_HJERTER); kort[antKort++]=lagKort(verdi, 'k'+symbol,FARGE_KLOVER); kort[antKort++]=lagKort(verdi,'r'+symbol,FARGE_RUTER); } totalpoeng[0]=new Array();totalpoeng[1]=new Array();totalpoeng[2]=new Array();totalpoeng[3]=new Array();totalpoeng[4]=new Array(); oppdaterBord();