PFont f; int vspacing = 48; int xindent = 10; float lwidth; Cursor curs; Buffer buffer; int totalLines; int currentLine = 0; int bufferMax = 25; String content = "Max.txt"; String[] lines; String input = ""; //Text = split(everything,delimiters); void setup() { size(1280,640); lines = loadStrings(content); println (lines[0]); f = loadFont("Helvetica-Compressed-48.vlw"); textFont(f); lwidth = textWidth(" "); curs = new Cursor(); buffer = new Buffer(); buffer.add(" Are you ready."); buffer.add("Are you sure?."); buffer.add("I am going to change your World"); buffer.add("Ok, click in the Window and enter your thoughts!!"); buffer.add("> "); totalLines = height/vspacing - 1; currentLine = constrain(buffer.size(),0,totalLines); noLoop(); redraw(); } void draw() { background(153,294,255); textFont(f); fill(0,102,204); int start = constrain(buffer.size()-totalLines,0,bufferMax); for (int i = start; i < buffer.size(); i++) { String message = (String) buffer.get(i); text(message,xindent,vspacing*(i-start+1)); } String theend = (String) buffer.get(buffer.size()-1); int len = theend.length(); curs.setPos(len+1,buffer.size()); curs.render(); } class Buffer { ArrayList buffer; Buffer() { buffer = new ArrayList(); } void add(String s) { textFont(f); //IMPLEMENT WORD WRAP HERE!!!!!!!!!! if (textWidth(s) > width) { buffer.add(s); } else { buffer.add(s); } } int size() { return buffer.size(); } String get(int i) { if (i < buffer.size()) return (String) buffer.get(i); else return "WRONG, Try again!!!"; } void remove(int i) { if (i < buffer.size()) buffer.remove(i); } } class Cursor { int x,y; boolean blink; int saveTime; Cursor() { x = 200; y = 200; blink = true; saveTime = millis(); } void setPos(int x_, int y_) { x = x_; y = y_; } void render() { if (blink) { stroke(0,255,0); fill(0,255,0); rect(x*lwidth+2,y*vspacing-16,lwidth-2,16); } /*if (millis() - saveTime > 500) { blink = !blink; //println("blink"); saveTime = millis(); }*/ } } void keyPressed() { //println(int(key)); if (key == 10) { //buffer.add("> " + input); buffer.add(lines[int(random(lines.length))]); buffer.add("> "); input = ""; while (buffer.size() >= bufferMax) { buffer.remove(0); } } else { if (key == 8) { if (input.length() > 0) input = input.substring(0,input.length()-1); } else if (key >= 32 && key <= 126) { input = input + key; } String putin = "> " + input; buffer.remove(buffer.size()-1); buffer.add(putin); } redraw(); }