31 enero 2015
prova
/********************************************************
* Runs the Monty Hall problem continually,
* graphing the results of switching or not switching.
*********************************************************/
var sky = getImage("space/background");
var grass = getImage("cute/GrassBlock");
var MontyHall = getImage("cute/CharacterBoy");
var closedChest = getImage("cute/ChestClosed");
var openedChest = getImage("cute/ChestOpen");
var ladybird = getImage("cute/EnemyBug");
var gem = getImage("cute/GemOrange");
var myFont = createFont("Times", 20);
var shading = getImage("cute/ShadowSouth");
var chests;
var chestY = 250;
var chestW = 75;
var chestH = 125;
var prizeChest;
var chestSelected, chestOpened;
var win, choice;
var results = {
stick: { win: 0, lose: 0, total: 0 },
switc: { win: 0, lose: 0, total: 0 }
};
var mode;
var switchButton, stickButton;
var Chest = function(x, y, contents) {
this.x = x;
this.opened = false;
this.selected = false;
this.contents = contents;
this.draw = function() {
if (this.selected) {
noStroke();
fill(255, 0, 0, 120);
rect(x-5, y+31, chestW+10, chestH-25, 10);
}
if (this.opened) {
image(openedChest, x, y, chestW, chestH);
translate(x - 16,y - 5);
rotate(-20);
image(this.contents, 0, 0, chestW, chestH);
resetMatrix();
} else {
image(closedChest, x, y, chestW, chestH);
}
};
};
var intialiseChests = function() {
var chests = [];
for (var c=0; c<3 data-blogger-escaped-20="" data-blogger-escaped-3="" data-blogger-escaped-40="" data-blogger-escaped-baseline="" data-blogger-escaped-button="function(label)" data-blogger-escaped-c="" data-blogger-escaped-chest="" data-blogger-escaped-chests.push="" data-blogger-escaped-chests="intialiseChests();" data-blogger-escaped-chesty="" data-blogger-escaped-else="" data-blogger-escaped-gem="" data-blogger-escaped-if="" data-blogger-escaped-ladybird="" data-blogger-escaped-line="" data-blogger-escaped-mode="Choice1" data-blogger-escaped-mousex="" data-blogger-escaped-newgame="" data-blogger-escaped-prizechest="floor(random(0," data-blogger-escaped-return="" data-blogger-escaped-stroke="" data-blogger-escaped-strokeweight="" data-blogger-escaped-text="" data-blogger-escaped-textalign="" data-blogger-escaped-textwidth="" data-blogger-escaped-this.draw="function(x," data-blogger-escaped-this.ismouseover="function()" data-blogger-escaped-this.label="" data-blogger-escaped-this.mouseover="" data-blogger-escaped-this.x1="" data-blogger-escaped-this.x2="" data-blogger-escaped-this.y="" data-blogger-escaped-var="" data-blogger-escaped-y="">= this.x1 && mouseX <= this.x2 &&
mouseY >= this.y-20 && mouseY <= this.y) {
this.mouseOver = true;
} else {
this.mouseOver = false;
}
};
};
var restartButton = new Button("JUGAR +");
var speechBubble1 = function(x, y) {
textAlign(LEFT, BASELINE);
text("Una porta conté un cotxe!", x, y+22);
text("A les altres dues hi ha una cabra...", x, y+46);
text("Escull una porta.", x, y+70);};
var speechBubble2 = function(x, y) {
textAlign(LEFT, BASELINE);
var txt = "Has escollit la porta "+(chestSelected+1)+".";
text(txt, x, y+22);
text("La porta " + (chestOpened+1) + " té una cabra.", x, y+46);
txt = "Vols ";
text(txt, x, y+70);
x +=textWidth(txt);
stickButton.draw(x, y + 70);
txt = " o ";
x = stickButton.x2;
text(txt, x, y+70);
x +=textWidth(txt);
switchButton.draw(x, y + 70);
text("?", switchButton.x2, y+70);
};
var speechBubble3 = function(x, y) {
textFont(myFont, 22);
textAlign(CENTER, BASELINE);
if (win) {
text("Has guanyat el cotxe!\nEnhorabona!", x, y+24);
} else {
text("T'endús la cabra...!\nA munyir-la!", x, y+24);
}
restartButton.draw(x-50, y + 74);
};
var speechBubble = function() {
var x = 48;
var y = 185;
var width = 340;
var height = 82;
var tx = 318;
var ty = y + height - 2;
fill(240, 240, 255);
stroke(220, 220, 230);
strokeWeight(3);
rect(x, y, width, height, 12);
noStroke();
triangle(tx, ty, tx+18, ty+30, tx+36, ty);
stroke(220, 220, 230);
line(tx, ty+2, tx+18, ty+30);
line(tx+36, ty+2, tx+18, ty+30);
textFont(myFont, 20);
fill(40, 40, 40);
if (mode === "Choice1") {
speechBubble1(x + 8, y);
} else if (mode === "Choice2") {
speechBubble2(x + 8, y);
} else if (mode === "Reveal") {
speechBubble3(x + width/2, y);
}
};
var drawBar = function(x, y, result) {
if (result.total) {
stroke(0, 0, 0);
strokeWeight(1);
fill(191, 17, 17);
rect(x, y, 252, 36);
var d = 251 * result.win / result.total;
if (result.win) {
fill(16, 163, 16);
noStroke();
rect(x+1, y+1, d, 35);
}
fill(250, 250, 250);
textAlign(CENTER, CENTER);
textSize(16);
if (result.win) {
text("Guanyades: " + result.win, x + d/2, y+18);
}
if (result.lose) {
text("Perdudes: " + result.lose, x + (d+250)/2, y+18);
}
}
};
var drawResults = function() {
textSize(20);
textAlign(LEFT, BASELINE);
fill(255, 200, 0);
text("Mantenir: " + results.stick.total, 20, 40);
text("Canviar: " + results.switc.total, 20, 90);
drawBar(110, 16, results.stick);
drawBar(110, 66, results.switc);
};
var draw = function() {
image(sky, 0, 0);
// Grass
for (var g=0; g<8 data-blogger-escaped--="" data-blogger-escaped-1.1="" data-blogger-escaped-196="" data-blogger-escaped-270="" data-blogger-escaped-325="" data-blogger-escaped-350="" data-blogger-escaped-3="" data-blogger-escaped-50="" data-blogger-escaped-a="" data-blogger-escaped-and="" data-blogger-escaped-button="" data-blogger-escaped-c="" data-blogger-escaped-chest="" data-blogger-escaped-chestopened="" data-blogger-escaped-chests="" data-blogger-escaped-chestselected="chest;" data-blogger-escaped-choice="" data-blogger-escaped-choosechest="function(chest)" data-blogger-escaped-clickchest="function()" data-blogger-escaped-draw="" data-blogger-escaped-drawresults="" data-blogger-escaped-else="" data-blogger-escaped-for="" data-blogger-escaped-g="" data-blogger-escaped-grass="" data-blogger-escaped-if="" data-blogger-escaped-image="" data-blogger-escaped-initial="" data-blogger-escaped-isn="" data-blogger-escaped-mode="Choice2" data-blogger-escaped-mousey="" data-blogger-escaped-not="" data-blogger-escaped-of="" data-blogger-escaped-one="" data-blogger-escaped-ontyhall="" data-blogger-escaped-open="" data-blogger-escaped-opened="true;" data-blogger-escaped-other="" data-blogger-escaped-prize="" data-blogger-escaped-prizechest="" data-blogger-escaped-rand="" data-blogger-escaped-random="" data-blogger-escaped-resetmatrix="" data-blogger-escaped-scale="" data-blogger-escaped-selected="" data-blogger-escaped-speechbubble="" data-blogger-escaped-stickbutton="new" data-blogger-escaped-switchbutton="new" data-blogger-escaped-t="" data-blogger-escaped-than="" data-blogger-escaped-that="" data-blogger-escaped-the="" data-blogger-escaped-var="" data-blogger-escaped-without=""> chestY && mouseY < chestY + chestH) {
for (var c=0; c<3 data-blogger-escaped-c="" data-blogger-escaped-if="" data-blogger-escaped-mousex=""> chests[c].x && mouseX < chests[c].x + chestW) {
chooseChest(c);
}
}
}
};
var revealChest = function() {
chests[chestSelected].opened = true;
results[choice].total++;
if (chestSelected === prizeChest) {
win = true;
results[choice].win++;
} else {
win = false;
results[choice].lose++;
}
mode = 'Reveal';
};
var mouseClicked = function() {
if (mode === 'Choice1') {
clickChest();
} else if (mode === 'Choice2') {
if (stickButton.mouseOver) {
choice = 'stick';
revealChest();
} else if (switchButton.mouseOver) {
choice = 'switc';
chests[chestSelected].selected = false;
chestSelected = 3 - chestSelected - chestOpened;
chests[chestSelected].selected = true;
revealChest();
}
} else if (mode === 'Reveal' && restartButton.mouseOver){
newGame();
}
};
var mouseMoved = function() {
if (mode === 'Choice2') {
stickButton.isMouseOver();
switchButton.isMouseOver();
} else if (mode === 'Reveal') {
restartButton.isMouseOver();
}
};
13 enero 2015
Suscribirse a:
Entradas (Atom)