// ~ represents the enter key in the text variable
ArrayList<Letter> text = new ArrayList<>();
void setup() {
size(850,1100);
textSize(50);
background(255);
}
void draw() {
background(255);
float currentY = 35, currentX = 35;
for(Letter letter : text) {
letter.draw(currentX,currentY);
if(currentX >= 790 || letter.charRep == '~') {
currentX = 35;
currentY += 60;
}
else currentX += 60;
}
}
void keyPressed() {
if("agcqiyvkeouwbdfhjlmnprstzx ".contains("" + key)) {
text.add(new Letter(key));
}
if(keyCode == 8) { // delete
text = (ArrayList<Letter>)text.subList(0,text.size() - 1);
}
if(key == ENTER) { // enter
text.add(new Letter('~'));
}
}
class Letter {
char charRep;
Letter(char charRep) {
this.charRep = charRep;
}
void draw(float x, float y) {
strokeWeight(3);
noFill();
switch(charRep) {
case 'a':
line(x-25,y-25,x-25, y);
line(x-25,y-25,x,y);
arc(x, y, 50,50,0,radians(180));
break;
case 'g':
arc(x, y, 50,50,radians(200),radians(270));
arc(x,y,30,50,radians(270),radians(450));
break;
case 'c': // cho
arc(x,y,50,50,radians(270),radians(340));
arc(x,y,30,50,radians(90),radians(270));
break;
case 'q': // sho
line(x-25,y-25,x-16+2/3,y+25);
arc(x,y+25,33+1/3,33+1/3,radians(180),radians(360));
break;
case 'i': // i
line(x-25,y-25,x-12.5,y-10);
line(x-12.5,y-10,x-25,y+10);
arc(x-10,y+10,30,30,0,radians(180));
break;
case 'y': // yev
line(x,y-25,x-15,y+12.5);
arc(x,y+12.5,30,30,0,radians(180));
break;
case 'v': // vel
arc(x,y,50,50,0,radians(270));
line(x,y,x+25,y);
break;
case 'k': // kin
arc(x,y,30,40,radians(135),radians(280));
line(x+5,y-20,x+5,y+25);
line(x+5,y+25,x+15,y);
break;
case 'r': // rop
arc(x,y-25,25,25,0,radians(180));
line(x,y-25,x-12.5,y);
arc(x-12.5,y+12.5,25,25,radians(270),radians(450));
break;
case 'e': // hen
line(x,y-25,x+12.5,y-12.5);
line(x,y-25,x-12.5,y-12.5);
line(x,y-25,x,y+12.5);
arc(x+7.5,y+12.5,12.5,12.5,0,radians(180));
break;
case 'd': // dag
arc(x,y-7.5,30,30,radians(180),radians(360));
arc(x+15,y-5,60,50,radians(80),radians(180));
arc(x-15,y-5,60,50,radians(0),radians(100));
break;
case 's': // sen
line(x,y-25,x,y+12.5);
arc(x+10,y+17.5,20,20,radians(0),radians(180));
line(x,y-25,x+15,y);
break;
case ' ':
fill(0);
ellipse(x-5,y,10,10);
break;
}
}
}