forked from Open-CT/openct-tasks
261 lines
45 KiB
JavaScript
261 lines
45 KiB
JavaScript
function initTask(subTask) {
|
|
var state = {};
|
|
var level;
|
|
var answer = null;
|
|
var data = {
|
|
easy: {
|
|
cellSize: 40,
|
|
nbCol: 12,
|
|
nbRows: 5,
|
|
xShift: 0,
|
|
yShift: 0,
|
|
// converted on https://www.base64-image.de/
|
|
imgURL: "data:image/png;base64,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"
|
|
},
|
|
medium: {
|
|
cellSize: 30,
|
|
nbCol: 24,
|
|
nbRows: 10,
|
|
xShift: 7,
|
|
yShift: -5,
|
|
imgURL: "data:image/png;base64,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"
|
|
},
|
|
hard: {
|
|
cellSize: 30,
|
|
nbCol: 20,
|
|
nbRows: 15,
|
|
xShift: 0,
|
|
yShift: 0,
|
|
imgURL: "data:image/png;base64,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"
|
|
// imgURL: " data:image/png;base64,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"
|
|
// imgURL: " data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQUAAAC4CAYAAADqtfmOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAHOgAABzoBqsXEHQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAXdEVYdFRpdGxlAGVsZXBoYW50IHNpbGhvdWV0xk4O1AAAAA50RVh0QXV0aG9yAG1vbHVtZW6SuZxRAAAAIXRFWHRDcmVhdGlvbiBUaW1lADIwMDYtMTAtMjNUMTA6MDg6MzGTfn3JAAAARnRFWHRTb3VyY2UAaHR0cHM6Ly9vcGVuY2xpcGFydC5vcmcvZGV0YWlsLzg1NS9lbGVwaGFudC1zaWxob3VldC1ieS1tb2x1bWVucw1ZigAAAFh0RVh0Q29weXJpZ2h0AENDMCBQdWJsaWMgRG9tYWluIERlZGljYXRpb24gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL8bjvfkAABlsSURBVHic7Z15tB1VlYe/l5eZQOYBQgbmAMogEpAwaERQIIgyNbOI2gLaGqS1VwssbJvVuuzlarR1aaMy2DgxiNCAhBkhQJhtwyBIQiCQBEJCCCQhyXv9x763383NrbpVp/apU3Vrf2ud9V5yq07tqnvv7+1zzj57d2EYfhkIvA/YHdgOmAxMAsYDw2ttJLAWWAOsAuYDjwB3Ag8D7+VutWEYakwATgb+C3gC+UL3ZmgrgSuBoxCBMQyjBAwBvgg8AGwkmwjEtRXAFcDhQL88bswwjHRsBXwFWIw/IYhqLwDfAMZ4v0vDMNoyBbgUWE3+YtDc1iDewz4+b9gwjNbsDVwNrCe8GDS3HuAG4P3e7r4idIU2oAAMRCbHxgLDgAFNr3cBG5BZ8beBd4HlyF+oKjAc+Dvgs8D0wLYkoQf4DXAx8HxYU8pJlURhCvKhng7sAkwEtkGWxlyew3JkLL0IeAV4DllKmw+8qmBvSEYBRwJH134OCWuOExuAXwGXAH8NbEup6GRR2A44FjgYEYLxOV57BfAX4Elkvf1RRDR6crQhDUOA/YBDgI8AM4D+QS3SYyMS63ArMA9Yhgj6G1TH20tFp4nCDsBxtfbBwLY0swp4DBGIebXfFwSwY0skkGhPYK9a2xsYFMCW0NSHgsuB1xGhWAS8iLw/TyKiUik6QRQGAccD5wL7B7YlLW8iH77HkECfF5AP5ErH/oYjS3QTgHH0DY+2RwRz+9r/G8lYCfwPMkcxB5lg7XjKLApbIEJwHvkODfJgOfAy8pfsXWTpbz0wlL6/6COQSdJ6qPCI/M2sFEuAnwOXAS8FtsVoYgAwGxkbhl4Gs1a9tgG4CTgCi6osBIcDzxD+g2HNWi/yWTwZE4cgjECi1kJ/CKxZa9WeBA7CyI2PIOPr0G+8NWtxrQf4GbK6Y3iiC/hnZAwX+g23Zi1pexHYF0OdocD1hH+DrVlzaWuAMygp3aENaMFo4BbgsNCGGIYj/YFjkCHFfYFtSU3RRGECcA+2DdboDD6ChJDfEdqQNBRJFCYB9yKblQyjUzgQCbS7PbQhSSmKKIxFPISdAtthGD6YQYk8hiKIwlBkB9teoQ0xDI8ciISvzwttSDtCi0I/ZJVhZmA7DCMPDkc2vxU6+Uvo8MxLkCQehlEFupEdl7uFNiSOkLskjwN+F9gGwwjBfCSpzTuhDWlFqOHDJOBmZD7BMKrGOCQz2HWhDWlFCFHojwjCzgGubRhF4f1Ibs8nQhvSTIg5hfOBAwJc1zCKxqUUcBk+7/H8zsg20zJmBzYMH8xFkgsXJhdknsOHLmQMtWOO1zSMojMJyQX5UGhD6uTpKZyILMcYhrEpa5CM2s+FNgTyE4UhSOqqKTldzzDKxp3AoaGNgPwmGmdjgmAYcXwU8aaDk4enMBzJRjMqh2sZRplZguwSXhXSiDwmGi9EYr4Nw4hnGBLHE3SbtW9PYSRSOMOSWRpGMtYh3kKwgjO+5xTOwQTBMNIwCLg4pAE+PYVBSAHVrT1ewzA6kY1IAeD5IS7u01M4CRMEw3ChG0krEASfovBZj30bRqfzSQJVUfclCjsj6acMw3DnwhAX9SUKZ2HJUwwjK0cQoNqUjy9uf6T24wQPfRtG1bgRGUrkhg9P4UhMEAxDi1nA7nle0IconOmhT8OoKl3AeXlfUJPhwFIkRsEwDB3WIRsKl+ZxMW1PYRYmCIahzSDg83ldTFsUjlXuzzAM4RxgYB4X0hSFoVj5eMPwxdZIrRTvaIrCR7E6Dobhk1wmHLVFwTAMf+xDDqHPJgqGUS7O9n0BrSXJcUgqKQttNgy/rAG2QdLCe0HLU5iJCYJh5MEQPCd41RIF2xFpGPnhNS2BlihYbUjDyI/pwB6+OtcQhS2QCrqGYeTHZ3x1rCEK+yHbpQ3DyI/T8bSlQEMUpiv0YRhGOkYje43U0RCFXPd6G4bx/3iZcNQQhWkKfRiGkZ7DgW21O80qCl1IklbDMPKnH3CKj06zMBHYSsMQwzCcOEO7w6yiMFXDCMMwnNkV5YzPWUVhnIoVhmFkQdVbyCoKY1WsMAwjCyehGLOQVRTGq1hhGEYWRiGlFVTIKgpjVKwwjOJxGLK6NhE4AfgNklW5qKgNIbKKwkgVKwyjeLxU+/kqcA3iok8BLkZyhxSNT6A0nM8qCpaT0ehUWg2NlwLfQsThVOCRXC2KZwBwskZHWUVhiIYRhlFAtol57T3gamTfzwzEk9iQh1FtUAl7Nk/BMFqTtB7qXGTOYQfge+RUxSmCPYAPZ+3ERMEwWpO2SPIi4OvIxOQhwKW1/8ub75PRgzdRMIzWuK6sbQTuA76KzD3sA3wb+IuSXe3YG7gbeJ9rByYKhtGaVUr9PA5chGQnm4l8YX2zH/AUcCNwFjA5zclZMzC/Rno3yzCKyirgYeBW4CpguafrzAIuRxKl5MUK4M/AC8iwZiGy7LoQWEzDRGlWUViJlJ83jDxYDFwBPIl8mFcAvUAPsiS3FZIzdAqyWW8qMgG4IzLWBwlAWlLr62XgGeBpYD7wbK2vPJgG3IXUiAzNBuRZLATuyioK68ipEq5ReX4NfA54N7QhiuwH3AMMDmxHI3OyiEI3xVibNTqfR4EP0Zmft9OBK0MbUWMxEnfhzDDEdbNmzXc7is7mKsI+3zeRGIsJkG1OYSywLMP5hpGEFUjejk70EuqMRJYs46IoNVkMPAE8VGsP0jAsy1KvoUjjIKNzmUdnCwKI8J0N/MFD30uReYsHkdWHP9NmVSWLKDRHTT2BzPBaNiZDk2dDG5ATNwJ/BD6u1N9iZGfn/cgQITFZgpeaReG+mhEbM/RpGM1UaYh6HrBeqa+hOAgC6IrCi8i662UZ+jSMZl4PbUCOPAP8VKmvkUi8Rmo0RWFB7ed1Gfo0jGaq5CkAfAe9DE97u5yURRSa9z3URWEe+UWFGZ1P1URhMfBzpb5yF4XmIjD1baKrgOcy9GsYjbwR2oAAfAeduYW9XE7KIgqNex5WsOmusiKlqTLKzZrQBgTgZeBahX4+4HKSlig0J5OYm6Ffw2jkvdAGBOI/FfqYiEMyV63hQ7MozMFhKcQwWrA2tAGBmAs8ptBP6iGEL09hAfCnDH0bRp0q78L9sUIfuYrCiIbfW+Wi+0WGvg2jTpWT+PwOWJ2xjz3TnuBr+ACS9lorpZVRXaosCquBGzL2UZjhA8iuq4cy9G8YADuHNiAwWXMt7ELK7M5ansJLEcc8nqF/wwA4KLQBgbkLeCXD+f1JmdlZY05hPdG19aoWjWboU3VR6CF7zEKqIUSWrdN1T+EVondGdvo++DLQi2TwfR7JsDMUee9GIkl2RiCx9ruGMrANE5Hkq38LbUhArkHqSLiSarLRVRT60TenEDV0ABjk2L/hTg8ybLsNuBeJLl3Z5pxjgN97tisLRwA/DG1EQB5E/vhu63h+Kk/BdfgwCkncCvGlsSY59m+kYx1wE3AaMlu/L3ABcDvtBQFgJ3+mqXBMaAMC00u2IcQepPiuu4pCY0ktE4UwbEAy9ZyJCMHRwH/jln9ge0W7fHAw8oeoymTx5LYkxXvsKgqNKdfiRGE7x/6N1vQADyDjy22BTyDFUZJ4A3HsmPF83/Sn8zM6t2Mu2d7nxEMIV1FoLHcVJwo7OPZv9NGLCME/IEJwIFLRWLPkedE9BbAhxAZkOOhK4slG14nGxp1XUaIwDnFbDDeeRKoi/Zb4ydysDCBlAdJAHIZkEK/qBimAW4DjHc9NHKvgUxSK7pIWkZeA3yBRbM/kdM2pZFuazostgEOQVZWqcgsyhHTx8HdLeqDrh6E+0bgMeCfiGJtPSMYC4HrEK9DYKpuWMg3xjqTaorAMWW7+oMO5O5DQ08q6+hDn1k517LvT6UHyWH4TWSraHjifMIIA5ROFqnOL43ndSKXrtrh6CvXyVnGiUIZxahJWICW6lyMbS7ZElgDTFL1ZhAjBHCSeICosPARTQxuQgu0RN/jp0IYE5BbgIsdzd0fmqmJxFYX6F35hzDFOOecLxPVI0c2o7NSDgPH0VcUah4QNdyOTd6/V2gsUSwSaKdvW5COptig8gsSipE6zRop5hbR0Ick0e4EvxRz3NOGrFbu2bzs+mzJST51Xlna3n8dQKn6J27PLmpshkvENF5kVc9w7joaHbreTrRp32XiK8M88TVvPplm/qshJuD27530ZtG/DRfaIOGaso9Gh2zokKUWVWEL45562neDlSZSH0UgwU9rntoEECVdcVh+mNPweNdE4JeL/i85/UL1CNmXcU3BoaAMCsxy3BEaJViBcRKG+yWkF8FbEMWVceXgNuCS0ETkzFJkULRsfC21AAZjjeN7u7Q5wEYW60iyMOaZsnsJGZLdh1RLNDm9/SCGZikXM3uF4XtsVCBdRqMdQx22EKpOn8BwST17FSLky702purcwF7f07+qeQhd9orAw5rgiewoLgMuQhCRTEM+nyFmHjNYcHdqAwLwH3OdwXqKoxjRMpW8mc3bMcfPRm2nWXFk4lWzJajuN7Qj/vri2DcDW+o+kVHwVt+9Bd6vO6qT9gjQuQUatPAymmLn6/xHJTNQqOrGqaJQ7D0U3sl5fZVzyKwykTUa0tKLQmKhhYcQxu1O8rbgLgZ+ENqKAZM3YFJrTQhsQmPnAYofzYidp04rCwbWfvUhMfys+kLLPPLiU6pY0j2M10cvKZWAvYO/QRgTGZRUidmdsGlEYBMyo/b6Y6OW7oonCaqzYbRxZqg8Vga+FNiAwLkMINVHYn74QybisQPuk6DMP7qJ68QdpKLsonECxV7t8cwfiuadBTRRmNvwetXV1Cxyq3HrGNcijKpQ9rHsA8Sthnc5S4M8pz/EiCvMjjtmf4oXNzg1tQMHphNwEZ1HOPRxapB1C7EDMTuCkorAlsF/Dv6M+SAdH/H8o1gN/CW1EwekEURgGnB3aiICkFYVhSAqETMyiL/hhI9Ex83eTPShFsz2b9cYrwGjCv08a7XXKHbadhSH0JT5K2ma07InknkLjVtXnaL2MNRgZPhQJlzXcqrEcyRJcdsYQnwmsk1kD3J/ynMh5haSi0Lj55KGIYw5ChKFIaFZR6mSiYk7KxteorreQdggRuWkxiSiMA3Zt+HeUKByexqKcsIClZHSKKIxGyutVkbSisE3UC0lEoTkYKWqJ77DE5uTHxtAGlISFoQ1Q5Dxgq9BGBOAp0lUczyQKjdVongFebHHMBFLUqssRE4VkLA9tgCKjgK+ENiIAPaTzFiJ3mCYRhcZgpFsjjvkExcyAbDsik/Gm5/5/Rb6p7mZT3qxSWYj6frZiYtQLSUShccPJ9RHHFDXhhYlCMnyHgV8GXAD83PN16oxEcg1UjdtI/pkfT5u8ClEMoC+V9EJaewNDkE1HodepW7Ufutx0Bfkk/t6Dv9H3uRlAfrEsK6lmfYjHSP6MWg4h2nkK29CnJlfXOmrmUGTPQxGxLEvh+QV9n5v1wInkExcxHDgnh+sUjTtTHNtysrHdl6YxQ8vVEccUdegAEs5ptMfX+LsXyXbVyDLgi56u18xsivsHyxdpNgA6icKU2s9HaR0jPxA4JoUReVPVQJa07Nr+ECf+ROu0fb8n+o+MJmPIT4CKwv1IHsYkOInCmNrPqyJeP6rhmCxcg3yAtKniDLQLvqoRx33xvwy86um6jZxPglJpHcS7JN8Z7CQKQ5CowF9HvH56wovHsRZ5436q0Fcz5ikkI6omaBbWIWIfxQry+Ss+AfhcDtcpEknnFSIDmOK4mOiaCGMRwcg6S/yzWn8jlPprbLZLsj0jkGUs7dn/pLU0bvVw7ea2CBnqVoUDSPZcbm51chJPIUrtT0InocoPaj9Xoj+EME+hPXviJ/Ds2oTHfQ1Z9vbJJOBkz9coEo+RbF5hbKv/bCcK3cAfI147I8FF23E3m6aSulGhz0aquE6dFh/p89YCNyU89mn8DB2bOTeHaxSFdcjiQDucslV9OuL/34eOW/fJpn59VCwa7XLjFaIeR6DZ/pDShjFIqLXvYcT0lHaVme/S/nk4hbdHKcn3ElywXXuF1kVjXlDou7EVLeV80ZiH/pfPpUjL+R7saG5VKgh0NO2fx0YcQ52bGQQsSXDBdu1fI/q/UqHvxvYpjZvuYN5C93mvxW0peDAS0+BTFJZTnQnHMSSbQN7Mk3YJAz6B7Ekfe4gu0KKdfdnXGnwnsDX6uQfuwK3q1FrgImVbmhmF7OitAm+QLH2/iih82eGcZu6idV4GgAcU+m+kiHkeisIuHvqMi01oxy+B/9UyJIIiR+Bq83CCYzKnxt8fHTfuxJhr9EPcPC2X0VK8R/P36Lrn65Bty1k4TNmm5rYMpXF0CfgS7Z/HEc0npfUUNLyEN4AbYl7vAR5UuE6daVi8QhTansIdSKRiFuaQzdtox1hgX4/9F4nHEhyzmaeQRhS2Bo5LcXwUV9E+sEJzCNHNpoVsjD60RUFrk9Ns4G2lvlpRtKJFvniK9oFhmUThi2Sfue0h2bJQ2hz27fiQcn+dgqYorCbeA0zDYvxOOkYWQukw3iW+GDRkmFMYCLxG9vHcLQmvNwBxQ7XGkXc53ncnM4i+rFoaLWonrSv9kb90PuYVOiWlfRIuJ/5ZbJadLKmncAKy2ywrSdOjrSe5gCRhBjav0MxO6E64NSdTycoGZA6rV7lfkDwhRSuE7It24c5OnkI/ZAY/qzr/lXTDlRMVrtnYqrQUlYRj0Xu2T+Mv9V09DaB2i6yQ1GEcSPxz2CwDdJI38nhgdwXjfkS67Mp/RLfCU/M+i6ozTbGvf8df5uyvI/MV2lRls1y7quKpUxb2A+aTXZXX4PYmzFG4dr2tpHi1LkPyS3Se62JkfsInlyrZ2tiqsgIBkuEq6jk83nxwO0/hRHTChG9EvpQu52kxHEkfZwhaKw+XkjwnoCs/QN8TqVKqvvkxr6VKbNuNLGdoqLLrl3Gy0vXrLaqYTdXoh06tjhXk9+W6QcHexnZqTnYXgThP65U0HZ0S01GatpTWW6ST8qSSHb3IppusYbidwC7oPM+ona4++LCSzfVWpQpSXyBe2DchavjQDVyoZNCvyZZuq2UeOUcGIbPuVUcjUes7yF+gvLgXqTalxc6KfRWduN2Smw0fokThZPTGnEkTeEZxr4oVfZyi3F8Z2VOhj8tIV/o8K71IoVotPkV1Ur8viHltAAkilbsRZdFw0VaQbegAsmSyXsmeXiTbzA4ZbSo7N5HtGa5n0+pheTHN0d6odjnFrJauTTcyGRz1HNoOqc+IOTlt+63STWlNeNbbvynZVUa6kO3DWZ5fyAnbNAVUk7RrqcZS9fNEP4Nt407s3+bktO0zSjd0naJNvcjkp++19aKiMcl4eO5W9/FPMXa5tjl0fhj8bUTf/yZTBc1zCqcCOyoaMk+pn4VK/dQZB3xeuc+ycEDG818FbtcwxJE0BVST8jFk7sqpYlJJWBDz2iaTjY2i0B+4QNGI9xCvQwMfE1oXUM3lyazbhu/EX0hzEp4geyKXVuyNJPfp1JyeC2NeixSF09GdgHsOmZDSwCURaDvGI+PJquyWq3NoxvMfUbHCnY3APZ76nozk8jjEU/8heS3mtZaiMBBdLwFk3K6Fr5x6M5FdeFVJ+70bsm04C0WYrb/bY98jkW37B3q8RgiWxLzWUhS+gFRn0kTzL7DPRJvHI7PpVViz3ixJpwOzFPrIyhOe+x+KLNv6KKkXijhR2CzN/zB0irs0t7fRE4bzPNjX3O6g85em7kHnWWmISxZGonMf7dpSOifycTzR9zm78cB+SHabrMVdWjEMvdp9WQOgkvBRZChRBPfYBzuht134anTzMaRlBfFjZC3GISstnZCQZXnMa5tsauuH5P73xUylfoYq9dOOTwPfyOlaeXMOeoI3AtmT0rKUeU7EbQfWZDKyxl/2QsUbkEnaVmyS66QfkgP/ZOAKJGGGJuOU+snzDfkXOq+q1DREFDTZHtnOHGrIlaQkmhbTkEraZR9eRuW9aLv9fTKSqPX7SF3HtbiNx94CPpjlDhrwlacvqt2mZHcR6EJiC3w9K+0szkn5Zgobtdo1+MtFmQcraX1fNzUe1GqsvqjWflf79wBgIiIWU5C//qOQyZ7GNhBZ2ngVqWH3Y6SKsAZ5u24fQ+7JR5BM3pyB3jCuFachsQtJM3VrobnknZSdkLmyVQGunZUBRIdy75SnIVo8Qr5/EV4nn8lN30wA3sT/83oPOCine6ozS8n2pO0hyj2vMIn49y9VWrYisIB8PwDn5nNb3tHeSBbXXiXfD9Z0T/fRqt1MCb80Tcwg/h4/Hs40Ny5EJkJvR2adV+HvA/AjOmNZUrOuQ9KmUYA4KVM83kdj+wmd4TWeQev7W4TMlXREXZQRSFqxWchf9u8iqd/uR5JRbiTdm78MOJPOEIQuJHVZ3qLwPPk9v8Ge72U1nZXc9SvIfW1Edi9fRETEZid8AaIYiCSPmIJMkk5FhGQEsgQzAAnoWIrUmrwb3eIzIekHfAc4G4diHxmZTn6bplbiJ5v0fUhB5XbFWcvEYKSo0yuEmaQ1CsJg4EhkJegh/A67epHVpk/lcmeCVtrAersfODpH+wtJJ3sKxuZ0IZ7Trsg2+UmIFzWZ+ALCPUjcySrErX679nMpMmR4FvmC5r1UNxgYg0RWjqv9Prqh1f89EvEQ6z/XI/ewpGb7g8havVb+j1Lzf1MxdxRkQr7yAAAAAElFTkSuQmCC"
|
|
}
|
|
};
|
|
|
|
var paper;
|
|
var paperW;
|
|
var paperH;
|
|
|
|
var cellSize;
|
|
var nbCol;
|
|
var nbRows;
|
|
var xShift;
|
|
var yShift;
|
|
var threshold = 250; // cell above this value will be rounded to 255
|
|
|
|
var grid;
|
|
|
|
var imgURL;
|
|
|
|
var gridLineAttr = {
|
|
stroke: "grey",
|
|
"stroke-width": 1
|
|
};
|
|
var altGridLineAttr = {
|
|
stroke: "grey",
|
|
"stroke-width": 2
|
|
};
|
|
var cellAttr = {
|
|
stroke: "none",
|
|
// fill: "black"
|
|
};
|
|
|
|
subTask.loadLevel = function (curLevel) {
|
|
level = curLevel;
|
|
cellSize = data[level].cellSize;
|
|
nbCol = data[level].nbCol;
|
|
nbRows = data[level].nbRows;
|
|
imgURL = data[level].imgURL;
|
|
xShift = data[level].xShift;
|
|
yShift = data[level].yShift;
|
|
paperW = cellSize * nbCol;
|
|
paperH = cellSize * nbRows;
|
|
// rng = new RandomGenerator(subTask.taskParams.randomSeed);
|
|
};
|
|
|
|
subTask.getStateObject = function () {
|
|
return state;
|
|
};
|
|
|
|
subTask.reloadAnswerObject = function (answerObj) {
|
|
answer = answerObj;
|
|
if(answer){
|
|
// rng.reset(answer.seed);
|
|
}
|
|
};
|
|
|
|
subTask.resetDisplay = function () {
|
|
displayError("");
|
|
initPaper();
|
|
initCanvas();
|
|
displayHelper.customValidate = checkResult;
|
|
};
|
|
|
|
subTask.getAnswerObject = function () {
|
|
return answer;
|
|
};
|
|
|
|
subTask.getDefaultAnswerObject = function () {
|
|
var defaultAnswer = { grid: [], cellShade: [] };
|
|
for(var iRow = 0; iRow < nbRows; iRow++){
|
|
defaultAnswer.grid[iRow] = [];
|
|
defaultAnswer.cellShade[iRow] = [];
|
|
for(var iCol = 0; iCol < nbCol; iCol++){
|
|
defaultAnswer.grid[iRow][iCol] = 0;
|
|
defaultAnswer.cellShade[iRow][iCol] = 0;
|
|
}
|
|
}
|
|
return defaultAnswer;
|
|
};
|
|
|
|
function getResultAndMessage() {
|
|
var result = checkResult(true);
|
|
return result;
|
|
}
|
|
|
|
subTask.unloadLevel = function (callback) {
|
|
callback();
|
|
};
|
|
|
|
subTask.getGrade = function (callback) {
|
|
callback(getResultAndMessage());
|
|
};
|
|
|
|
function initPaper() {
|
|
paper = subTask.raphaelFactory.create("paper","paper",paperW,paperH);
|
|
$("#paper, #container").css("width", paperW);
|
|
initGrid();
|
|
};
|
|
|
|
function initGrid() {
|
|
if(level == "easy"){
|
|
var attr = gridLineAttr;
|
|
}else{
|
|
var attr = altGridLineAttr;
|
|
}
|
|
grid = new Grid.fromArray("paper",paper,answer.grid,cellFiller,cellSize,cellSize,0,0,attr);
|
|
grid.clickCell(clickCell);
|
|
};
|
|
|
|
function initCanvas() {
|
|
$("canvas").attr({"width":paperW,"height":paperH});
|
|
var ctx = $("canvas")[0].getContext("2d");
|
|
var img = new Image();
|
|
img.addEventListener('load', function() {
|
|
ctx.fillStyle = "white";
|
|
ctx.fillRect(0,0,paperW,paperH);
|
|
ctx.drawImage(img,xShift,yShift,paperW,paperH);
|
|
for(var iRow = 0; iRow < nbRows; iRow++){
|
|
for(var iCol = 0; iCol < nbCol; iCol++){
|
|
var x = iCol * cellSize;
|
|
var y = iRow * cellSize;
|
|
var imageData = ctx.getImageData(x,y,cellSize,cellSize);
|
|
var data = imageData.data;
|
|
var cellShade = 0;
|
|
for(var iPixel = 0; iPixel < data.length/4; iPixel++){
|
|
var index = iPixel*4;
|
|
if(level != "hard"){
|
|
var shade = (data[index] + data[index + 1] + data[index + 2])/3;
|
|
}else{
|
|
var shade = data[index];
|
|
}
|
|
cellShade += shade;
|
|
}
|
|
var average = cellShade/(data.length/4);
|
|
if(average < threshold || average == 255){
|
|
answer.cellShade[iRow][iCol] = average;
|
|
}else{
|
|
answer.cellShade[iRow][iCol] = 255;
|
|
ctx.fillRect(x, y,cellSize,cellSize);
|
|
}
|
|
}
|
|
}
|
|
}, false);
|
|
img.src = imgURL;
|
|
// console.log(answer)
|
|
};
|
|
|
|
function cellFiller(data,paper) {
|
|
var x = data.xPos;
|
|
var y = data.yPos;
|
|
var entry = data.entry;
|
|
var shade = 255*(1 - entry);
|
|
var fill = "rgb("+shade+","+shade+","+shade+")";
|
|
var rect = paper.rect(x,y,cellSize,cellSize).attr(cellAttr).attr("fill",fill);
|
|
if(!entry){
|
|
rect.attr("opacity",0);
|
|
}
|
|
return [rect];
|
|
};
|
|
|
|
function clickCell(ev) {
|
|
displayError("");
|
|
unhighlightAllCells();
|
|
var row = ev.data.row;
|
|
var col = ev.data.col;
|
|
if(level != "hard"){
|
|
answer.grid[row][col] = 1 - answer.grid[row][col];
|
|
}else{
|
|
answer.grid[row][col] = ((2*answer.grid[row][col] + 1)%3)/2;
|
|
}
|
|
grid.setCell(cellFiller,{row:row,col:col,entry:answer.grid[row][col]});
|
|
};
|
|
|
|
function unhighlightAllCells() {
|
|
for(var iRow = 0; iRow < nbRows; iRow++){
|
|
for(var iCol = 0; iCol < nbCol; iCol++){
|
|
if(grid.isCellHighlighted(iRow,iCol)){
|
|
grid.unhighlightCell(iRow,iCol);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
function checkResult(noVisual) {
|
|
var error = null;
|
|
for(var iRow = 0; iRow < nbRows; iRow++){
|
|
for(var iCol = 0; iCol < nbCol; iCol++){
|
|
var cellShade = answer.cellShade[iRow][iCol];
|
|
var gridVal = answer.grid[iRow][iCol];
|
|
if(level != "hard"){
|
|
if(cellShade < 255 && gridVal == 0){
|
|
error = taskStrings.errorWhite;
|
|
}else if(cellShade == 255 && gridVal > 0){
|
|
error = taskStrings.errorBlack;
|
|
}
|
|
}else{
|
|
var whiteLimit = 2*255/3;
|
|
var blackLimit = 255/3;
|
|
if(cellShade < whiteLimit && gridVal == 0){
|
|
error = taskStrings.errorWhiteHard;
|
|
}else if(cellShade > blackLimit && gridVal == 1){
|
|
error = taskStrings.errorBlackHard;
|
|
}else if(cellShade > whiteLimit && gridVal == 0.5){
|
|
error = taskStrings.errorGreyWhite;
|
|
}else if(cellShade < blackLimit && gridVal == 0.5){
|
|
error = taskStrings.errorGreyBlack;
|
|
}
|
|
}
|
|
if(error){
|
|
if(!noVisual){
|
|
displayError(error);
|
|
grid.highlightCell(iRow,iCol);
|
|
}
|
|
return { successRate: 0, message: error };
|
|
}
|
|
|
|
}
|
|
}
|
|
if(!noVisual){
|
|
platform.validate("done");
|
|
}
|
|
return { successRate: 1, message: taskStrings.success };
|
|
};
|
|
|
|
function displayError(msg) {
|
|
$("#error").html(msg);
|
|
};
|
|
}
|
|
initWrapper(initTask, ["easy", "medium", "hard"]);
|
|
displayHelper.useFullWidth();
|