The cure - Interactive decision tree

123 views
Skip to first unread message

Karthik G

unread,
Apr 14, 2013, 10:03:50 AM4/14/13
to crow...@googlegroups.com
Hey Ben and Max,

I made a small demo in d3.js to demonstrate an interactive tree that can be manipulated by dragging and dropping.

The Logic: 
When a node is dragged around and left, it is added as a child element to the nearest node along with all its child elements. The tree dynamically rearranges itself.

Bugs:
1. If a parent element is dropped over a child element, the code fails to run. Working on rectifying this.

The demo is housed at http://gkarthik.net/thecureprototype/
Am I on the right track here?

I set up the Java backend on my localhost but when I try to sign up as a new user, I encounter the following error that I'm copying from my logs.

Apr 14, 2013 7:29:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/thecure] threw exception [Unable to compile class for JSP: 

An error occurred at line: 14 in the generated java file
Only a type can be imported. org.scripps.combo.model.Player resolves to a package

An error occurred at line: 14 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved to a type
11: String degree = request.getParameter("degree");
12: String cancer = request.getParameter("cancer");
13: String biologist = request.getParameter("biologist");
14: Player player = new Player();
15: player.setName(username);
16: player.setPassword(password);
17: player.setIp(ip);


An error occurred at line: 14 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved to a type
11: String degree = request.getParameter("degree");
12: String cancer = request.getParameter("cancer");
13: String biologist = request.getParameter("biologist");
14: Player player = new Player();
15: player.setName(username);
16: player.setPassword(password);
17: player.setIp(ip);


An error occurred at line: 32 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved
29: boolean passwordfailed = false;
30: //try to create a new user 
31: if(newuser!=null){
32: player = Player.create(username, ip, password, email, degree, cancer, biologist); 
33: //returns null if the user name is taken
34: if(player==null){
35: nametaken = true;


Stacktrace:] with root cause
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 14 in the generated java file
Only a type can be imported. org.scripps.combo.model.Player resolves to a package

An error occurred at line: 14 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved to a type
11: String degree = request.getParameter("degree");
12: String cancer = request.getParameter("cancer");
13: String biologist = request.getParameter("biologist");
14: Player player = new Player();
15: player.setName(username);
16: player.setPassword(password);
17: player.setIp(ip);


An error occurred at line: 14 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved to a type
11: String degree = request.getParameter("degree");
12: String cancer = request.getParameter("cancer");
13: String biologist = request.getParameter("biologist");
14: Player player = new Player();
15: player.setName(username);
16: player.setPassword(password);
17: player.setIp(ip);


An error occurred at line: 32 in the jsp file: /WebContent/checkuser.jsp
Player cannot be resolved
29: boolean passwordfailed = false;
30: //try to create a new user 
31: if(newuser!=null){
32: player = Player.create(username, ip, password, email, degree, cancer, biologist); 
33: //returns null if the user name is taken
34: if(player==null){
35: nametaken = true;


Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

How do I resolve this? 

Benjamin Good

unread,
Apr 15, 2013, 1:01:43 PM4/15/13
to crow...@googlegroups.com
Hi Karthik,

The d3 tree is a useful start, though there isn't really enough here to give a lot of feedback.  I feel like it should move around a little less.  It gets confusing trying to figure out where things went after you make a change.  Let the user do the moving and then (maybe..) give them a button that says 'auto-layout').

As you think about this (and consider writing it up as a proposal), keep in mind that there are a few different elements to work with here:

1) selection of genes that will be used in the tree
2) arrangement of nodes in the tree (e.g. what you have started on)
3) selection of split points in each decision node.  Each node internally amounts to a function that says if X > threshold go one way, else go the other.  We would like to allow the user to set the threshold.

It would be worth having a look at standalone systems that do this.  I suggest you look into the WEKA machine learning system.

That is where the code we use for inferring the trees automatically comes from.  It comes with a GUI interface that will let you try out all the different algorithms.  Under 'trees' there is an interactive builder that is worth looking at.  I'm not sure we would want to copy it exactly, but it certainly shows the core functionality we are working towards here.  (though in a very nineties look and feel ;).  Related to that, have a look at this paper - it shows that interface and explains the underlying point

With regard to your error messages.  They mean that you don't have the classes from the project on the classpath for your webapp.  

Are you building the project in Eclipse (I hope)?  
Whatever dev environment you have set up, try to get a separate, simple webapp running (find a tutorial) and make sure that you get as far as using a java class compiled from source in the context of a jsp page.  I suspect that will teach what you need to know to fix the problem you have with the cure.  If not, let me know and I will try to help.

-Ben


--
--
You received this message because you are subscribed to the Google
Groups "Crowdsourcing Biology" group.
To post to this group, send email to crow...@googlegroups.com
To unsubscribe from this group, send email to
crowdbio+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/crowdbio?hl=en?hl=en
 
2012 GSoC Organization page: http://www.google-melange.com/gsoc/org/google/gsoc2012/scripps_crowdbio
GSoC Ideas page: http://sulab.org/gsoc/
---
You received this message because you are subscribed to the Google Groups "Crowdsourcing Biology" group.
To unsubscribe from this group and stop receiving emails from it, send an email to crowdbio+u...@googlegroups.com.
To post to this group, send email to crow...@googlegroups.com.
Visit this group at http://groups.google.com/group/crowdbio?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Karthik G

unread,
Apr 21, 2013, 6:22:12 PM4/21/13
to crow...@googlegroups.com

Hey Ben,

I've worked on setting up the dev environment on Eclipse. I've setup the CLASSPATH like you had suggested. I get this error when I sign up as a new user and have been stuck here for a while.

type Exception report

message java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NullPointerException
	org.scripps.combo.model.Player.lookupPlayerByName(Player.java:126)
	org.scripps.combo.model.Player.create(Player.java:291)
	org.apache.jsp.checkuser_jsp._jspService(checkuser_jsp.java:97)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

Karthik G

unread,
Apr 21, 2013, 7:16:14 PM4/21/13
to crow...@googlegroups.com
I have also setup WEKA and am attempting to visualize data from the SQL database I had downloaded from thecure repo. I'm exploring WEKA further from their online resources. 

Also I hadn't understood what you had meant by your third point, "selection of split points in each decision node.  Each node internally amounts to a function that says if X > threshold go one way, else go the other.  We would like to allow the user to set the threshold."

Are you suggesting that I allow the user to select the split points as well? 
In that case how would the game flow proceed? How would I present the nodes to the user as soon as he lands on the page? In the form of a tree or random nodes lying in an arbitrary manner? 

Benjamin Good

unread,
Apr 22, 2013, 12:36:15 PM4/22/13
to crow...@googlegroups.com
Hi Karthik,

It looks like you don't have the jdbc connection set up properly yet.  That last number in the stacktrace is a line number.  It leads back to:
line 126 in Player.java -> PreparedStatement p = conn.connection.prepareStatement(insert);

Its failing because conn is null.  Looking back earlier in that method, you will see this attempt to create it.
(line 123)-> JdbcConnection conn = new JdbcConnection();

If you then open up the JdbcConnection class (org.util.JdbcConnection).  You will see that its attempting to read connection parameters from a file in its constructor (Line 36).   InputStream in = JdbcConnection.class.getResourceAsStream("/props/database.properties") ; 

If you don't have that file in the right spot or have not adapted it to match your local db configuration, its likely the cause of the problem.  You can try setting the parameters directly in the code to see if its just failing to find that file or what.  This was mentioned here:

but I guess its not obvious if you aren't used to debugging java.  Eclipse also has a very handy debugger that it would be worthwhile to use.  You just set breakpoints by double clicking on the line number and, instead of "run" you launch with "debug".

Hope that gets you going.
-Ben


Benjamin Good

unread,
Apr 22, 2013, 12:52:03 PM4/22/13
to crow...@googlegroups.com
I bet this happened because the project comes from bitbucket with the props directory named exampleprops  ...  Sorry, you will want to rename that to props and set the relevant files in that directory.  (Its a directory under the src dir..)

This was done to avoid committing all the database passwords etc..

You are close!  
-Ben


Benjamin Good

unread,
Apr 22, 2013, 12:52:45 PM4/22/13
to crow...@googlegroups.com
Now - regarding your other query I'm going to start a new thread..

Karthik G

unread,
Apr 22, 2013, 5:09:58 PM4/22/13
to crow...@googlegroups.com
Hey Ben,

I had already setup the database properties at /props/database.properties. 
I used the debugging console on Eclipse, which is brilliant! 
On the same page - /checkuser.jsp/ I get this error on the console.
I even checked and the mysql-java-connector is in /WEB_INF/lib/. /WEB-INF/lib/ is on the classpath by default when running tomcat from eclipse so that shouldn't be an issue I guess. 

java.lang.ClassNotFoundException: com/mysql/jdbc/Driver
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:188)
at org.scripps.util.JdbcConnection.createConnection(JdbcConnection.java:71)
at org.scripps.util.JdbcConnection.<init>(JdbcConnection.java:45)
at org.scripps.combo.model.Player.lookupPlayerByName(Player.java:123)
at org.scripps.combo.model.Player.create(Player.java:291)
at org.apache.jsp.checkuser_jsp._jspService(checkuser_jsp.java:97)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1/thecure?autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8
at java.sql.DriverManager.getConnection(DriverManager.java:604)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at org.scripps.util.JdbcConnection.createConnection(JdbcConnection.java:85)
at org.scripps.util.JdbcConnection.<init>(JdbcConnection.java:45)
at org.scripps.combo.model.Player.lookupPlayerByName(Player.java:123)
at org.scripps.combo.model.Player.create(Player.java:291)
at org.apache.jsp.checkuser_jsp._jspService(checkuser_jsp.java:97)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

I'm sorry about the repeated questions on the same bug but I've got a lot of ideas and this is the only roadblock thats been stopping me. 

Karthik G

unread,
Apr 22, 2013, 5:14:14 PM4/22/13
to crow...@googlegroups.com
I've also checked that JDBCconnection.java is retrieving the required database properties by printing the details retrieved from database.properties. That seems to be fine. I cross checked the local database credentials and those are fine as well.

Benjamin Good

unread,
Apr 22, 2013, 5:25:28 PM4/22/13
to crow...@googlegroups.com
Hi Karthik,

Good you are definitely close ;).  That error shows up when you are missing that mysql connector from your classpath.  Its an annoying 'runtime' problem that won't show up in the compiler (but you should be used to those from using non-compiled languages ;).  Double-check that your Eclipse project does in fact list that jar file under the Project/Properties/Java Build Path/Libraries  .  Mine looks like the attached.

Don't worry, you almost have it...

-Ben

Screen shot 2013-04-22 at 2.18.56 PM.png

Karthik G

unread,
Apr 22, 2013, 5:56:06 PM4/22/13
to crow...@googlegroups.com
Hey Ben,

I checked the classpath the jar seems to be there. I even downloaded a later version of mysql-java-connector to see if it works but the same error persists. I'm also attaching a screen shot of the same. 
Screenshot from 2013-04-23 03:21:48.png

Benjamin Good

unread,
Apr 22, 2013, 6:47:22 PM4/22/13
to crow...@googlegroups.com
Hi Karthik,

OK, then it seems like somehow the Eclipse build process isn't working properly.  The problem is (probably) that the jar file isn't making it into the web application that is being built.  Depending on how you have Eclipse set up, it will be deploying the web application into a tomcat installation somewhere on your computer.  You should see this structure wherever you have it set up
tomcat-home-dir/webapps/cure/WEB-INF/lib/*.jar  

there should also be 
tomcat-home-dir/webapps/cure/WEB-INF/classes/
with the java classes compiled from the source.

Once you think you have found it, verify that you have it all correct by changing something in eclipse and redeploying - should see timestamps in there change..

I've hit exactly this problem before.  Its definitely an issue getting that jar file onto the classpath viewable by the tomcat webapp when it runs..

-ben








Karthik G

unread,
Apr 23, 2013, 5:36:10 PM4/23/13
to crow...@googlegroups.com
Hey Ben,

I finally resolved the issue after many hours. Turns out it was a simple file permissions error. All I had to do was set the file permissions in the WEB-INF folder to 777 and it all worked. I moved past the error but now I have another one :|.

This time its  javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/scripps/combo/model/Player at checkuser.jsp

I read up that this error occurs when the class is not available at runtime but is available during compilation. I'm working to rectify it.
 
Will it be okay if I could write a blog entry with a little more information about setting up the cure on Eclipse on localhost? There are some trivial issues beginners like me could circumvent with ease if we know what to do exactly. 

Benjamin Good

unread,
Apr 23, 2013, 5:50:33 PM4/23/13
to crow...@googlegroups.com
Hi Karthik,

A blog post about setting it up would clearly be useful, sorry its been such a struggle..  

That error looks like the same problem as before.  In this case you need to be sure that the Player.class file actually shows up and is accessible in the classes/ directory under WEB-INF .  If you have some kind of permissions problem that needs fixing, keep in mind that its going to use a folder structure underneath classes/ dir that matches the java package structure.  e.g. WEB-INF/classes/org/scripps/combo/model/Player.class

If you have Eclipse and tomcat set up properly this should not be an issue.  Its going to need to keep making changes to the WEB-INF/* area where the app is running as you develop so will certainly need write permission..  Seems like maybe something went off track when you put tomcat on your machine.  Were you able to get a tutorial app running so you could verify the code-compile-deploy-test cycle in a simple project?

-ben

Karthik G

unread,
Apr 23, 2013, 7:35:32 PM4/23/13
to crow...@googlegroups.com
Hey Ben,

From what I understand, I'll need to compile all the .java files in /org and convert /org into a .jar file and then transfer this jar into the WEB-INF folder. Is this correct? If it is, is there some way I can do it all in one step or is manually doing it for every folder the only way? 

Karthik G

unread,
Apr 23, 2013, 7:36:42 PM4/23/13
to crow...@googlegroups.com
Yes Ben. I did put in a tutorial app, but that turned out to be relatively simple. I don't know what exactly is wrong with my Eclipse setup. Will check it properly but I had read somewhere that permissions could be problematic in ubuntu and thats how I figured it out. 

Benjamin Good

unread,
Apr 24, 2013, 12:08:24 AM4/24/13
to crow...@googlegroups.com
On Tue, Apr 23, 2013 at 4:35 PM, Karthik G <xraydif...@gmail.com> wrote:
Hey Ben,

From what I understand, I'll need to compile all the .java files in /org and convert /org into a .jar file and then transfer this jar into the WEB-INF folder. Is this correct? If it is, is there some way I can do it all in one step or is manually doing it for every folder the only way? 

No, you don't want to do it that way.. though the essence is right in that you need to get the compiled files into that folder.  Java works just fine via the .class files as long as the classpath is set up properly.  Jar files are just collections of those files.  You don't want or need to package everything up in jar files to make it work.  

If you get Eclipse (or any other java web dev environment) set up properly this is all taken care of automatically.  When Eclipse "builds" the project (which by default happens every time you change a file), it should be attempting to compile the java source files and deposit them in the tomcat container that its hooked up to.  

-Ben

Karthik G

unread,
Apr 24, 2013, 10:29:22 AM4/24/13
to crow...@googlegroups.com

I've got the server side running finally. I just re did the whole thing although all the problems before exposed a lot of the code to me.

I will get on to make mock ups for the front end of the  game process now.

Benjamin Good

unread,
Apr 24, 2013, 1:38:18 PM4/24/13
to crow...@googlegroups.com
Yay!  

Karthik G

unread,
Apr 24, 2013, 4:34:33 PM4/24/13
to crow...@googlegroups.com

Thank you :). It took me long.

I started a separate thread with a rough mock up. Please tell me if it is on the right track.

Karthik G

unread,
Apr 24, 2013, 6:07:40 PM4/24/13
to crow...@googlegroups.com

Hey Ben,

So I rustled up a mock up in photo shop for the game and came up with a rough gameplay.

User flow:
1. User logins in and goes to a rules and an introduction page similar to now.
2. The game basically begins with us  providing one seed node. This is the first node from where the user can go about providing child nodes by selecting the parent node and searching for relevant properties. This would also be the stage where we could provide suggestions.
3. As and when the user updates the tree we dynamically provide the score and show the wrong connections and splits in red.
4. we time him and keep record of the score. 
5. When the user ends the game, we show him his score and time and give him an option to share it on his social profiles. 
4. When he ends the game we could also show him a tree with the highest score that we could compute if possible. 
5. So essentially the user who plays longest and best will have the highest score.

Does this gameplay seem on the right track? 
Also I've attached a mock up i drew up in photo shop.

mockup_cure.jpg
Reply all
Reply to author
Forward
0 new messages