void setup(){ size(300,240); background(255); smooth(); noLoop(); } void l0(){ beginShape(); vertex(300,170); vertex(270,170); vertex(270,200); vertex(30,200); vertex(30,130); vertex(60,130); endShape();} void l1(){ line(300,170,240,170);} void l2(){ line(300,130,240,130);} void l3(){ line(300,90,240,90);} void l4(){ line(300,50,240,50);} void l5(){ beginShape(); vertex(300,50); vertex(270,50); vertex(270,20); vertex(30,20); vertex(30,90); vertex(60,90); endShape();} void l6(){ line(60,170,0,170);} void l7(){ line(60,50,0,50);} void l8(){ line(210,180,90,180);} void l9(){ line(210,160,90,160);} void l10(){ beginShape(); vertex(210,140); vertex(180,140); vertex(180,160); vertex(90,160); endShape();} void l11(){ beginShape(); vertex(210,80); vertex(150,80); vertex(150,140); vertex(90,140); endShape();} void l12(){ beginShape(); vertex(210,120); vertex(180,120); vertex(180,60); vertex(90,60); endShape();} void l13(){ beginShape(); vertex(210,100); vertex(120,100); vertex(120,120); vertex(90,120); endShape();} void l14(){ line(210,100,90,100);} void l15(){ line(210,80,90,80);} void l16(){ line(210,60,90,60);} void l17(){ line(210,40,90,40);} void l18(){ if(a==0){line(240,170,210,160);} else{line(240,170,210,180);}} void l19(){ if(a==0){line(240,130,210,120);} else{line(240,130,210,140);}} void l20(){ if(a==0){line(240,90,210,80);} else{line(240,90,210,100);}} void l21(){ if(a==0){line(240,50,210,40);} else{line(240,50,210,60);}} void l22(){ if(b==0){line(90,180,60,170);} else{line(90,160,60,170);}} void l23(){ if(b==0){line(90,140,60,130);} else{line(90,120,60,130);}} void l24(){ if(b==0){line(90,100,60,90);} else{line(90,80,60,90);}} void l25(){ if(b==0){line(90,60,60,50);} else{line(90,40,60,50);}} int a=0;int b=0;int c=0;int count=0; void draw(){ fill(255);rect(0,0,300,240); PFont font; font = loadFont("Courier-16.vlw"); stroke(0);noFill();strokeWeight(1.5); l0();l1();l2();l3();l4();l5();l6();l7();l8();l9();l10();l11();l12();l13(); l14();l15();l16();l17();l18();l19();l20();l21();l22();l23();l24();l25(); strokeWeight(0); if(a==1){fill(255,0,0);}else{fill(0);}text("A",220,195); if(b==1){fill(255,0,0);}else{fill(0);}text("B",70,35); fill(0); if(c==1){fill(255,0,0);}else{fill(0);}textSize(12);text("C",275,168); textSize(10);text("in",283,168); if(c==0){fill(255,0,0);}else{fill(0);}textSize(12);text("C",275,48); textSize(10);text("in",283,48); if(c==0){stroke(255,0,0);}else{stroke(0);}line(275,36,290,36); if((a+b+c)/2==1){fill(255,0,0);}else{fill(0);}textSize(12);text("C",5,168); textSize(10);text("out",13,168); if((a+b+c)/2==0){fill(255,0,0);}else{fill(0);}textSize(12);text("C",5,48); textSize(10);text("out",13,48); if((a+b+c)/2==0){stroke(255,0,0);}else{stroke(0);}line(5,36,28,36); fill(255,0,0);textSize(12);text("V",275,128);textSize(10);text("+",283,125); if((a+b+c)%2==1){fill(255,0,0);}else{fill(0);}textSize(12);text("Out",275,88); fill(0); text("a=",30,230);text(a,47,230); text("b=",60,230);text(b,77,230); text("c=",90,230);text(c,107,230); text("c'=",150,230);text((a+b+c)/2,167,230); text("s'=",180,230);text((a+b+c)%2,197,230); noFill();stroke(255,0,0);strokeWeight(1.5); if(c==0){if(b==0){if(a==0){ l2();l19();l12();l25();l7();} else{l5();l24();l14();l20();l3();l4();l21();l16();l25();l7();}} else{if(a==0){ l5();l24();l15();l20();l3();l4();l21();l17();l25();l7();} else{l2();l19();l10();l22();l6();}}} else{if(b==0){if(a==0){ l0();l23();l11();l20();l3();l2();l19();l12();l25();l7();} else{l1();l18();l8();l22();l6();}} else{if(a==0){ l1();l18();l9();l22();l6();} else{l0();l23();l13();l20();l3();l2();l19();l10();l22();l6();}}} fill(0);stroke(0); for(int i=50;i<=170;i+=40){ ellipse(60,i,3,3); ellipse(240,i,3,3); ellipse(90,i-10,3,3); ellipse(90,i+10,3,3); ellipse(210,i-10,3,3); ellipse(210,i+10,3,3);} noFill(); rect(235,220,15,15);text("a",240,215); rect(255,220,15,15);text("b",260,215); rect(275,220,15,15);text("c",280,215); noLoop(); } void keyPressed(){ count=count+1; a=count%2; b=(count/2)%2; c=(count/4)%2; println("a="+a+" b="+b+" c="+c); loop();} void mousePressed(){ if(235<=mouseX && mouseX<250 && 220<=mouseY && mouseY<235) {a=1-a;} if(255<=mouseX && mouseX<270 && 220<=mouseY && mouseY<235) {b=1-b;} if(275<=mouseX && mouseX<290 && 220<=mouseY && mouseY<235) {c=1-c;} println("a="+a+" b="+b+" c="+c); loop();}