";
//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; a
besteScore) {
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();