From 671d0a9f30949241d5f5e0fdc9f086edecae9e4d Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 16 Dec 2019 19:58:51 -0800 Subject: [PATCH 01/22] Started stuff --- StarterCode/Statistics.pde | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 StarterCode/Statistics.pde diff --git a/StarterCode/Statistics.pde b/StarterCode/Statistics.pde new file mode 100644 index 0000000..64d3c9d --- /dev/null +++ b/StarterCode/Statistics.pde @@ -0,0 +1,25 @@ +class Statistics { + int numPagesRead; + int numBooksRead; + int timePassed; + public Statistics(){ + numPagesRead = 0; + numBooksRead = 0; + timePassed = 0; + } + public int PagesRead(){ + return numPagesRead; + } + public int BooksRead(){ + return numBooksRead; + } + public int TimePassed(){ + return timePassed; + } + public void incrementPages(){ + numPagesRead++; + } + public void incrementBooks(){ + numBooksRead++; + } +} From cded1e995463daefe5bef666c9e54045714d9a2d Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 16 Dec 2019 20:02:45 -0800 Subject: [PATCH 02/22] Started to link the library to the book --- StarterCode/Library.pde | 9 ++++++++- StarterCode/StarterCode.pde | 23 +++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 4928cee..9dea566 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -1,11 +1,13 @@ class Library { // is it possible to search? will be determined later but keep it in mind ArrayList books; + int currentPage; public Library() { books = new ArrayList(); spot = 0; columns = 2; + currentPage = 0; buttonColor = color(193, 193, 193); button2Color = color(194, 194, 194); @@ -62,6 +64,9 @@ class Library { } return null; } + int getCurrentPage(){ + return currentPage; + } //draws the library void drawLibrary(){ boolean changed = false; @@ -74,6 +79,7 @@ class Library { spot++; changed = true; } + currentPage++; delay(50); } triangle(0.93*width, 0.45*height, 0.97*width, 0.5*height, 0.93*width, 0.55*height); @@ -84,9 +90,10 @@ class Library { color c = get(mouseX, mouseY); if (c == color(253, 253, 253)){ fill(50, 50, 50); - spot+=-1; + spot--; changed = true; } + currentPage--; delay(50); } triangle(0.07*width, 0.45*height, 0.03*width, 0.5*height, 0.07*width, 0.55*height); diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 9c6d50e..87ef650 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -1,5 +1,6 @@ Library l; Window w; +int currentPage; void setup() { size(500, 500); String cover1 = "Art Example Two.png"; @@ -11,6 +12,9 @@ void setup() { l = new Library(); w = new Window(b1); + + currentPage = l.getCurrentPage(); + background(0, 0, 0); for(int i = 0; i<34; i++){ if( (int)Math.sqrt(i)%2 ==0 ){ @@ -22,8 +26,23 @@ void setup() { } void draw() { - - w.draw(); + // 78, 99 + // 214, 100 + // 81, 241 + // 221, 239 + //draws the library + l.drawLibrary(); + if (mousePressed){ + // top left corner button + if (mouseX > 78 && mouseX < 214 && mouseY > 99 && mouseY < 241){ + + } + if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241) println("button pressed"); + if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); + if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); +} + // draws the book + //w.draw(); } void mousePressed() { From 63be4543d017d16dc58cce70b019062dd3c744c0 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 23 Dec 2019 19:59:14 -0800 Subject: [PATCH 03/22] Continuing with the linking thing --- StarterCode/Library.pde | 2 +- StarterCode/StarterCode.pde | 35 +++++++++++++++++++++++++++-------- StarterCode/Window.pde | 5 ++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 9dea566..f7e6e3b 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -7,7 +7,7 @@ class Library { books = new ArrayList(); spot = 0; columns = 2; - currentPage = 0; + currentPage = 1; buttonColor = color(193, 193, 193); button2Color = color(194, 194, 194); diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 87ef650..5a3a368 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -1,28 +1,42 @@ Library l; Window w; +Book b1; int currentPage; +boolean inLibrary = true; void setup() { size(500, 500); String cover1 = "Art Example Two.png"; String cover2 = "Art Example Three.png"; Page[] p = {new Page("I ran.", "pixil-frame-0.png", color(255, 255, 255)), new Page("I ran2.", "img2.png", color(255, 255, 255))}; - Book b1 = new Book("Test", 2, p, cover1); + b1 = new Book("Test", 2, p, cover1); Book b2 = new Book("Test2", 2, p, cover2); + w = new Window(b1); l = new Library(); - w = new Window(b1); currentPage = l.getCurrentPage(); background(0, 0, 0); - for(int i = 0; i<34; i++){ + /*for(int i = 0; i<34; i++){ if( (int)Math.sqrt(i)%2 ==0 ){ l.addBook(b1); }else{ l.addBook(b2); } - } + }*/ + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); + l.addBook(b1); } void draw() { @@ -31,16 +45,21 @@ void draw() { // 81, 241 // 221, 239 //draws the library - l.drawLibrary(); + if (inLibrary) l.drawLibrary(); if (mousePressed){ - // top left corner button +// top left corner button if (mouseX > 78 && mouseX < 214 && mouseY > 99 && mouseY < 241){ - + inLibrary = false; + println("top left is pressed"); + if (currentPage == 1){ + w.setBook(b1); + w.drawWindow(); + } } if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241) println("button pressed"); if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); -} + } // draws the book //w.draw(); } diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index bdfc27e..7f5d356 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -36,7 +36,7 @@ class Window { button2Clicked = false; } - void draw() { + void drawWindow() { //displays p's data and cBook's title @@ -98,6 +98,9 @@ class Window { update(); //add home button } + void setBook(Book book){ + cBook = book; + } void mousePressed() { if(buttonOver) { From c295533273e7aec1e0308e34cca06ea776e88535 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 30 Dec 2019 19:14:07 -0800 Subject: [PATCH 04/22] counted pages and books half finished code but needed something from develop - shouldnt break anything --- StarterCode/Window.pde | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index bdfc27e..973d9c6 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -15,11 +15,15 @@ class Window { int buttonX = width/50; int button2X = width-buttonWidth-width/50; int buttonY = height/2-buttonHeight+width/25; + int firstPage; boolean buttonClicked; boolean button2Clicked; + Statistics stat; public Window(Book b) { + firstPage = 1; + stat = new Statistics(); cBook = b; cPage = cBook.pages[cBook.getCurPage()-1]; @@ -72,6 +76,7 @@ class Window { } if(cBook.getCurPage() == cBook.getTotalPages()) { forward = false; + stat.numBooksRead++; } //displaying buttons @@ -98,7 +103,7 @@ class Window { update(); //add home button } - + void mousePressed() { if(buttonOver) { buttonClicked = true; @@ -110,10 +115,12 @@ class Window { if(buttonOver) { buttonClicked = false; updatePage(0); + stat.numPagesRead--; } if(button2Over) { button2Clicked = false; updatePage(1); + stat.numPagesRead++; } } @@ -131,7 +138,12 @@ class Window { cPage = cBook.pages[cBook.getCurPage()-1]; } } - + public int ReadPages(){ + return stat.PagesRead(); + } + public int ReadBooks(){ + return stat.BooksRead(); + } void update() { if(get(mouseX, mouseY) == buttonColor || get(mouseX, mouseY) == buttonHighlight) { buttonOver = true; From 1b540947bd49c6f6fcfb5e48edf6c597ed4836c7 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 30 Dec 2019 19:20:07 -0800 Subject: [PATCH 05/22] init, map implemented --- StarterCode/Library.pde | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 4928cee..7423a7d 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -1,9 +1,14 @@ +import java.util.*; + class Library { // is it possible to search? will be determined later but keep it in mind - ArrayList books; + //ArrayList books; + //key is title + TreeMap books; public Library() { - books = new ArrayList(); + //books = new ArrayList(); + books = new TreeMap(); spot = 0; columns = 2; @@ -30,7 +35,7 @@ class Library { boolean buttonClicked; boolean button2Clicked; - public Library(ArrayList books){ + public Library(TreeMap books){ this.books = books; spot = 0; columns = 2; @@ -45,22 +50,14 @@ class Library { buttonClicked = false; button2Clicked = false; } - ArrayList getBooks(){ + TreeMap getBooks(){ return books; } void addBook(Book b){ - books.add(b); - } - Book getBook(int bookNumber){ - return books.get(bookNumber); + books.put(b.getTitle(), b); } - Book getBookWithName(String bookName) { - for (Book b:books) { - if (b.getTitle().equals(bookName)) { - return b; - } - } - return null; + Book getBook(String bookName) { + return books.get(bookName); } //draws the library void drawLibrary(){ @@ -106,12 +103,14 @@ class Library { int newHeight = height - (int)((double)height/(double)10); int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/columns - (((double) (2*columns-1)*428)/columns))); int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); + Iterator> iter = books.entrySet().iterator(); for(int i = 0; i < 8 && 8*spot+i < books.size(); i++){ - PImage cover = books.get(8*spot+i).getCoverImg(); + PImage cover = iter.next().getValue().getCoverImg(); cover.resize(285/columns, 285/columns); image(cover, xOffset+(i % (2*columns)) * 428/columns, yOffset+(i - (i % (2*columns)))/(2 * columns) * 428/columns); } - if(changed == true){ + println(books.size()); + if(changed){ background(0,0,0); drawLibrary(); } From c34835957c64d76df96514331bf737174d4d6404 Mon Sep 17 00:00:00 2001 From: davidlee04 Date: Mon, 30 Dec 2019 19:20:44 -0800 Subject: [PATCH 06/22] Update Library.pde --- StarterCode/Library.pde | 2 -- 1 file changed, 2 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 7423a7d..80336ec 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -1,5 +1,3 @@ -import java.util.*; - class Library { // is it possible to search? will be determined later but keep it in mind //ArrayList books; From 96c6566db5be718b2d958fc88e049b7b87944f93 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 30 Dec 2019 19:34:30 -0800 Subject: [PATCH 07/22] recommit didn't save --- StarterCode/Window.pde | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index 83c150f..91785a9 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -9,14 +9,7 @@ class Window { color button2Color; color button2Highlight; -<<<<<<< HEAD - int buttonWidth = width/15; - int buttonHeight = height/5; - int buttonX = width/50; - int button2X = width-buttonWidth-width/50; - int buttonY = height/2-buttonHeight+width/25; int firstPage; -======= float buttonWidth = width/15; float buttonHeight = height/5; float buttonX = width/50; @@ -26,9 +19,7 @@ class Window { float homeY = height/100; float homeWidth = width/25; float homeHeight = height/25; ->>>>>>> 19ee41d35cf63db38f3fe49b08c9cf1afb811888 - boolean hasPlayedFirstSound = false; boolean buttonOver; @@ -45,12 +36,9 @@ class Window { Statistics stat; public Window(Book b) { -<<<<<<< HEAD firstPage = 1; stat = new Statistics(); -======= l = new Library(); ->>>>>>> 19ee41d35cf63db38f3fe49b08c9cf1afb811888 cBook = b; cPage = cBook.pages[cBook.getCurPage()-1]; @@ -114,7 +102,7 @@ class Window { forward = false; stat.numBooksRead++; } - + //<>// //displaying buttons stroke(0, 0, 0); fill(192, 192, 192); From 2ba83ec870bdddbd0ff673a4812ef39cef953ae8 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 30 Dec 2019 19:58:10 -0800 Subject: [PATCH 08/22] Added a default book; should be done --- StarterCode/Library.pde | 4 ++++ StarterCode/StarterCode.pde | 6 +++--- StarterCode/Window.pde | 4 +++- StarterCode/data/Centered? User Guide Title.png | Bin 0 -> 1995 bytes 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 StarterCode/data/Centered? User Guide Title.png diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 4928cee..a1f4dc2 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -4,6 +4,10 @@ class Library { public Library() { books = new ArrayList(); + + // Add one book, which is an instructions manual, so the program doesn't throw an error when generating the library. + Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; + books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); spot = 0; columns = 2; diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 1ef95bb..84294d5 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -5,9 +5,9 @@ void setup() { String cover1 = "Art Example Two.png"; String cover2 = "Art Example Three.png"; - Page[] p = {new Page("Rush is a Canadian band that averages a score of 7.500.", "pixil-frame-0.png", color(255, 255, 255), "rush.wav"), new Page("This score falls behind Taylor Swift by a full tenth.", "img2.png", color(255, 255, 255), "taylor swift.wav")}; - Book b1 = new Book("Test", 2, p, cover1); - Book b2 = new Book("Test2", 2, p, cover2); + Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; + Book b1 = new Book("Test", 3, examplePages, cover1); + Book b2 = new Book("Test2", 3, examplePages, cover2); l = new Library(); w = new Window(b1); diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index 45fd0d3..826f091 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -75,7 +75,9 @@ class Window { // play first sound if (!hasPlayedFirstSound) { hasPlayedFirstSound = true; - cPage.getAudio().startSound(); + if (cPage.getAudio() != null) { + cPage.getAudio().startSound(); + } } //title text surface.setTitle("Book: "+cBook.getTitle()); diff --git a/StarterCode/data/Centered? User Guide Title.png b/StarterCode/data/Centered? User Guide Title.png new file mode 100644 index 0000000000000000000000000000000000000000..1b8635174cc57b5d84266e06c4b659ce38db2db9 GIT binary patch literal 1995 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST~P>fqjCfi(^Pd+}pc>MYqFv+#WvL z8S8F-CD)8Q>-xp-B{t_Otfp#m9#E}it*PB7(8(xH%WsLv6k8z$b|FYtV&)HrRo=4_Z8trcpujN++ge|NrCbI(@Ff`OUS~o)aY2zx5M-Ql=uLvVGY-$34w0=I%``6W@k@n98}S zsM4s`MSbEt|K4|D5H%aPvAXN0knii3&nbGT4pkQ)aKUd@cR&&H1ScLM}}n0-Q>YMUl!- z6+nRr{7f^apUCk2Qj=!0JMMAU?^7SF79Uf-_Q-wBnF;$ogii?hy{zZX>H+;silpYM4?I*vv4ZkUac^TEx%lT?L>v@vwzm? z20BD#PqdIqPtN+L45<_$mCJ=+_APq8e#i3F5vf&{i`|-3gjI}tUL0~iA7ALtax&oF z8nw+4GiPPozL@QD-u=D$?l<9g!k0}q&H`HTvt)hPzo(mw#lEjPuL2GLGjIT$WdC$( zev$m$qkY#ubbPg28^}57V#@KSdl&IH2|QV8t9(LNt-kB)l~-@7Gp@%of9%-${+!I+ zneJ=YjVA-c>GRtwujA8ihELIkSRxv+k&Uo z9f8Ulx)>b8CVsKhND*Auj@304;cM(e|?lN1tD zo{Pm8PI#dl{AG{(n%lA`ZSKw8owoJ7d*W37f(#{>^XdOW zG%m-30{FdZ;oMco^Jbu3nWWM)=7TFMC)j@hVJ-YD(F6cd_Zk&%#1aRvZuir+RD}=cLGcz(i-`SXR?eRpZYBjFLBk z-c2@Q@1_V}%zypj=l0os*Fe?ti4#|{1)lu->~ z;83!55CEmQi|SANKkI+woAl04k;#>bMUyGy-fRZPs`KIHqrAZt5(oBgoRjtHhVb)= Sz$%)-)78&qol`;+0|NlkwJSgX literal 0 HcmV?d00001 From d1ee5d5cddf339c82945414a2cc0f9ddf286cf3d Mon Sep 17 00:00:00 2001 From: "maxn990@gmail.com" Date: Mon, 30 Dec 2019 20:00:01 -0800 Subject: [PATCH 09/22] Continues to change window and library to make it so it opens --- .DS_Store | Bin 6148 -> 6148 bytes StarterCode/Book.pde | 14 ++++++++++++ StarterCode/Library.pde | 30 ++++++++++++++++++++---- StarterCode/StarterCode.pde | 44 +++++++++++++++++++----------------- StarterCode/Window.pde | 6 ++++- 5 files changed, 68 insertions(+), 26 deletions(-) diff --git a/.DS_Store b/.DS_Store index 62ff5c3a983ebafb44f93c00c05460cb664330d8..971b76f2cfc2816131ba0d6916ab98f2da69b4b9 100644 GIT binary patch delta 99 zcmZoMXfc=|#>B)qu~2NHo+2ab#(>?7jI5J+SfZF1R!+`f*(zdaXsn}PX;`bHP;F>n zVWOj8ZeTvykTrjE0NZxPjSU-^HnVf^a{!IlEXeVlc{0Cp6F!wdlQ CR~PL7 delta 190 zcmZoMXfc=|#>B!ku~2NHo+2aX#(>?7iw`g}F>+4kVTxj66rY^Iv{l5+*iuKq)WoP( zN1@u>+(1Xc#Mo@IA#=V!PP$=ma(-?B0|;;zKAddFBqfrY@8Xh_lb-|>;*eQ((); spot = 0; columns = 2; - currentPage = 1; + currentPage = 0; buttonColor = color(193, 193, 193); button2Color = color(194, 194, 194); @@ -18,6 +18,7 @@ class Library { buttonClicked = false; button2Clicked = false; + } int spot; int columns; @@ -79,10 +80,9 @@ class Library { spot++; changed = true; } - currentPage++; delay(50); } - triangle(0.93*width, 0.45*height, 0.97*width, 0.5*height, 0.93*width, 0.55*height); + triangle(0.93*width, 0.45*height, 0.97*width, 0.5*height, 0.93*width, 0.55*height); //<>// } if(spot>0) { fill(253, 253, 253); @@ -93,7 +93,6 @@ class Library { spot--; changed = true; } - currentPage--; delay(50); } triangle(0.07*width, 0.45*height, 0.03*width, 0.5*height, 0.07*width, 0.55*height); @@ -122,5 +121,28 @@ class Library { background(0,0,0); drawLibrary(); } + if (mousePressed){ + // top left corner button + if (mouseX > 78 && mouseX < 214 && mouseY > 99 && mouseY < 241){ + inLibrary = false; + println("top left is pressed"); + /*if (currentPage == 1){ + w.setBook(books.get(0)); + w.drawWindow(); + }*/ + ArrayList topLeftBooks = new ArrayList(); + for (int i = 0; i < books.size(); i++){ + if (i % 4 == 0){ + topLeftBooks.add(books.get(i)); + } + } + println ("Current page: " + currentPage); + w.setBook(topLeftBooks.get(currentPage)); + w.drawWindow(); + } + if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241) println("button pressed"); + if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); + if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); + } } } diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 5a3a368..bf7fbc4 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -1,3 +1,6 @@ +// Instead of creating a window object with a book, you have a window object and you have a setter that puts in the book later +// Put all visual stuff inside a second method + Library l; Window w; Book b1; @@ -9,8 +12,10 @@ void setup() { String cover2 = "Art Example Three.png"; Page[] p = {new Page("I ran.", "pixil-frame-0.png", color(255, 255, 255)), new Page("I ran2.", "img2.png", color(255, 255, 255))}; + Page[] p2 = {new Page("Text", "Art Example One.png", color(0, 0, 0))}; b1 = new Book("Test", 2, p, cover1); - Book b2 = new Book("Test2", 2, p, cover2); + Book b2 = new Book("Test2", 1, p2, cover2); + w = new Window(b1); l = new Library(); @@ -27,16 +32,27 @@ void setup() { }*/ l.addBook(b1); l.addBook(b1); - l.addBook(b1); - l.addBook(b1); - l.addBook(b1); + + l.addBook(b2); + l.addBook(b2); + l.addBook(b1); - l.addBook(b1); l.addBook(b1); - l.addBook(b1); + + l.addBook(b2); + l.addBook(b2); + + l.addBook(b2); + l.addBook(b2); + + l.addBook(b2); + l.addBook(b2); + l.addBook(b1); - l.addBook(b1); l.addBook(b1); + + l.addBook(b2); + l.addBook(b2); } void draw() { @@ -46,20 +62,6 @@ void draw() { // 221, 239 //draws the library if (inLibrary) l.drawLibrary(); - if (mousePressed){ -// top left corner button - if (mouseX > 78 && mouseX < 214 && mouseY > 99 && mouseY < 241){ - inLibrary = false; - println("top left is pressed"); - if (currentPage == 1){ - w.setBook(b1); - w.drawWindow(); - } - } - if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241) println("button pressed"); - if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); - if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); - } // draws the book //w.draw(); } diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index 7f5d356..f40cbed 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -101,6 +101,9 @@ class Window { void setBook(Book book){ cBook = book; } + Book getBook(){ + return cBook; + } void mousePressed() { if(buttonOver) { @@ -133,7 +136,7 @@ class Window { cBook.setCurPage(cBook.getCurPage()+1); cPage = cBook.pages[cBook.getCurPage()-1]; } - } + } //<>// void update() { if(get(mouseX, mouseY) == buttonColor || get(mouseX, mouseY) == buttonHighlight) { @@ -147,4 +150,5 @@ class Window { button2Over = false; } } + } From 9fbe2cbd86c5d6d45e5fedcfaecb5aad647c7856 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 6 Jan 2020 19:02:34 -0800 Subject: [PATCH 10/22] Added a default book in library; library shows all books including the book at index 0 --- StarterCode/Library.pde | 3 ++- StarterCode/StarterCode.pde | 15 ++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index a1f4dc2..730379c 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -113,7 +113,8 @@ class Library { for(int i = 0; i < 8 && 8*spot+i < books.size(); i++){ PImage cover = books.get(8*spot+i).getCoverImg(); cover.resize(285/columns, 285/columns); - image(cover, xOffset+(i % (2*columns)) * 428/columns, yOffset+(i - (i % (2*columns)))/(2 * columns) * 428/columns); + // Changed to i + 1 to make sure that it works even when the first book is book 0 + image(cover, xOffset+((i+1) % (2*columns)) * 428/columns, yOffset+((i+1) - ((i+1) % (2*columns)))/(2 * columns) * 428/columns); } if(changed == true){ background(0,0,0); diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 84294d5..493be73 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -2,23 +2,16 @@ Library l; Window w; void setup() { size(500, 500); - String cover1 = "Art Example Two.png"; - String cover2 = "Art Example Three.png"; + // For now, this is only used to launch the window because it requires a book to be launched. + // This book isn't used otherwise and is not the same as the default book Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; - Book b1 = new Book("Test", 3, examplePages, cover1); - Book b2 = new Book("Test2", 3, examplePages, cover2); + Book b1 = new Book("Test", 3, examplePages, "Centered? User Guide Title.png"); l = new Library(); w = new Window(b1); background(0, 0, 0); - for(int i = 0; i<34; i++){ - if( (int)Math.sqrt(i)%2 ==0 ){ - l.addBook(b1); - }else{ - l.addBook(b2); - } - } + } void draw() { From 098813ca98691650c13443d47f27eb14acf4c0f1 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 6 Jan 2020 19:12:22 -0800 Subject: [PATCH 11/22] Pushing so that I can merge into develop --- StarterCode/Library.pde | 22 +++++++++++++++++++++- StarterCode/StarterCode.pde | 13 +------------ StarterCode/Window.pde | 20 +++++++++++++++++++- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 5b68e7f..dd15759 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -79,6 +79,7 @@ class Library { fill(1, 1, 1); spot++; changed = true; + currentPage++; } delay(50); } @@ -91,6 +92,7 @@ class Library { if (c == color(253, 253, 253)){ fill(50, 50, 50); spot--; + currentPage--; changed = true; } delay(50); @@ -136,11 +138,29 @@ class Library { topLeftBooks.add(books.get(i)); } } + for (int i = 0; i < topLeftBooks.size(); i++){ + println(topLeftBooks.get(i).getTitle()); + } println ("Current page: " + currentPage); w.setBook(topLeftBooks.get(currentPage)); + println ("Book: " + topLeftBooks.get(currentPage).getTitle()); + w.drawWindow(); + } + if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241){ + inLibrary = false; + println("top right is pressed"); + ArrayList topRightBooks = new ArrayList(); + for (int i = 0; i < books.size(); i++){ + if (i % 4 == 1){ + topRightBooks.add(books.get(i)); + } + } + for (int i = 0; i < topRightBooks.size(); i++){ + println(topRightBooks.get(i).getTitle()); + } + w.setBook(topRightBooks.get(currentPage)); w.drawWindow(); } - if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241) println("button pressed"); if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); } diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index bf7fbc4..c90a72c 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -16,7 +16,7 @@ void setup() { b1 = new Book("Test", 2, p, cover1); Book b2 = new Book("Test2", 1, p2, cover2); - w = new Window(b1); + w = new Window(); l = new Library(); @@ -35,22 +35,11 @@ void setup() { l.addBook(b2); l.addBook(b2); - - l.addBook(b1); - l.addBook(b1); - l.addBook(b2); l.addBook(b2); - l.addBook(b2); l.addBook(b2); - l.addBook(b2); - l.addBook(b2); - - l.addBook(b1); - l.addBook(b1); - l.addBook(b2); l.addBook(b2); } diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index f40cbed..877b2de 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -19,7 +19,7 @@ class Window { boolean buttonClicked; boolean button2Clicked; - public Window(Book b) { + /*public Window(Book b) { cBook = b; cPage = cBook.pages[cBook.getCurPage()-1]; @@ -32,6 +32,23 @@ class Window { buttonOver = false; button2Over = false; + buttonClicked = false; + button2Clicked = false; + }*/ + + void initialize(Book bs){ + cBook = bs; + cPage = cBook.pages[cBook.getCurPage()-1]; + + buttonColor = color(193, 193, 193); + button2Color = color(194, 194, 194); + + buttonHighlight = color(96, 96, 96); + button2Highlight = color(97, 97, 97); + + buttonOver = false; + button2Over = false; + buttonClicked = false; button2Clicked = false; } @@ -100,6 +117,7 @@ class Window { } void setBook(Book book){ cBook = book; + initialize(book); } Book getBook(){ return cBook; From f08a3d84aba3079323a51da98217c736ca134071 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 6 Jan 2020 19:26:44 -0800 Subject: [PATCH 12/22] Added better images to the default book --- StarterCode/Library.pde | 2 +- StarterCode/StarterCode.pde | 6 +++--- StarterCode/data/click exit.png | Bin 0 -> 21122 bytes StarterCode/data/click on books.png | Bin 0 -> 30859 bytes StarterCode/data/use the side arrows.png | Bin 0 -> 25684 bytes 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 StarterCode/data/click exit.png create mode 100644 StarterCode/data/click on books.png create mode 100644 StarterCode/data/use the side arrows.png diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 730379c..5dc7876 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -6,7 +6,7 @@ class Library { books = new ArrayList(); // Add one book, which is an instructions manual, so the program doesn't throw an error when generating the library. - Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; + Page[] examplePages = {new Page("Access books in your library.", "click on books.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "use the side arrows.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "click exit.png", color(255, 255, 255))}; books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); spot = 0; columns = 2; diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 493be73..14489bc 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -6,11 +6,11 @@ void setup() { // For now, this is only used to launch the window because it requires a book to be launched. // This book isn't used otherwise and is not the same as the default book Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; - Book b1 = new Book("Test", 3, examplePages, "Centered? User Guide Title.png"); - + Book b2 = new Book("prueba", 3, examplePages, "Art Example Three.png"); l = new Library(); - w = new Window(b1); + w = new Window(l.getBook(0)); background(0, 0, 0); + l.addBook(b2); } diff --git a/StarterCode/data/click exit.png b/StarterCode/data/click exit.png new file mode 100644 index 0000000000000000000000000000000000000000..f843f73916f897f531eac41c1f6e265287bfeb13 GIT binary patch literal 21122 zcmeEuXEdB||EK7Q2qB1w5>X;rqW2QLi|B(%^fp9i^hkmrI?+Xq-p1%e61{h345Bki zl+i}n5q{7A+4J9hvu9uJKF)Ct_kGoG{d_;yH500-u0VY2!7VH-EMg@^SuHHA8=IKl zSweiw6JPuQV=Sy&wKg&`no2S<44Tf4mNxblSXhdo@reZ5v0aoME9hodGQ$^7v|c#A z+keWuuZg?%`Z3d^o6H~IXPWB$qA((2WYizZ4S8pG!<;kZ2_#=Z;R_P1T?MFq>dhkTDCX{HSpxKPve+2vquCp{&!mV~ zu^*&7rr^!a`f`UffeXwbrKkLWf zU}?QOiJ)2v>8PW&NX7+`F7-PtYn1z>zG6K>9DbR!_Q!gLi$!QI0Qf-=pel0~Zghvf zPsaVll=?4XyetxS(ma=3ugZ0)yN+C_oq<6wTH=3gIo}CMB#iLJ6Rrx0? zpLn3csc%F?`D|kX zNoBDF<`(}@u7nG2w`exXGA zM8vHC??>y48po6ESgBxaEYw-tz!5Rn7mD>ZFXeIUqWaOZ1xbA=?56?vkU)uN_>|xA zg|MjRZu&?w5aLBMP%;G`2jJi`5Gj6VEWcfhkC#bke*-QpJV|sX;K5tmhd63;d_p8# zfp(cR)A)yh4{yJtdVRlJMG?kG z_heRU-qpSxFN6MSxN5a}&y}to8ztrO)z6v`jN|+9?w8vmuf->Cr{8F3RTaAZ`NK-9 zj}T3N(B5ygx70>A=|9r^-uuIUB)}02{Qj6wDvngdG-Q&&Aw-falbs0>F~dqlN)|cbVYy+PVE{8T z^J8X@+$rT3xjM=g$_nvZ>?n3$#-iAg&hy1Ob80X0y5wo)W)(k`ubRD2n&Zrs?^uxM zCO8M~hU~sfDzq=^)mna9rd_J(pxylSRQba<)50IxNo6tlT7}L=OZD9=Nemw*%)Cfvte_)-2 zT9deu_&q)|{>triUcURP@+{fmL;d#!M)_|)kE7la+~9f0&m;JW*U)VA_5R=&^9{>X zOC!^1OEG)X*JN)hdvp31)7geb`?O!z|AhS94@#;tcsB*EVyUuPHeBY|6WbHnBcQxT zL?31!rW^)H5KKu=t_S9f~_O z57|CTe`cpmp#_Q>i0-5w2qB#EL==R|JRDrk*XP$6oeDgto%x;AoDfT}6?vC1XZWi7 z6fJUVrFr-af@US5ihLMpM&}QPd0KkX?fM9e_^>!Gw=R>3_{(|yP`5|h*~*6XumwZgh1x^~z)`_sS9-wun6^r7bcL5gp5_o?*h zj-GTr38B}f;(NI9u#vBpAD4!VvXVb1GPh&C+}7ad*V3;&GVq_BZ=SzddK3Ax1v_RUt3qPis@sZw4MdbhTttyZX{Iu0q(;|@?HI4r6{5SOO=sn)6DOE0aYK* zK&Anr(M~TT(Jqm5tM3?)XSM(FuNE-E%UD%5OJ>IE9?XR7dOrq%O} z^MRnd@CPdQnLjXZL%ApYaz_hXx9<$!nY!a;;Aya@9-9Vm_hX}qn=SoQWIdVNVE40> zq@k|CabpMZszuMyacE`${T{uwK{7L|Z=-7f#`0h|{2m*$Lm=wsj4psG=NEokx2yhU zXhLp0VuCaTcq<+bE{oKv>k7JhZvEbRd_y4_30glC9Hja5`CWEp_JF_oaowT*WCe7= zp#!P$C4JH@23%Qw*VbrQXqw47Mv#^NF!h%B*!cXE^DY$}Sg1jhUMiIBWVvTBJat-S zwzAtF0r>;~rmtksTLT8&FJ8=l0Blyl8@N6iH~O%x4u7~~*-_VHlBfaPsdZj2gpcLf zaZNlBO%v5PUq3~5aV3_vBTFYz8W0Ttu;oE&({GoB)4qU|M289o;|6i0yN09Dc3N|t z@2=>y=)jicjIS^E;mqop4oNx5E&4(U4&NN~w_U-W*$0bUyS!&N&eAZhI7>fwyYa~Q z1fAG=${NR-t3jMTF5%+o4t`?&4Sk%t62$$BTOLSx`t_irRFASu{d5g&weoiU&zxNs zvOtB4lcu=t5@?#}GJFI!GCC<0{6t>H`0S~Gu zu6X_&@Z+2dkJR(y<1wbk=&+;eh`)s5|CY^iE)ET9gqn}>%J(}L5*%fa=HC#QqUr$x3T`-q=JC_&gk| zKH8~@;pl>L9DbsioXn#RYGsL&dN%nrco$oJH)QR7loT1+i*BMo(jWA6i#J#x?;pIl z#eehtmeeZki2cG$k$F#L{ege~B)fZVyt^g8XhZgyv4ng>RaK3TmHR+%nyANPm*w8j zTQ_gul1gFSz;!msWLU9N#JhX>52@7myA0MgT5KAG%MzN$U^3O)AA;gpIrT7Q}5!;~dx)M%6Q2=OT*u)ZQ-t&OM)^3oG!? z&3hK})`)%v;G$e9VPU)=_MLbS*e~g)6*Py zct&nLp%K!|^*I49dA|F16(I21ygU}KJ%mTw$1fUFR`hHf9QGc@-oHbwGB*FXnaDC^ z;N1~kjJlITPYS@iZ!9;Bx;di^R5c5&yF0llAv2V$xWF`*>s$twYw@2_^cE=m#>m z4{Dpt>4y&`PBqv00wRZRJU<9zc@!XZfXksc3r3byzL0E5;1Gfzk&AXZSX)O?nRrSk zZ~|CnPsVFt;%3e0t%ju_5(#UY_i4F+O0f;}_x@=>etmuY`%F+7oQDjv6?uk7*8W+o z-~zu@(OZ)hwv!^zW?zF12|pkE=l&S+5n+2E+!D#lIW;pp=R=*p-yjfboxmArg^t?=n;%(NSoDM4qncm0Viyz?*z7f91Tu2m zT)XgDG<8B*S$T1PM8mO)jtFDb^fy?o;eg*1yaCb#3&`mAd zqcKZ#@EZ6XOg}?b4*Hr_y`7i%GbZ=uNnNA{Z3#^aT_k3A;y0}JkBUyd9zG~v2m=(f z&g_%29(<{98ma7ezn^hX1P-q{LLkcT!n)K~E z_iDeWku=iQQY*MOCrLxU+6%0}Ib06Hj#9I2$cVZrVx%i3;{0Bbt#&ZCZJ`CWl>W` zXEwVDiz#3Q_TOZ>Evv%H-X4*k-R@2LM}gryMmtwMV868AJH(l>T!cgb^5>4K$+9g^8zmOIaMMg7eX@wAY+ZUsz0lqjp3?tU9dbz}eOWK((6)f$Y zGZQ54(EH^*j8h+?m{*2Df}oPbfqZR6{ST~|02d{-VPeZ(n%}QwjhISPLvPk(Ot#3K z82F#8<+nKyRPAF{+xa?8vr9fB78C45vHPVU2cOghgi53c(v5|_MNadTtF}`N3eTj| z_S_|W@j9GNyMslr^5t)V4+X$3{QNZk^W%P1+X}Hwj@0*9*i+=I&#Y_oO5U`|?N*;J zIWLq;I6EI&K60&LZF9!uVSjA}J8;QJuwSm40Qw^iu{V2Rc`vFVHY0g=_B?o>zY3=Q z!-!4j`XuT;#8_PcmdTrXFdE1{((T=S*zMifTevjbkc6D3Ro-L7rX~x?_`LzVI7yrg z;43T0=5?j1rSxu6h@?}h`s_9WFSY^HIH=X%A-XG-xrcpIT6DZG;VJwh?OqI=`ry4o zo3krQSJ-M#YpSVvbNW}o?z|f=>1t|#n^}inKHOoV{`W_kUw(booaE$=11KuHX&(v;2GK598@6Jb*_ zJK%y#`Um)ZnWl!A?5%G4aEBQ87uv7d+ez->q|55hu2Gd62oil2e17Ks;sVGNQdFImogz55bBA zhu&yL2<~EI6CN?XmiDMS{}P$T3^!)*-N%~7cB>S9F;4_}ZD%zhAYRBU3a1kXyLKP8 z?S}Zb&@zQT;P38wd?12}+LNmsqj4-27K1EMfxJS< zE&VXPD^Q`x7WGz5bO|P^8$wy{nL>9fj?8B&&6Tyi!rnp0kNi$qQvgo@Qy-nAXjM9;6{mn}i!)B;@C)kN%*3xC%slS2!fdUe zoH#DX8z8$Px_P#yC5}8#+1Ib?6-JhB3O?adpkurmTIy+F$mcsKAGL-xcz#H)lFM?g z34$qW@3Devn0lON_aOz)W6LO z4|hB@9%C5FUsiNQ-3s+N2)&p3t>wXJk;aD3`9D*MV%y+>);4~zQSQuMsNx*j+nDeG z8G+&eMsgPDD>=%?S4#@GnL`CZslpQ>4n?x`UfNmg3CfE{WlF8#`6ZRq&8qU$sr8Fh`-)~Y7?HJnpq=*!$3NrFnpQ7DM#C6K&(J>>{fzJ#-=vp z92=SNyl3c!umPiJ5pJ{23wOlO$5FpRS$qy1b=iV?5 zS%#+ay~?U##a~;UyLj19Myi)Ad*WVh2eho|FeQ?0H9$}m_e13Kl)h%jO9}G zRTAT|{wCY(XOeQ7b>SzSwcR*wDU5+df7Q)UCuJxt>ZQBM&H2SIrgLlDmo5=1puC?> zBlm!2o^qG;x=?_T6Eaz=wA>&QK7)hSNqtfLq0I*`QkF0v)mI{G5pEoWERml7Hr9u z9GWUz_3Ftz?rMQ*hZFp3oWZBgEX`jEtfHG(RLtwoYZZNL$JaXPYmKvz6Ti5Zo?qDs z;Rb1^@*w3|e0iro@JW`WP)rnMS?sErzpDPPYwskTQBU*JJ`C*#&?R{_E4B>(;?dJq-goq1=31b>p33~WHM^hriqnbr zbbj^J?IDE=jv=`{7>Cu3s|Lp$QPo>c1jhcuyt_cFPq)|NYl+7}@vA{KNS;k@)_;ui zaTFr6L?>i}&yW##W|`7=*LT+`)Nfb%Us}aDZzUasnJl_fulW&=t<=20q;`Yvk9f-_ zs_=jOW2z~Sb}#bwj1nVIl=T3z#LAu0XlqV{0I%o!7pioa@(Tgi-%M%IOwz<>a8pWKzP zzsz*=RQ2H}8n|^Qm4(M``&SGy8D)=_j|PqX*D!Q97mWrJDxKNBpp2ul6z45HFJ9UB z{iYA?@w}c0)52s>_q5ZGKxHushfGk$Oj{vlmZLJ4=U=APNgkMb8>R)5DFY#=+?9+_ z`%dPgTq0F$uTqw~nw5C}=0?Mt_o~6^yc&34FXe%VOmCv(Iak5$IS$v$iH`Nu|TgCA=P|q(P40$lPu}kOGY!+5Vu4O zWWC&Ur$=Dw9hg?mSd~8p7yo@^%^Pu(=^yjX#&-Hy}L34{y8^5XAt5%UK^` z_<&$@nU`u;JqckOI9L7N%LZi9#t_T#U*&iVYd~_fN>Z{L@7xsy?v2U*m3TmApTxBp zDB=>r9!+U#lV8pAP5^x!VgED9f5dfZm;Y~CSLPEYR8F$7Y-V|m<{g?z8Fw~hLZuw4 z?`2X|seFR&c%G4<--jjwR218p@&Z*g`Y7#_h?n=7z+FyuopqotNAR6>uCp+rS0%|i z6Dg4Ti*Ydb^kTndIQU`V)`#eDJx+@oDeEb24Gysp0OYGucD%bu#i*GYN2PVQ5u=5s zZV|6n$OTJ!#VW#?j{%O@xS-i5U7Zo%8Hi!|pE(k#Wx#nxO@$Q(g%2jYiC_=n@@xj1 zt&LjZj^VdzxC`Sv1jZFd>i2O6hNOuJ zUuZ2^PdG51WK7(1N@`g`a(W!P9U5AdAyd9qkAQd-YPKBqR6WF3YFkwhZpJI(Ym{H+ zeb+Y3*eVw-aCun1^KXU^#ayS~^IN2lGZd5HRiNTwks9p3&q;lSvFFOLq~Smf=PMM# zV1^+r{|`H=mc~3cc11E1<8lC+#q-=0i`a8w09el-YdJDQ$5UiP!X|OXd8ia8 z*C@!NaDOz}*2~yG$AUsyl!BtnN|6C&lKk~u7v*&-XuL@ZY4WNNxJm{F~R zrG(<2HP8_*st!8X+sAGDU!a{gDmuEi8n)93_WADqvtnU#NLl^*Qv;}dQmWgy!HnVe z>wPbVO1#Wy*)BH@ep`f6v?xXMIo8Yd=3Nx2G zA-Ap|SQI<90STn#rZpFVCub2+re}}$MnNhaksk4_skSYQ) z6<*4=qn;-85v$p(3=Pp_pUi&(MQG{4Cx>ipn#OBtrC1Kw;wjobl+L!~el-}k^UYH0 zE1iuEr3g-->^|~C4g z3J0q!2LmdGS_p zJ-+c>xoe;*q4}b!_fVGHZdJyaDp%v57i{e8J+e(*S2!-Pk^Ik@D!jgpyLJwH$|}Rx z90sxRB2W%$DE(evFYje@CScH5{pfK79Zt&XDcvbm^R>(-e0k4@!(ZT1ALi& zz}>L8D#ZZ7j0(@;)IkhSG7*rh|F(TFf)e?#HqVJ7vpCx82yhiq5kY0&xJK@Ckw}|-2R%r`J zUww&H&^Wo`!BxOA!SxXx!T9%p_+jcaMkOZQR>oIBlJqUxTu;)$M`D^qjJiCwdMq8B z5_gNQ96Uhb2JqbhMiHB?p>Wx!|3LoEaH;%;4vb+)_NZ_-{nBu-v_xZ~&tLs>VyB6W zKpmWDd=AdG{edT#bA%W+lIsfjyMLfM-lhsyoh*x5GE?wF=a38j#|qaAQ6yCqwU*rL z<=y>7uF+{=l@=fMNaMOA122ZY*o46h^8u&RE(7rxYSTQ=a`DqO=)Z|=gW*){CMk>a zH8Rqps5MCcyvj^bXRq^b(JHWc>XBBWCR>-%?+_n4`YN9~ZL~%k-0(%1J#F{WFGJ{T ze3?erN)dKYDiAxZ{OCnmbnI{v*2K4~;QiIol}Gs|FvLv+YKSHCL4 zSnq{iY9@g=RXAr1e%jJA@-Dy81^*RLjK@t_(j4;u7uOt{wVsYn*JV;M>R4tKY&c4f z#_6k?bzCiy?mb_6Q7N1sygqf%NtbjJRyQbLBy;#9$-q@7l8b^hRIB`rjiX^7|p$5f5~*ExuX%-b z#BWC#`>h;)odK9{=t;v_Ub1m>Cz?fy3#g3c=>Ma%De+5=KD3Wpy+%ls=xU@Xiq$`= z4HXqbYm}0x(N}Af16%G{u2(%on)7^r5(_H2xmBmS4l8M1(+5%sc(6^ni$6a}mX=c- z6Od&sCbx)O79^%P058R^Mm3;Ngo)E3DQkx2-GKuCoHH3rBGVH`b>$? zT!n#bEUx&^&pV>3d8$b<)i-tSi0^CK+P0)g5RwkWIlzaHJ(@Fgp|WPLF~w2lT3u!_E5G$m>Li~rlY6yirm|EwT6%QFA+f4 zB-J1dH+07&!|w7oKNnjG=x_VV*j&5l8!F6k6<}ejZiVg`BlV}qi82yzK!N0yZog70 zQbU4C=(!}%)-*8r&Eck-Ou@C@-%w%Rl>|y2wUVR?cV>8R)s@#Io?M|pQo~EjH1xn6 zwRVGQ5G?F^rME$51wvP&zM*_e3t`1XnpyPB;bJ|q)Qr#TOO24*6%$_)fXoDOLL7GM z>qWdUIPC@e_0!K+I8q-EmS)6k5cKKOr&M?g=0No+0i9>&ZE7B-DO(QYEo=cC9jMjC zCpAk`|0X7GUL&t$9aZ+<<4lNp@1(Pyu+T)ek}VTfzOK>pc_CZh>HgE@+_VZeUY$ez zbBFW1hL+l{6u0`gfPBpSvn~VTX%4%yr^|x7@Y!>y%A3J219%Krfo6 z0k)Yp?M~buy?~K+_#}I>3?&+qONl@(67l`05jDRbH(3{N>iF@ym}Zb2A51oD&Gd~> z+yh1zK1jAG!I#vK21Gt@7AkKr5-ZIps>dWzEt4_&oVR<~j~c9BpDgz`Sv2BrYj^p* zH}%tL%FjgP*Ghe+(Pd%X&`x-Y4sSj`>Mq%B&wDVn_{chP-GB*5KL$7$KWoPrEZbA0 z9S!dTh)hEn`lg!6*Sm^HnyLD(?Rq5FF$Ui;qzHg+shJf#`A6-F?ACxF5}`RPVf02- zTYZ<(6*OUp@(P3mL3K8}*~{XHX#_fBH6)UbleMn-DKD5O{{w=&aw-Ae7 z&8$N{mvJjFoXGX5HDI$i<+Qk}KW3`R%Br#Q-Zd(hAaWJ4rkN@8L$Mn)dR9CW^pe zI<}ve;t-=Dd8R$%xeyVqmx_HIyafXxma=vvU6`#m9hwMlLPk=%^t!t%MXO$Uqs;4C zu-!!L#uC~sZT^S=-9FjckBQZ+wfHEh!L(C8*z2g7b+f=1D+K_?1B@OWh_UrrIjb*K zY^AT5i-H`6!*k`+6sFg;kXcb8i2P5kPZ3)Pgs;w+t!Q?#M;;j(oM+xOQ4-Lg@eV%i z+QjXILje7S(jva@gMzIDTLI?B<2ljfe5s`dfH%3;Sr2==FKZ?D@#MaJw3wZCmX9Li2PwLd&B&~-EMx7-v+s;X4>fBkE0JzdWfc&OS=<3ssJ+!}CJ zoZ^G2*WBv6@>P@OUE;gACUAAF%l&-DbPcM7QHgI$$HWuY&8$MUkz%Xc4Fz%OzMn^g z2NC$2ku{@Tk5y`FPu|=UZ1b>8>x1>LRHv1#O2qQmjGnKV;4JMAHN7geWw$SMoS}ml zmu&hnAGmE>HvRj`&@oyDk2>s4$WaAilIQ}=I}kzyFdroIVdF-0u$TJ}cG zo^5%2#n0Nk#>$_h+TTI>|G@0Z;`L0tznT9Y;r@t17DcP(Cq4IQ?OFZg&$Cogh9h66RHST*Yh6QQ3_QpY3eukgna(^0) zGSk!R8kvg_mkhGTGVno7jrOlu{oo>1928(evSf&PRSv4r9THre!LaS0g1 zD0I5kY4(08O!3j*8F>^{#2Wkj}a^_C+kINfL7-h!OGWYO9oq* z0@Anij)?2>vez={T^;GaLD)-j}la6N#66N`r-g7QtUIgmbBqA?SzD!8UGpqe&jivq0j9!>kTQK1=!u$l?g&D zVy;Z-HQNU@+FCiDRf>Yl>mClacz3(&2@3Sk60tAkCYP{HSm5ElBfSqV((k7oQLs(k z58;tBEG9_x;DB-Lt=no9cl8j~Qe6%=mcehAfYvRyw8pKcqU`iMo3E;h*DfghYCy-{ zH)YJHgYs%3y0yQi%is%6thF^Tcqt1;o-pB_-g_On`zp5aI?!ceNs9*6nqQf0Kn8~7 zk>u~XI#UR|jUnfFLsZ7E1bM`UVUGT!mZ%Bfy89VTV4&JSz{T#M?mDb0FZ=vC7P7&?+~(DNT4j%jKolg4w!5Gcw7 zP!A1DEpUcnKlXNwy?8LAqD!)xe)J;7N=7;C*Z4p@L}8ok_@uw7EiY9y-X0-=;PFVM z8EQO4&KkRKCBgEakwu64Dr@P~EuoqqTR?bjB%l1N8W$(GpvLM7`7EyG2?w_CKZ7LN zKJb_+YEaLJqb4E+UI`$zGix}DU3GpS4YyTUxY6~A;K}pDlXgRcrriD>xV|6>o|eDu zF6jprZ}R(qakWb$OE$vAB@#dop;CkthR@HGEe3W?m1w(V>nZdRyi|}L{x5081d<9Q zn`_D)D#m&HNG{4+L=LN-9&#Fn(n|W8i2%Zn$L==eyveVO8!G^P>L%V}H$Sl2dgl&N z^6&iF*RE>dyi3uzf$VZoY=$W3D>R+NM(mQjb9ZJ)fD)2I08c!lN(1nC(Nyi)Stza{ zh8UtQ!k$mJavbs3UlkH4=YH6N*|>EsEv3D&1+-9TT%jw zksCv$7it>Ja*&jLi;1ifi(hKwL}`6>+lirc1Vu@5l-^4L%nXcXqQ3)74sS$K5N7vuu!ZP~!T<>WTx!vphhK1QXR_DFI zzor{Nf9d7-x~>^ZER1{HV0eXl6`uVt3OUncBDwMaY>ZiBKGS&jIs#x^=RhV}?8+Yq zr7&lSSUhr9v2-pN!yW%;!mGsmACdmYX#V3C3<3X%H2IVW-`j zQ*DS1X#88FV+Cena*edotG{{m@+Bs*l10^AGfZ(9eD%bp`wD_*#$s}?I`*#nRU&#v zhDk)sYFF8s&{YeQu9c)_u1O?KOw-I9HiE0*tBwJWqBlF?S5S;l8Iz^rTorq4KFcqy zwE@igD+{FnbJa#=NCMb>`ddAy1B*hxr0$7ewHK6x=5m=&*mK({U^&vifnfq2oOjv6 zWpj#aHCZsn`Aa8>apHk_meDCD#+=OJpBBrbo3M)%y_aB#N3r!S_o(i5MvErajOI6? z0J?<7K}L>1Zo0EyPo80cCcj+N}cNm$7?|{AWj7^||GR@V3@R>SIzwsdV+g~$t zG|vy>pPROrRNAXFiB-I<660-ovE^x2vN6=s5WWT=1B~s>+5v%&-Q_P9a6W?l9HFzM z+K8a1`Bmv3z|t$H1wm=NoBhjeXkKp8{exTejlD$fMlTdLiF>T-7btga?E+J8!gMPf zKHSasGvk-?*BdBL)En!{FRJMR*g@SeXS3f3u%aDKK>kw5<(2cj%yl|#;WP^FK^4}H z@UJVmRiCAsBv&^nT)m`)p?d0912;h{#OkCl=M&>P4=1xzd8~y7R4^i%}P#D zBWji9mFge&H(1aln{4^v+wjV*Q#H5U!NyxFUfK=6%lzCT_B@SR$b=0h0Hs#@hyD;H z(*eNDHxh|y&By-0a)ZxwBN#%<4q0JtwQ;dsT|HcsBgHlC5p{Z2rR?R^rdv^e{<{11 zO1Q*1N~8L-|BwjRlo9t&Z@1X8%^4ueK6ix0#MZ2~TV#{d&a%icJfA{+`xo@1CG|@a z4ux>8#Gv5BHr=&9WpHQHBu^WS!cFp?k)GM{^UbEi<6OWZ9<5kSWudfuVHX?uNq0KV zw4*}LVUQdD?(nBguSp50%eLv1%-+!n-Px~Z4zmKcG{bFjC`oeFrVF&JTHQV3ys4Vs zdHL53p4$9|Nb|yjW8*xOpLi*{-q$i=y;;nV6P$RjOYm@=^=J1dfMCIrmt9H%mAjat zAkZ7VJ!8xrU#;eRE`gKlxOPy%-PLW^)Y~I*+PsAm$@wh`ul{VKiXY_4O>JzFm9chf zN=>o@NWF57HQcxId#jGd95pVVpUQUPOPOIyld{xaGojQn%qZ-=eWPEc1a3*xl;06IWoOzy3-?=6*{RrYoqF3p-X+=%lFo#c!r0VhqH7lRJtc7@RC(gMmgszXW1 zsm0W`ZBbY6yq&Vh%~y<7)t|>vj=-neT(eKNOG*<&KTk0)CAt*W12{8=ULpjWp@x_e zy>hlZy&tPNQedUA%`h(`4nud6uPIK))FiW(~Eg;=oOaPC0L>Cw_w!S zG3ml^WX&qUxhU}d(-Dtw=jPvi)w`$flxfe5*s2a-emT=7zFK35+Z?YGUAbcb)pv0A z%b1CoX_5iM^ChY4=9o~wVs zlz)`#L{PCl*utWE6l50{%i`83`D@$*F458rNl(@P-aHrZ$a$2j$xO%T9F}AvQowsG z@n=V#^);>iVaC{V2?gtvL+a`5pUw!sJkj3wR4%%6dybJDdKCr( zCdKHJ-HYOwSUQs@hb;~2?$o0)=ZAj=f}D##x#QX^oaJvOOsaVuecP4*!a9zMruXCOTZAnHAB6qvP!r zZyP1?>(2E4#=e30w{Q&-Bvpk2AMr=71_NX0Kp9V(uVRX*Q+}nu4LIzL`dW_bUUd&P z=E8D+6GWooY#MZIa`1c7%4&Jb7k~|oHzP0_ZWuotWoz4@hc*@px zR$OWuQ6#k1nw3~z?r?uh`%FBG+*M@V023}nUTl0Z_1hfNU$f_7A% z9GtVmb7Dq-rZY!-FP3u{wS&TASPA+xQ+FahY`h?Yk{ZZlL7r__*j4ru(Vh;dpiiIdnSpAUTO7+&Sb;QVZ-eM2 zNhTVU&Q}<=J>Gdv1xvz)wv63c*6fv6_WooS$SfLdzN=Bea_5`|o0X2z@i%NpcROAt zS9io=MQn!%U_o?%!==7`dsv#_?6H1XXMQN>TCf3? z_aAF;Lt{YjBC$3MeP`K!Js=+MmAJ?4`e(T}@ z8HCd1jIFQq$ai}{Q}qE&KESETIQR@;tsR#SadqaBg?!CQVc zQRIxc%kTlR(meu>@Bb@b+&$IU(4(HdOa3)f-NnOIvc@ExecJUn~fT_e|wk z#Z1(|3^ZU)+y^+|NH=6ax@)ZMpGq_Y5a~)gXojwyp%AT4HruX77p|-(>8j_ruhXRv zOv}sHs7Frmh@(Ulx7i}-*%08S_bZ!mvE`q8Skr4FdwdYZx@Evs_iYCsLjd9lJrWC| zMQcUsKj3>RQbIpr7&TFqcBK9WK9MB~ezu|7X;*2t>1{I*omMbgY!#MJhrD4edTS5X z+@Ek9Z(K9r{pYArO}(ahLZGI`ul`tlq&2UKg~a)eXLFfxM@3NlLAR2Jmwm%zD_~>p zJN|n_Y3u#~J#!1kgo%NPBnjno#vnkc<=X;-{o4{m!Rv_~;DmJeIL@Mo+n*#Td~+ki zS3vPMS?5$HC_HhUlf|8L$YBAjt`N~4V_byZ{hU3phe~hv=PHg9M5!F>H2JnW5FBUY z?;Y{=%ilmImZ*VEk(|ZfTwZr~7Gh!HSzUe?fC-fMgbuu1t<>;+qgewjHA&Ta1}-_Z zrj1V{Drl;Q2YdY(r0WlN(raw&rv7CGs^U)ab{)RiptF?PB-xTEqyvDlvyP!-nzr1~ zOg)b=x2#kL236Pv>O#C4zac&)t_oBKeF@u7H>t5nMd)U4AFqY6r-^M){u;Tc&}Tf6 zv+iPXP-1;c--0}d?r?_+8EjK~h+>uG&e%Z8cr9RrU?MsJ)AJwsiNYD24dad(9l$lt z1j|(Qb=778rM@n2RH7kmDhdYy-BfFiQ*Sceu7InOz;dVA7O)Xp9TyhOK5E<%`rKWD z9zLbhpHmNay~+b)CRPvQ`XukdfhDOxIv#CCu)&`@O>ToM!A`LvC#vvBtf`hr0ekvU zB#Y#D7jfVmT3s9hXL&B?-aCmxW>(tI0diIl27HR_3oM0*?RgJ zxpGBPH0gf}$I##WzZ(A$P#!s-dj0i65R_A9MR7BJ=O`z;9*AoD z?c9MzE&;(rsfa{c70O=j8OM-(

c@dCx=-kQ?5i(p)f(05oWl48sHMp~aKcRy2!8 zAaN{LQI*vAHw595K5stsP7EO?)+I$%BCFSeHMrwvn;T(CgDd;GXv4yjDRGFvrzv@y zd|oWhv;#M2Fa3J8Il370%_$-Dqi386y^BTU!;-a|7@-cdwkNaXEA-ZPmrVd<&gcw4 zEjoXC=hAlz(~rm3qV-8|-SC*v~3qz6wg^jLUYE_oOGESfg{c`OwdK zj3U!;qv)nm7Ua@``>p&Yo3-Y&i8+PeCDa` zrIvNJ{k%b2Zr<4A^G-oWJ>Bj6Pdf|+Os+Hmpqm}Rg!b|SFZ1;7C*ebfsWUFtnMM%6To03ZVx+w}r)l3&b4u zaYiiAd-3PX-=D|as*P19T>hS!zT#|3H)JMB12~1S@J>#M6nHLE9<<7Q$JI<@@Z7_w d93ou)+1tdNYF>Q6HW+m5j;E`i%Q~loCIC82k9Gh6 literal 0 HcmV?d00001 diff --git a/StarterCode/data/click on books.png b/StarterCode/data/click on books.png new file mode 100644 index 0000000000000000000000000000000000000000..ec650a1b82c01e732f969732d6d651db84ae1baa GIT binary patch literal 30859 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 z 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%0Da)&_ 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 Date: Mon, 6 Jan 2020 19:58:23 -0800 Subject: [PATCH 13/22] Fixing drawing issue Fixing drawing issue Merged to develop Continue with top right, coppying top left which I've finished --- StarterCode/Library.pde | 10 +++++++--- StarterCode/StarterCode.pde | 17 ++++++++--------- StarterCode/Window.pde | 33 +++++---------------------------- 3 files changed, 20 insertions(+), 40 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 726ef46..4c57499 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -9,6 +9,7 @@ class Library { // Add one book, which is an instructions manual, so the program doesn't throw an error when generating the library. Page[] examplePages = {new Page("Access books in your library.", "click on books.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "use the side arrows.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "click exit.png", color(255, 255, 255))}; books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); + books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); spot = 0; columns = 2; currentPage = 0; @@ -87,7 +88,7 @@ class Library { } delay(50); } - triangle(0.93*width, 0.45*height, 0.97*width, 0.5*height, 0.93*width, 0.55*height); //<>// + triangle(0.93*width, 0.45*height, 0.97*width, 0.5*height, 0.93*width, 0.55*height); } if(spot>0) { fill(253, 253, 253); @@ -122,8 +123,11 @@ class Library { PImage cover = books.get(8*spot+i).getCoverImg(); cover.resize(285/columns, 285/columns); // Changed to i + 1 to make sure that it works even when the first book is book 0 - image(cover, xOffset+((i+1) % (2*columns)) * 428/columns, yOffset+((i+1) - ((i+1) % (2*columns)))/(2 * columns) * 428/columns); - } + image(cover, xOffset+((i) % (2*columns)) * 428/columns, yOffset+((i) - ((i) % (2*columns)))/(2 * columns) * 428/columns); + println("x" + (xOffset+((i) % (2*columns)) * 428/columns)); + println("y" + (yOffset+((i) - ((i) % (2*columns)))/(2 * columns) * 428/columns)); + + } if(changed == true){ background(0,0,0); drawLibrary(); diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index c90a72c..a25da12 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -31,17 +31,16 @@ void setup() { } }*/ l.addBook(b1); - l.addBook(b1); - - l.addBook(b2); - l.addBook(b2); - l.addBook(b2); - l.addBook(b2); - l.addBook(b2); - l.addBook(b2); - l.addBook(b2); l.addBook(b2); + l.addBook(b1); l.addBook(b2); + l.addBook(b1); + l.addBook(b2); + l.addBook(b1); + l.addBook(b2); + + + } void draw() { diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index a72fb44..0d3b4b5 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -34,27 +34,7 @@ class Window { boolean stay; - Statistics stat; - public Window(Book b) { - firstPage = 1; - stat = new Statistics(); - l = new Library(); - cBook = b; - cPage = cBook.pages[cBook.getCurPage()-1]; - - buttonColor = color(193, 193, 193); - button2Color = color(194, 194, 194); - - buttonHighlight = color(96, 96, 96); - button2Highlight = color(97, 97, 97); - - buttonOver = false; - button2Over = false; - homeOver = false; - - buttonClicked = false; - button2Clicked = false; - }*/ + Statistics stat = new Statistics(); void initialize(Book bs){ cBook = bs; @@ -73,14 +53,12 @@ class Window { button2Clicked = false; } + void drawWindow() { - + homeIcon = loadImage("homeicon.png"); stay = true; - } - - void drawWindow() { //displays p's data and cBook's title //p's data is the text and image //button2X-width/25 @@ -123,11 +101,10 @@ class Window { forward = false; stat.numBooksRead++; } - //<>// //displaying buttons stroke(0, 0, 0); fill(192, 192, 192); - if(back) { + if(back) { //<>// if(!buttonClicked) { fill(buttonColor); triangle(buttonX, buttonY+(buttonHeight/2), buttonX+buttonWidth, buttonY+buttonHeight, buttonX+buttonWidth, buttonY); @@ -165,7 +142,7 @@ class Window { return cBook; } - void mousePressed() { + void mousePressed() { //<>// if(buttonOver) { buttonClicked = true; } else { //<>// From 0096c810f7c06f6ade879524facdc4fdfd1e0568 Mon Sep 17 00:00:00 2001 From: davidlee04 Date: Mon, 6 Jan 2020 19:59:57 -0800 Subject: [PATCH 14/22] Update Library.pde --- StarterCode/Library.pde | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 80336ec..753514c 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -99,14 +99,22 @@ class Library { line(0, (int)((double)height/(double)10), width, (int)((double)height/(double)10)); // Books int newHeight = height - (int)((double)height/(double)10); - int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/columns - (((double) (2*columns-1)*428)/columns))); - int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); + //int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/columns - (((double) (2*columns-1)*428)/columns))); + //int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); Iterator> iter = books.entrySet().iterator(); - for(int i = 0; i < 8 && 8*spot+i < books.size(); i++){ - PImage cover = iter.next().getValue().getCoverImg(); + int xOffset = 50; + int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); + for(int i = 0; i < 4 && 4*spot+i < books.size(); i++){ + PImage cover = books.get(4*spot+i).getCoverImg(); cover.resize(285/columns, 285/columns); - image(cover, xOffset+(i % (2*columns)) * 428/columns, yOffset+(i - (i % (2*columns)))/(2 * columns) * 428/columns); + image(cover, xOffset+(i % (2)) * 428/columns, yOffset+(i - (i % (2)))/( columns) * 428/columns); } + //for(int i = 0; i < 8 && 8*spot+i < books.size(); i++){ + // + // PImage cover = iter.next().getValue().getCoverImg(); + // cover.resize(285/columns, 285/columns); + // image(cover, xOffset+(i % (2*columns)) * 428/columns, yOffset+(i - (i % (2*columns)))/(2 * columns) * 428/columns); + //} println(books.size()); if(changed){ background(0,0,0); From cbef5bfde1491d96e79ef114c7446580256f2137 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 13 Jan 2020 19:41:05 -0800 Subject: [PATCH 15/22] Library fixed, books drawn/scaling --- StarterCode/Library.pde | 65 +++++++++++++++++++++++++------------ StarterCode/StarterCode.pde | 14 ++++---- 2 files changed, 51 insertions(+), 28 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 753514c..4e58a74 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -1,3 +1,7 @@ +import java.util.TreeMap; +import java.util.Iterator; +import java.util.Map; + class Library { // is it possible to search? will be determined later but keep it in mind //ArrayList books; @@ -60,8 +64,9 @@ class Library { //draws the library void drawLibrary(){ boolean changed = false; - if(8*spot+80) { fill(253, 253, 253); + triangle(0.07*width, 0.45*height, 0.03*width, 0.5*height, 0.07*width, 0.55*height); if (mousePressed){ color c = get(mouseX, mouseY); if (c == color(253, 253, 253)){ fill(50, 50, 50); - spot+=-1; + spot--; changed = true; } delay(50); } - triangle(0.07*width, 0.45*height, 0.03*width, 0.5*height, 0.07*width, 0.55*height); - fill(255, 255, 255); } // Your library sign @@ -98,24 +101,44 @@ class Library { // Line across screen at 10% down line(0, (int)((double)height/(double)10), width, (int)((double)height/(double)10)); // Books + int coverWidth = width*285/500; + int coverHeight = height*285/500; + float xPos = width*428/500; + float yPos = height*428/500; + int newHeight = height - (int)((double)height/(double)10); - //int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/columns - (((double) (2*columns-1)*428)/columns))); - //int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); - Iterator> iter = books.entrySet().iterator(); - int xOffset = 50; - int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/columns - (double) (columns-1)* (double) 428/columns)); - for(int i = 0; i < 4 && 4*spot+i < books.size(); i++){ - PImage cover = books.get(4*spot+i).getCoverImg(); - cover.resize(285/columns, 285/columns); - image(cover, xOffset+(i % (2)) * 428/columns, yOffset+(i - (i % (2)))/( columns) * 428/columns); + float xOffset = (float) width/10; + float yOffset = (float)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) coverHeight/columns - (double) (columns-1)* (double) yPos/columns)); + + // Divide treeMap into 2d array so it can be iterated over. + ArrayList> libraryPages = new ArrayList>(); + ArrayList temporaryList = new ArrayList(); + int it = 0; + for(Map.Entry entry: books.entrySet()) { + temporaryList.add(entry.getValue()); + if (it == 3) { + it = 0; + libraryPages.add(temporaryList); + temporaryList = new ArrayList(); + } + else { + it++; + } + } + if(temporaryList.size() > 0) { + libraryPages.add(temporaryList); } - //for(int i = 0; i < 8 && 8*spot+i < books.size(); i++){ - // - // PImage cover = iter.next().getValue().getCoverImg(); - // cover.resize(285/columns, 285/columns); - // image(cover, xOffset+(i % (2*columns)) * 428/columns, yOffset+(i - (i % (2*columns)))/(2 * columns) * 428/columns); - //} - println(books.size()); + //drawing books that belong to spot/page + int bookIterator = 0; + + for(Book b:libraryPages.get(spot)) { + // iterate over treemap for each book. + PImage cover = b.getCoverImg(); + cover.resize(coverWidth/columns, coverHeight/columns); + image(cover, xOffset+(bookIterator % (2)) * xPos/columns, yOffset+(bookIterator - (bookIterator % (2)))/( columns) * yPos/columns); + bookIterator++; + } + if(changed){ background(0,0,0); drawLibrary(); diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 1ef95bb..847cbc1 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -10,15 +10,15 @@ void setup() { Book b2 = new Book("Test2", 2, p, cover2); l = new Library(); + l.addBook(new Book("1", 2, p, cover1)); + l.addBook(new Book("2", 2, p, cover2)); + l.addBook(new Book("3", 2, p, cover1)); + l.addBook(new Book("4", 2, p, cover2)); + l.addBook(new Book("5", 2, p, cover2)); + w = new Window(b1); background(0, 0, 0); - for(int i = 0; i<34; i++){ - if( (int)Math.sqrt(i)%2 ==0 ){ - l.addBook(b1); - }else{ - l.addBook(b2); - } - } + } void draw() { From 7b4a0e89cde02f4c8b6d69c12fe9275d50917691 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 13 Jan 2020 19:47:13 -0800 Subject: [PATCH 16/22] Recommit to fix userguide --- StarterCode/StarterCode.pde | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 7dfaad2..7c65225 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -6,18 +6,11 @@ void setup() { // For now, this is only used to launch the window because it requires a book to be launched. // This book isn't used otherwise and is not the same as the default book Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; - Book b2 = new Book("prueba", 3, examplePages, "Art Example Three.png"); + Book b1 = new Book("prueba", 3, examplePages, "Art Example Three.png"); l = new Library(); - l.addBook(new Book("1", 2, p, cover1)); - l.addBook(new Book("2", 2, p, cover2)); - l.addBook(new Book("3", 2, p, cover1)); - l.addBook(new Book("4", 2, p, cover2)); - l.addBook(new Book("5", 2, p, cover2)); w = new Window(b1); background(0, 0, 0); - - } void draw() { From 8a42ec02f5fba3d150cc05b728e33bb79caed9dd Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 20 Jan 2020 19:44:05 -0800 Subject: [PATCH 17/22] Moved the ExploreWindow in from the other Repo. It works, just waiting on David to finish his stuff. --- StarterCode/ExploreWindow.pde | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 StarterCode/ExploreWindow.pde diff --git a/StarterCode/ExploreWindow.pde b/StarterCode/ExploreWindow.pde new file mode 100644 index 0000000..2bc937e --- /dev/null +++ b/StarterCode/ExploreWindow.pde @@ -0,0 +1,36 @@ +import javax.swing.JOptionPane; + + +String s; +Library libra; +Window win; +boolean b = true; +class ExploreWindow{ + + + + void setup(){ + + } + void drawExploreWindow(){ + if(b){ + s = JOptionPane.showInputDialog("What book do you want to search for?"); + } + b = false; + textSize((int) ((double)1 / (double)(sqrt(s.length())*8) * (double)height)); + text("Showing Results For: " + s, (int)((double)1/(double)40 * (double)width), (int)((double)3/(double)40 * (double)height)); + l.getBooks(); + int newHeight = height - (int)((double)height/(double)10); + int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/2 - (((double) (2*2-1)*428)/2))); + int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/2 - (double) (2-1)* (double) 428/2)); + for(StarterCode.Book book: l.books){ + if(book.title.contains(s)){ + PImage cover = book.getCoverImg(); + cover.resize(285/2, 285/2); + image(cover, xOffset+(i % (2*2)) * 428/2, yOffset+(i - (i % (2*2)))/(2 * 2) * 428/2); + } + } + } + //this will do something i'm not sure what it is yet. + + } From d394ab5b48ff01db0f7178109186378796cc5b87 Mon Sep 17 00:00:00 2001 From: AnkitBisain <30300327+AnkitBisain@users.noreply.github.com> Date: Mon, 20 Jan 2020 19:50:56 -0800 Subject: [PATCH 18/22] Revert "It's the Seljuk Turks" --- StarterCode/ExploreWindow.pde | 36 ----------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 StarterCode/ExploreWindow.pde diff --git a/StarterCode/ExploreWindow.pde b/StarterCode/ExploreWindow.pde deleted file mode 100644 index 2bc937e..0000000 --- a/StarterCode/ExploreWindow.pde +++ /dev/null @@ -1,36 +0,0 @@ -import javax.swing.JOptionPane; - - -String s; -Library libra; -Window win; -boolean b = true; -class ExploreWindow{ - - - - void setup(){ - - } - void drawExploreWindow(){ - if(b){ - s = JOptionPane.showInputDialog("What book do you want to search for?"); - } - b = false; - textSize((int) ((double)1 / (double)(sqrt(s.length())*8) * (double)height)); - text("Showing Results For: " + s, (int)((double)1/(double)40 * (double)width), (int)((double)3/(double)40 * (double)height)); - l.getBooks(); - int newHeight = height - (int)((double)height/(double)10); - int xOffset = (int) ((double) 1/2 * (double) (width - (double) 285/2 - (((double) (2*2-1)*428)/2))); - int yOffset = (int)((double)height/10) + (int) ((double) 1/2 * (double) (newHeight - (double) 285/2 - (double) (2-1)* (double) 428/2)); - for(StarterCode.Book book: l.books){ - if(book.title.contains(s)){ - PImage cover = book.getCoverImg(); - cover.resize(285/2, 285/2); - image(cover, xOffset+(i % (2*2)) * 428/2, yOffset+(i - (i % (2*2)))/(2 * 2) * 428/2); - } - } - } - //this will do something i'm not sure what it is yet. - - } From 54ad48bfc671fdc9a7cf5896c6480c1fe9364ab1 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 20 Jan 2020 19:59:13 -0800 Subject: [PATCH 19/22] got buttons working broke the window buttons --- StarterCode/Library.pde | 45 +++++++++++++++---- StarterCode/StarterCode.pde | 18 ++------ .../StarterCode7272024301000574194.autosave | 15 +++++++ StarterCode/Window.pde | 2 +- 4 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 StarterCode/StarterCode7272024301000574194.autosave diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index fd31c2a..78b0281 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -13,9 +13,9 @@ class Library { // Add one book, which is an instructions manual, so the program doesn't throw an error when generating the library. Page[] examplePages = {new Page("Access books in your library.", "click on books.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "use the side arrows.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "click exit.png", color(255, 255, 255))}; - books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); - books.add(new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); books.put("User Guide", new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); + books.put("User Guide2", new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); + books.put("User Guide3", new Book("User Guide", 3, examplePages, "Centered? User Guide Title.png")); spot = 0; columns = 2; currentPage = 0; @@ -159,6 +159,7 @@ class Library { } if (mousePressed){ // top left corner button + ArrayList bookList = new ArrayList(books.values()); if (mouseX > 78 && mouseX < 214 && mouseY > 99 && mouseY < 241){ inLibrary = false; println("top left is pressed"); @@ -167,9 +168,9 @@ class Library { w.drawWindow(); }*/ ArrayList topLeftBooks = new ArrayList(); - for (int i = 0; i < books.size(); i++){ + for (int i = 0; i < bookList.size(); i++){ if (i % 4 == 0){ - topLeftBooks.add(books.get(i)); + topLeftBooks.add(bookList.get(i)); } } for (int i = 0; i < topLeftBooks.size(); i++){ @@ -184,9 +185,39 @@ class Library { inLibrary = false; println("top right is pressed"); ArrayList topRightBooks = new ArrayList(); - for (int i = 0; i < books.size(); i++){ + for (int i = 0; i < bookList.size(); i++){ if (i % 4 == 1){ - topRightBooks.add(books.get(i)); + topRightBooks.add(bookList.get(i)); + } + } + for (int i = 0; i < topRightBooks.size(); i++){ + println(topRightBooks.get(i).getTitle()); + } + w.setBook(topRightBooks.get(currentPage)); + w.drawWindow(); + } + if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453){ + inLibrary = false; + println("bottom left is pressed"); + ArrayList topRightBooks = new ArrayList(); + for (int i = 0; i < bookList.size(); i++){ + if (i % 4 == 2){ + topRightBooks.add(bookList.get(i)); + } + } + for (int i = 0; i < topRightBooks.size(); i++){ + println(topRightBooks.get(i).getTitle()); + } + w.setBook(topRightBooks.get(currentPage)); + w.drawWindow(); + } + if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453){ + inLibrary = false; + println("bottom right is pressed"); + ArrayList topRightBooks = new ArrayList(); + for (int i = 0; i < bookList.size(); i++){ + if (i % 4 == 3){ + topRightBooks.add(bookList.get(i)); } } for (int i = 0; i < topRightBooks.size(); i++){ @@ -195,8 +226,6 @@ class Library { w.setBook(topRightBooks.get(currentPage)); w.drawWindow(); } - if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453) println("button pressed"); - if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453) println("button pressed"); } } } diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index d52179e..0e83321 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -15,6 +15,7 @@ void setup() { Page[] p2 = {new Page("Text", "Art Example One.png", color(0, 0, 0))}; b1 = new Book("Test", 2, p, cover1); Book b2 = new Book("Test2", 1, p2, cover2); + Book b3 = new Book("Test3", 1, p2, cover2); w = new Window(); @@ -30,26 +31,15 @@ void setup() { l.addBook(b2); } }*/ + l.addBook(b1); l.addBook(b2); - l.addBook(b1); - l.addBook(b2); - l.addBook(b1); - l.addBook(b2); - l.addBook(b1); - l.addBook(b2); - - + l.addBook(b3); // For now, this is only used to launch the window because it requires a book to be launched. // This book isn't used otherwise and is not the same as the default book - Page[] examplePages = {new Page("Access books in your library.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Switch pages by using the side arrows.", "Centered? User Guide Title.png", color(255, 255, 255)), new Page("Return to the library by clicking exit.", "Centered? User Guide Title.png", color(255, 255, 255))}; - Book b1 = new Book("prueba", 3, examplePages, "Art Example Three.png"); - l = new Library(); - - w = new Window(b1); - background(0, 0, 0); + } void draw() { diff --git a/StarterCode/StarterCode7272024301000574194.autosave b/StarterCode/StarterCode7272024301000574194.autosave new file mode 100644 index 0000000..1d740d7 --- /dev/null +++ b/StarterCode/StarterCode7272024301000574194.autosave @@ -0,0 +1,15 @@ +Library l = new Library(new ArrayList()); +PImage coverImage; +PImage coverImage2; +void setup() { + background(0, 0, 0); + size(1000, 500); + coverImage = loadImage("Art Example Three.png"); + coverImage2 = loadImage("Art Example Two.png"); + l.addBook(new Book("La Edad de Oro", new ArrayList(), coverImage)); + l.addBook(new Book("El Presidio PolĂ­tico en Cuba", new ArrayList(), coverImage2)); +} + +void draw() { + l.drawLibrary(); +} diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index 0d3b4b5..566c9bc 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -173,7 +173,7 @@ class Window { } if(homeOver) { //have functionality to return to library - //l.drawLibrary(); + l.drawLibrary(); stay = false; } } From 466abe42a4361b7d59298a9f250badf2e332c461 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 27 Jan 2020 19:46:48 -0800 Subject: [PATCH 20/22] fixed buttons on the window --- StarterCode/Library.pde | 12 ++++++++---- StarterCode/StarterCode.pde | 4 +++- StarterCode/Window.pde | 11 ++++++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 78b0281..4ffa7cf 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -179,7 +179,8 @@ class Library { println ("Current page: " + currentPage); w.setBook(topLeftBooks.get(currentPage)); println ("Book: " + topLeftBooks.get(currentPage).getTitle()); - w.drawWindow(); + //w.drawWindow(); + inWindow=true; } if (mouseX > 289 && mouseX < 427 && mouseY > 99 && mouseY < 241){ inLibrary = false; @@ -194,7 +195,8 @@ class Library { println(topRightBooks.get(i).getTitle()); } w.setBook(topRightBooks.get(currentPage)); - w.drawWindow(); + //w.drawWindow(); + inWindow=true; } if (mouseX > 78 && mouseX < 214 && mouseY > 314 && mouseY < 453){ inLibrary = false; @@ -209,7 +211,8 @@ class Library { println(topRightBooks.get(i).getTitle()); } w.setBook(topRightBooks.get(currentPage)); - w.drawWindow(); + //w.drawWindow(); + inWindow=true; } if (mouseX > 289 && mouseX < 427 && mouseY > 314 && mouseY < 453){ inLibrary = false; @@ -224,7 +227,8 @@ class Library { println(topRightBooks.get(i).getTitle()); } w.setBook(topRightBooks.get(currentPage)); - w.drawWindow(); + //w.drawWindow(); + inWindow=true; } } } diff --git a/StarterCode/StarterCode.pde b/StarterCode/StarterCode.pde index 0e83321..ac431a1 100644 --- a/StarterCode/StarterCode.pde +++ b/StarterCode/StarterCode.pde @@ -5,7 +5,8 @@ Library l; Window w; Book b1; int currentPage; -boolean inLibrary = true; +public static boolean inLibrary = true; +public static boolean inWindow = false; void setup() { size(500, 500); String cover1 = "Art Example Two.png"; @@ -51,6 +52,7 @@ void draw() { if (inLibrary) l.drawLibrary(); // draws the book //w.draw(); + if (inWindow) w.drawWindow(); } void mousePressed() { diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index 566c9bc..cb856c2 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -114,10 +114,13 @@ class Window { } } if(forward) { + System.err.println("forward"); if(!button2Clicked) { + System.err.println("button 2 not clicked"); fill(button2Color); triangle(button2X, buttonY, button2X, buttonY+buttonHeight, button2X+buttonWidth, buttonY+(buttonHeight/2)); } else { + System.err.println("button 2 clicked"); fill(button2Highlight); triangle(button2X, buttonY, button2X, buttonY+buttonHeight, button2X+buttonWidth, buttonY+(buttonHeight/2)); } @@ -173,7 +176,9 @@ class Window { } if(homeOver) { //have functionality to return to library - l.drawLibrary(); + //l.drawLibrary(); + inLibrary = true; + inWindow = false; stay = false; } } @@ -205,13 +210,17 @@ class Window { return stat.BooksRead(); } void update() { + System.err.println("updating"); if(get(mouseX, mouseY) == buttonColor || get(mouseX, mouseY) == buttonHighlight) { + System.err.println("button over"); buttonOver = true; button2Over = false; } else if(get(mouseX, mouseY) == button2Color || get(mouseX, mouseY) == button2Highlight) { + System.err.println("button 2 over"); button2Over = true; buttonOver = false; } else { + System.err.println("no button over"); buttonOver = false; button2Over = false; } From 92ef38a69f364f0c74e0df73df779ee37aabced7 Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 27 Jan 2020 19:48:41 -0800 Subject: [PATCH 21/22] fixed black background --- StarterCode/Library.pde | 1 + 1 file changed, 1 insertion(+) diff --git a/StarterCode/Library.pde b/StarterCode/Library.pde index 4ffa7cf..f979d3f 100644 --- a/StarterCode/Library.pde +++ b/StarterCode/Library.pde @@ -73,6 +73,7 @@ class Library { } //draws the library void drawLibrary(){ + clear(); boolean changed = false; if(spot*4+4 < books.size()) { fill(254, 254, 254); From 0f4059630d1a00b4da67e8af73c256bc3f527a2a Mon Sep 17 00:00:00 2001 From: League Student Date: Mon, 27 Jan 2020 19:50:44 -0800 Subject: [PATCH 22/22] deleted error statements --- StarterCode/Window.pde | 7 ------- 1 file changed, 7 deletions(-) diff --git a/StarterCode/Window.pde b/StarterCode/Window.pde index cb856c2..d70c27b 100644 --- a/StarterCode/Window.pde +++ b/StarterCode/Window.pde @@ -114,13 +114,10 @@ class Window { } } if(forward) { - System.err.println("forward"); if(!button2Clicked) { - System.err.println("button 2 not clicked"); fill(button2Color); triangle(button2X, buttonY, button2X, buttonY+buttonHeight, button2X+buttonWidth, buttonY+(buttonHeight/2)); } else { - System.err.println("button 2 clicked"); fill(button2Highlight); triangle(button2X, buttonY, button2X, buttonY+buttonHeight, button2X+buttonWidth, buttonY+(buttonHeight/2)); } @@ -210,17 +207,13 @@ class Window { return stat.BooksRead(); } void update() { - System.err.println("updating"); if(get(mouseX, mouseY) == buttonColor || get(mouseX, mouseY) == buttonHighlight) { - System.err.println("button over"); buttonOver = true; button2Over = false; } else if(get(mouseX, mouseY) == button2Color || get(mouseX, mouseY) == button2Highlight) { - System.err.println("button 2 over"); button2Over = true; buttonOver = false; } else { - System.err.println("no button over"); buttonOver = false; button2Over = false; }