Need help with euclidthegame?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kasperpeulen
443 Stars 74 Forks MIT License 123 Commits 135 Opened issues

Description

A geometry game based on Euclid's Elements.

Services available

!
?

Need anything else?

Contributors list

# 45,272
Dart
mac
guidebo...
jonschl...
98 commits
# 158,769
Shell
TypeScr...
HTML
Common ...
2 commits
# 79,798
Firefox
Chrome
Django
C
2 commits
# 314,410
raku
Homebre...
nginx
libuv
2 commits
# 31,083
Ruby
Rails
TeX
Shell
1 commit
# 64,456
F#
Telegra...
mvvm-fr...
skype
1 commit

Euclid The Game

The goal of this project is to gamify geometric challanges. We use the geogebra software for this. This game is MIT licensed, see the LICENSE file.

See the facebook group for updates about the iOS game: https://www.facebook.com/euclidthegame

Message July 2014

A year ago I posted the idea for this game at stackexchange: http://math.stackexchange.com/questions/373672/about-euclids-elements-and-modern-video-games

I hoped that I could inspire game developers to make such a game. Well, I failed ! But I did inspire myself to learn a little bit about html/javascript and geogebra, and in this way, I was able to make this game.

If you have worked with geogebra, it may be not so hard to contribute to new levels. I've written a couple of function that make it easy to test if objects/lines/circles are drawn:

function ggbOnInit() {
  ggbApplet.debug("ggbOnInit");
  ggbApplet.registerAddListener("newObjectListener");
}

function newObjectListener(obj) { // this functions can check all general objects function checkobject(target, step) { if (obj != "finished") { var cmd = "finished = (" + obj + "== " + target + ")"; ggbApplet.debug(cmd); ggbApplet.evalCommand(cmd); finished = ggbApplet.getValueString("finished"); if (finished.indexOf("true") > -1) { ggbApplet.setVisible(step, true); } } } // this functions check line segments function checksegment(target, step) { if (ggbApplet.getObjectType(obj) == "segment") { //gives beginpoint and enpoint of object var objectcmd = ggbApplet.getCommandString(obj); var openbracket = objectcmd.indexOf('[') + 1; var comma = objectcmd.indexOf(','); var closebracket = objectcmd.indexOf(']'); var beginpointobject = objectcmd.substring(openbracket, comma); var endpointobject = objectcmd.substring(comma + 1, closebracket); //gives beginpoint and endpoint of target var targetcmd = ggbApplet.getCommandString(target); var openbracket = targetcmd.indexOf('[') + 1; var comma = targetcmd.indexOf(','); var closebracket = targetcmd.indexOf(']'); var beginpointtarget = targetcmd.substring(openbracket, comma); var endpointtarget = targetcmd.substring(comma + 1, closebracket); //here it checks if endpoints of line segment are equal if (obj != "finished") { var cmd = "finished =((("+beginpointobject+"=="+beginpointtarget+")||("+beginpointobject+"=="+endpointtarget+"))&&(("+endpointobject+"=="+beginpointtarget+")||("+endpointobject+"=="+endpointtarget+")))"; ggbApplet.debug(cmd); ggbApplet.evalCommand(cmd); finished = ggbApplet.getValueString("finished"); if (finished.indexOf("true") > -1) { ggbApplet.setVisible(step, true); } } } } // this functions can check if line segment has right direction function checksegmentdirection(target, step) { if (ggbApplet.getObjectType(obj) == "segment" || ggbApplet.getObjectType(obj) == "line") { if (obj != "finished") { var cmd = "finished = (("+obj+"(1)=="+target+"(1))&&("+obj+"(-1)=="+target+"(-1)))"; ggbApplet.debug(cmd); ggbApplet.evalCommand(cmd); finished = ggbApplet.getValueString("finished"); if (finished.indexOf("true") > -1) { ggbApplet.setVisible(step, true); } } } } // this functions check if the new point is on the targetline function checkpointontarget(target, step) { if (ggbApplet.getObjectType(obj) == "point") { if (obj != "finished") { var cmd = "finished = ("+target+"(x("+obj+"))==y("+obj+"))"; ggbApplet.debug(cmd); ggbApplet.evalCommand(cmd); finished = ggbApplet.getValueString("finished"); if (finished.indexOf("true") > -1) { ggbApplet.setVisible(step, true); } } } } //here you can check all objects

//which step are neccesary to complete level if (ggbApplet.getVisible("step1") ) { ggbApplet.setVisible("complete", true); document.getElementById("level").style.visibility="visible"; } }

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.