Learn math while playing games!
Scan the QR code or click here to watch trailer
- @RobzLegz - Full stack developer, project manager
- @Neetrah - Designer
- @Sanvirus - Tasks, privacy policy, game logic
- staging -> pr this branch for everything
- prod -> don't touch, this is what's running in production
Language | Typescript |
---|---|
Framework | NextJS |
Database | MongoDB |
Socket | Socket.IO |
Stylesheet | Scss |
PacMan | yarn |
- Download git here
- Download nodeJS here
- Install yarn by running
npm i -g yarn
in command line - Clone project by running
git clone https://github.com/RobzLegz/mathroom
in command line - Install dependencies with yarn
cd mathroom
+yarn install
- Run server
yarn dev
- Clone socket
git clone https://github.com/RobzLegz/mathroom-socket socket
- Install dependencies with yarn
cd socket
+yarn install
- Run socket server
yarn dev
Release | Description |
---|---|
v2.0.5 | Level customization | Bug fixes |
v2.0.4 | Bug fixes |
v2.0.3 | New levels | Bug fixes |
v2.0.2 | Bug fixes |
v2.0.1 | Credits | Bug fixes | Privacy policy |
v2.0.0 | Multiplayer | Community page |
v1.0.2 | Multiplayer | Bug fixes |
v1.0.1 | Chatroom |
v1.0.0 | Futere plans |
const renderActiveTaskFromType = (type: string, needHelp: boolean, setNeedHelp: any, multiplayer: boolean) => {
switch(type){
case "age": return <TypeAge needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time sum": return <TimeSum needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time difference": return <TimeDifference needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time difference minutes": return <TimeDifferenceMinutes needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time difference minutes2": return <TimeDifferenceMinutesSecond needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "month amount": return <MonthAmount needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "day amount": return <DayAmount needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "second amount": return <SecondAmount needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "roman numerals": return <RomanNumerals needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "kilometers apart": return <KilometersApart needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "road calculation": return <RoadCalculation needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "road calculation2": return <RoadCalculationSecond needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time calculation": return <TimeCalculation needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "m/min to m/h": return <MminToMh needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "speed calculation": return <SpeedCalculation needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "acceleration calculation": return <AccelerationCalculation needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "uniformly slow motion": return <UniformlySlowMotion needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "time from acceleration + distance": return <TimeAccelerationDistance needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "average speed": return <AverageSpeed needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "distance between2": return <DistanceBetween2 needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "pool fill": return <PoolFill needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "pool spill": return <PoolSpill needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "cookies": return <Cookies needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />;
case "flys": return <Flys needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />
case "cookie heist": return <CookieHeist needHelp={needHelp} setNeedHelp={setNeedHelp} multiplayer={multiplayer} />
}
return null;
}
const [selectedValue, setSelectedValue] = useState<number>(0);
const [time] = useState<number>(Math.floor((Math.random() * 4) + 2));
const [cookies] = useState<number>(Math.floor((Math.random() * 3) + 3));
const [correctValue] = useState<number>(time * cookies);
const completeLevel = (e: any) => {
e.preventDefault();
if(multiplayer){
if(selectedValue !== correctValue){
return completeSocketLevel(false, dispatch);
}
return completeSocketLevel(true, dispatch);
}
if(selectedValue !== correctValue){
return dispatch(setNotification({type: "error", message: "Incorrect answer!"}));
}
}