Datagurka 0.3

From Datagurka
Jump to: navigation, search

Tanken bakom förslaget Datagurka 0.3

Att man ska spela sitt största kort först om det är möjligt tills man har lägsta kort som sist ifall man inte behöver använda det i ett "nödläge". Exempelvis om man har ett Ess och en hjärter två ska man sätta fram Ess eftersom att det är ett betydligt högre värde. Detta görs eftersom att själva spelet går ut på att ens sista kort alltså det sista kortet man har kvar ska vara lägre än motståndarnas sista kort kvar. Vinnaren är den med lägst kort i dess värde.

Förbättringar Datagurka 0.3

Det är något fel med koden i Datagurkan 0.3 eftersom en kan skriva in vilka siffror/bokstäver som helst när Datagurkan frågar efter värdet på ditt kort. Det löste sig inte med Input Control. Datagurkan ska egentligen inte kunna ha kort under värdet 2 eller över värdet 14 eftersom att det inte finns kort ett eller kort över 14 i kortleken vilket gör att det inte stämmer i detta fallet.

Pseudokod Datagurka 0.3

Test av Datagurka 0.3

Om koden till Datagurka 0.3 inte gör samma sak som pseudokoden till Datagurka 0.3 så är det antingen en bugg i koden eller ett fel i pseudokoden. Det kan vara fel i pseudokoden ifall instruktionerna inte går att följa då de inte är tillräckligt detaljerade eller om de hoppar över viktiga steg. För att testa kan man kopiera in koden nedan på en ny labbet-sida eller klicka på rubriken nedan: Datagurka_0.3#Kod_Datagurka_0.3.


Efter några gånger av testande så upptäckte jag att datagurkan 0.3 ibland ger sig själv ett extra kort med samma värde som ett kort i sin hand för att replikera detta bug behöver du ge data gurkan korten [6,6,9,10,10] och din hand ska ha [8,2,4,4,5]. Börja att spela 8 och då kommer datagurkan att spela 6:an sedan ska du spela 2:an och sedan kommer den att spela en till 6:a efter det ska du spela 4:an och då kommer den att spela 9:an och sen ska du spela din sista 4:an och då kommer den att spela en till 6:a som dun inte har lagt till och då kommer den att ha kvar två stycken 10:or kvar i sin hand.

Förklaring av koden

I loop 1 skapas det 5 instanser av array:n Kort som sedan får en variabel kallad .value som lagrar kortens värde.
Efter det sorteras korten baserat på värdena högst till lägst.
I loop 2 visas korten i ordning på canvasen.
I loop 3 frågar den först vilket ditt första kort är och sedan kör den funktionen "game" som bestämmer vilket kort DG ska spela och 
frågar om ditt kort igen. 

Kod Datagurka 0.3

<meta charset="utf-8" />

<script src="https://koda.nu/simple.js">

 var kort = []; 

var giv = []; var y = 5;

for (var i=1; i<6; i++){

kort[i] = new Kort(); kort[i].setup();

  giv[i-1] = new Kort();
}
kort.sort(function(b, a){return a.value - b.value}); 
for (var i=0; i<5; i++){
  kort[i].visualize();  
}
for (var i=0; i<4; i++){
  if (i == 0){
      giv[i].value = prompt ("Vilket värde har det spelade kortet till höger om datagurkan?");
    }
  kort[i].game(); 
  
}

fill( "blue" );

text(202, 300, 50, "Finished", "black");
 text(140, 370, 30, "Thanks for playing!", "black");
  for (var i=0; i<5; i++){
  kort[i].visualize(); 
  }
 
function Kort(){
  this.setup = function(){

this.value = prompt ("Vilket värde har kort nummer " + i + "?" );

  }
  this.visualize = function() {
    x = i * 20 + 20;
 		text (x, 100, 20, this.value); 
  }
  this.play = function(){
      giv[i+1].value = prompt ("Varv " + (i+1) + " spelar datagurkan ett kort med värdet " + this.value + ".\n\nVilket värde har det spelade kortet till höger om datagurkan i varv " + (i+2) + "?");
      
  }
  this.game = function(){
   if (this.value > giv[i].value){
     this.play();
   }
    if (this.value <= giv[i].value){       
     j = y - 1; 
     x = i * 20;

text(x, 200, 30, kort[j].value, "black");

	   y = y - 1;
     kort[j].play();
    }   	 
}

} </script>