1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714 |
- <!doctype html>
- <html class="no-js" lang="">
- <head>
- <meta charset="utf-8">
- <meta http-equiv="x-ua-compatible" content="ie=edge">
- <title>心理胜任能力评估系统</title>
- <meta name="description"
- content="A website that learns to predict where you are looking at. Written in TensorFlow.js">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <link rel="stylesheet" href="normalize.css">
- <link rel="stylesheet" href="style.css">
- <style>
- .buttonArr button {
- position: fixed;
- width: 10px;
- height: 1px;
- /* opacity: 0.0; */
- z-index: 2000;
- color: #000000;
- border-radius: 10px;
- border: 0px;
- }
- .buttonArr {
- position: unset !important;
- width: 1px;
- height: 0px;
- opacity: 0.0;
- z-index: 2000;
- border-radius: 10px;
- border: 0px;
- }
- #num1 {
- position: absolute;
- left: 20px;
- top: 20px;
- }
- #num2 {
- position: absolute;
- left: 33%;
- top: 20px;
- }
- #num3 {
- position: absolute;
- left: 66%;
- top: 20px;
- }
- #num4 {
- position: absolute;
- right: 80px;
- top: 20px;
- }
- #num5 {
- position: absolute;
- left: 20px;
- top: 33%;
- }
- #num6 {
- position: absolute;
- left: 33%;
- top: 33%;
- }
- #num7 {
- position: absolute;
- left: 66%;
- top: 33%;
- }
- #num8 {
- position: absolute;
- right: 80px;
- top: 33%;
- }
- #num9 {
- position: absolute;
- left: 20px;
- top: 66%;
- }
- #num10 {
- position: absolute;
- left: 33%;
- top: 66%;
- }
- #num11 {
- position: absolute;
- left: 66%;
- top: 66%;
- }
- #num12 {
- position: absolute;
- right: 80px;
- top: 66%;
- }
- #num13 {
- position: absolute;
- left: 20px;
- bottom: 0px;
- }
- #num14 {
- position: absolute;
- left: 33%;
- bottom: 0px;
- }
- #num15 {
- position: absolute;
- left: 66%;
- bottom: 0px;
- }
- #num16 {
- position: absolute;
- right: 80px;
- bottom: 0px;
- }
- #targetMini {
- background-color: #00FF00;
- position: absolute;
- border-radius: 50%;
- height: 55px;
- width: 55px;
- /* z-index: 0; */
- opacity: 0.5;
- left: 0;
- bottom: 0;
- top: 0;
- right: 0;
- margin: auto;
- z-index: 999;
- transition: 1s;
- transition-timing-function: steps(1000, start);
- border: 2.5px solid #000000;
- }
- #target {
- /* text-align: center; */
- justify-content: center;
- background-image: url('calibrate.png');
- background-size: 120px 120px;
- /* background-color: lightgreen; */
- position: fixed;
- /* position: absolute; */
- border-radius: 50%;
- height: 120px;
- width: 120px;
- left: 0px;
- top: 0px;
- transition: left 0.01s, top 0.01s;
- box-shadow: 0 0 10px 5px white;
- opacity: 0.5;
- display: inline-block;
- z-index: 999;
- }
- #targetMini1 {
- background-color: #00FF00;
- /* position: absolute; */
- position: absolute;
- border-radius: 50%;
- height: 54px;
- width: 54px;
- /* z-index: 0; */
- opacity: 0.6;
- left: 0;
- bottom: 0;
- top: 0;
- right: 0;
- margin: auto;
- z-index: 999;
- transition: 1s;
- transition-timing-function: steps(1000, start);
- border: 3px solid #000000;
- }
- #target1 {
- /* text-align: center; */
- justify-content: center;
- background-image: url('calibrate.png');
- background-size: 60px 60px;
- /* background-color: lightgreen; */
- position: relative;
- /* position: absolute; */
- border-radius: 50%;
- height: 60px;
- width: 60px;
- left: 0px;
- top: 0px;
- transition: left 1s, top 1s;
- box-shadow: 0 0 10px 5px white;
- opacity: 0.9;
- display: inline-block;
- z-index: 999;
- }
- #refresh {
- width: 60px;
- font-size: 10px;
- position: fixed;
- top: 0px;
- left: 90%;
- display: inline-block;
- z-index: 999;
- margin-left: -40px;
- top: 2%;
- background-color: rgb(127, 178, 255);
- line-height: 30px;
- color: aliceblue;
- /* border: 1px solid; */
- text-align: center;
- border-radius: 5px;
- cursor: pointer;
- }
- #exit {
- width: 60px;
- font-size: 10px;
- position: fixed;
- top: 0px;
- left: 98%;
- display: inline-block;
- z-index: 999;
- margin-left: -40px;
- top: 2%;
- background-color: rgb(127, 178, 255);
- line-height: 30px;
- color: aliceblue;
- /* border: 1px solid; */
- text-align: center;
- border-radius: 5px;
- cursor: pointer;
- /* padding: 5px; */
- }
- #startCalibration {
- position: fixed;
- top: 0px;
- left: 50%;
- display: inline-block;
- margin-left: -40px;
- top: 30%;
- color: aliceblue;
- background-color: rgb(127, 178, 255);
- width: 80px;
- line-height: 40px;
- /* border: 1px solid; */
- text-align: center;
- border-radius: 5px;
- cursor: pointer;
- padding: 5px;
- }
- #came {
- position: fixed;
- top: 5%;
- left: 50%;
- margin-left: -100px;
- color: #ffffff;
- /* font-size: 16px;
- right:0px;
- bottom:0; */
- background-color: #666666;
- padding-top: 5px;
- padding-left: 5px;
- padding-right: 5px;
- padding-bottom: 5px;
- border-radius: 5px;
- ;
- z-index: 9999
- }
- </style>
- </head>
- <body>
- <div id="content">
- <div class="buttonArr">
- <button id='num1'> </button><button id="num2"> </button><button id="num3"> </button><button
- id='num4'> </button><br>
- <button id='num5'> </button><button id='num6'> </button><button id='num7'> </button><button
- id='num8'> </button><br>
- <button id='num9'> </button> <button id='num10'> </button> <button id='num11'> </button> <button
- id='num12'> </button><br>
- <button id='num13'> </button> <button id='num14'> </button> <button id='num15'> </button> <button
- id='num16'> </button>
- </div>
- <div id="target">
- <div id="targetMini"></div>
- </div>
- <div id="target1">
- <div id="targetMini1"></div>
- </div>
- <canvas id="solar" width="900" height="auto" style="background:#000000;position: fixed; z-index:998"></canvas>
- <div id="came">摄像头初始化中稍后再试...</div>
-
-
- <div id="exit">
- 切换游戏</div>
- <div id="refresh">
- 重新校验</div>
- <canvas id="tracker-canvas"
- style="position: fixed;top:0px;left:50%;width:250px;height:200px;margin-left:-125px;"></canvas>
- </div>
-
- <script src="js/jquery-3.3.1.min.js"></script>
- <script src="js/gazefilter.js"></script>
- <script src="js/aes.js" type="text/javascript" charset="utf-8"></script>
-
- <script>
- var pre_path = window.location.origin;
- $('#came').hide()
- var soundSrc = 'sound/fruitMus1.mp3'
- var mp3Url = soundSrc;
- var soundFlag = true;
- var cameraFlag = true
-
- var soundButtonSrc = 'sound/button.mp3'
- var mp3Button = soundButtonSrc
- var playerButton = new Audio(mp3Button);
-
- var soundHitSrc = 'sound/fruitHit.mp3'
- var mp3Hit = soundHitSrc
- var playerHit = new Audio(mp3Hit)
-
- var soundBgSrc = 'sound/fruitMusicBg.mp3'
- var mp3Bg = soundBgSrc
- var playerBg = new Audio(mp3Bg)
-
- var totalScore = 0;
- var player = new Audio(mp3Url);
- var key = CryptoJS.enc.Utf8.parse("Sp5biS+gX+#CqAFF");
- var iv = CryptoJS.enc.Utf8.parse('ud2E8l6wchltwIDA');
-
- function Encrypt(word) {
- let srcs = CryptoJS.enc.Utf8.parse(word);
- let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
- return encrypted.ciphertext.toString().toUpperCase();
- }
- function Decrypt(word) {
- let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
- let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
- let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
- let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
- return decryptedStr.toString();
- }
-
-
-
- function levelFun(level, score) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- function getQueryString(name) {
- const url_string = window.location.href;
- const url = new URL(url_string);
- return url.searchParams.get(name);
- }
-
- function saveResult(score) {
-
- let userMi = sessionStorage.getItem('b80bb7740288fda1f201890375a60c8f')
-
-
-
- let userId = userMi
-
- let associatedFlag = new Date().getTime() + '';
- var params = {
- userId: userId,
-
-
- score: score,
- testPlanId: getQueryString('testPlanId')
- }
- let paramsMi = Encrypt(JSON.stringify(params))
- let paramsLin =userId+'token'
- let tokenLin = localStorage.getItem(paramsLin);
-
-
- $.ajax({
-
- url: "http://localhost:8099/cognize/CutFruit",
- type: "POST",
- contentType: "json/application",
- dataType: 'json',
- headers: {
- 'Authorization': "Bearer " + tokenLin,
- },
- data: JSON.stringify({ data: paramsMi }),
- success: function (res) {
-
-
-
- },
- error: function (err) {
- }
- })
- }
-
- let apple;
- let appleLeft;
- let appleRight;
- let banana;
- let bananaLeft;
- let bananaRight;
- let sandia;
- let sandiaLeft;
- let sandiaRight;
- let basaha;
- let basahaLeft;
- let basahaRight;
- let bg;
- let ctx;
- let widthLeft;
-
- let button1;
- let button2;
-
-
- let fruitFlag = 1;
-
- let y = [20, 20, 20, 20];
- let speed = [1, 1.5, 1.3, 1.4];
- let x = [100, 300, 500, 700]
- let rondom;
- let timer;
-
- let fruitStart = 10
-
- let fruitEnd = 900;
-
- let flag = [true, true, true, true]
-
- let apple_x_left = x[0];
- let apple_x_right = x[0];
- let banana_x_left = x[1];
- let banana_x_right = x[1]
- let sandia_x_left = x[2];
- let sandia_x_right = x[2]
- let basaha_x_left = x[3];
- let basaha_x_right = x[3];
- let targ = [0, 0]
- let tempCanvasFruit;
- let tempCtxFruit;
- let patternFruit;
-
- let startTimeFruit;
-
- let endTimeFruit;
- let canvas = document.getElementById('solar');
- ctx = canvas.getContext("2d");
- window.addEventListener("resize", resizeCanvas, false);
- let countdownFlag = false;
- let diff = 1;
- let count = 0
-
- let diffFlag = false;
-
-
-
-
- let passFlag = 1;
-
- let trainingFlag = 1
-
- let trainOne;
- let trainTwo;
- let trainThree;
- let trainFour;
- let onStep;
- let underStep;
- let startGame;
- let backMa;
-
- let success;
-
- let soundImgClose;
- let soundImgOpen;
-
- canvas.addEventListener("mouseup", clickButton);
- function resizeCanvas() {
- canvas.width = window.innerWidth;
- x = [canvas.width / 5, canvas.width / 5 * 2, canvas.width / 5 * 3, canvas.width / 5 * 4]
- xWorm = [canvas.width / 5, canvas.width / 5 * 2, canvas.width / 5 * 3, canvas.width / 5 * 4]
-
- canvas.height = window.innerHeight;
- fruitEnd = canvas.height
- wormStart = canvas.height
-
- apple_x_left = x[0];
- apple_x_right = x[0];
- banana_x_left = x[1];
- banana_x_right = x[1]
- sandia_x_left = x[2];
- sandia_x_right = x[2]
- basaha_x_left = x[3];
- basaha_x_right = x[3];
- }
-
-
-
-
- function middleFont() {
- diffFlag = true;
- setTimeout(() => {
- diffFlag = false;
- }, 2000);
- }
- function soundChange() {
- if (soundFlag) {
- soundOpen()
- } else {
- soundClose()
- }
- }
- function clickButton(event) {
-
-
-
- let x = event.clientX - canvas.getBoundingClientRect().left;
- let y = event.clientY - canvas.getBoundingClientRect().top;
-
-
- if (trainingFlag == 1) {
- if (x > (canvas.width / 2 - 80) && x < (canvas.width / 2 + 80) && y > (canvas.height / 2 + 100) && y < (canvas.height / 2 + +100 + 80)) {
-
- soundButtonOpen()
- soundSrc = 'sound/fruitMus1.mp3'
- soundClose()
- if (soundFlag) {
- soundOpen()
- }
- trainingFlag = 2
- }
- } else if (trainingFlag == 2) {
-
-
- if (x > (canvas.width - widthLeft - 90) && x < (canvas.width - widthLeft - 58) && y > (30) && y < (76)) {
-
- soundButtonOpen()
- soundFlag = !soundFlag
- soundChange()
- }
-
- if (x > (canvas.width / 2 - 200) && x < (canvas.width / 2 + 40) && y > (canvas.height / 2 + 220) && y < (canvas.height / 2 + 220 + 80)) {
-
- soundButtonOpen()
- trainingFlag = 1
- soundClose()
- }
-
-
- if (x > (canvas.width / 2 + 40) && x < (canvas.width / 2 + 200) && y > (canvas.height / 2 + 220) && y < (canvas.height / 2 + 220 + 80)) {
-
- soundButtonOpen()
- trainingFlag = 3
- soundClose()
- soundSrc = 'sound/fruitMus2.mp3'
- if (soundFlag) {
- soundOpen()
- }
- }
-
- } else if (trainingFlag == 3) {
-
- if (x > (canvas.width - widthLeft - 90) && x < (canvas.width - widthLeft - 58) && y > (30) && y < (76)) {
- soundButtonOpen()
- soundFlag = !soundFlag
- soundChange()
-
-
- }
-
- if (x > (canvas.width / 2 - 200) && x < (canvas.width / 2 + 40) && y > (canvas.height / 2 + 220) && y < (canvas.height / 2 + 220 + 80)) {
-
- soundButtonOpen()
- trainingFlag = 2
- soundSrc = 'sound/fruitMus1.mp3'
- soundClose()
- if (soundFlag) {
- soundOpen()
- }
- }
-
-
- if (x > (canvas.width / 2 + 40) && x < (canvas.width / 2 + 200) && y > (canvas.height / 2 + 220) && y < (canvas.height / 2 + 220 + 80)) {
-
-
- soundButtonOpen()
- soundBgOpen()
- if (cameraFlag) {
- soundClose()
- calibrationAccuracy()
- } else {
- $('#came').show()
- setTimeout(() => {
- $('#came').hide()
- }, 2000);
- }
- }
- } else if (trainingFlag == 4) {
- if (x > (canvas.width / 2 - 80) && x < (canvas.width / 2 + 80) && y > (canvas.height / 2 + 220) && y < (canvas.height / 2 + 220 + 80)) {
- soundButtonOpen()
- soundBgClose();
-
- trainingFlag = 1
- $('#target').hide()
-
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- if (x > widthLeft + 40 && x < widthLeft + 98 && y > 30 && y < 76) {
- soundButtonOpen()
-
-
-
-
- window.location.href = pre_path + '/welcome/mainTable'
- }
- }
- function soundClose() {
- player.pause()
- }
- function soundOpen() {
- mp3Url = soundSrc;
- player = new Audio(mp3Url);
- player.play()
- }
-
- function soundButtonOpen() {
- playerButton.play()
- }
-
- function soundHitOpen() {
- playerHit.play()
- }
-
- function soundBgOpen() {
- playerBg.play()
- playerBg.loop = true;
- }
- function soundBgClose() {
- playerBg.pause()
- }
- function init() {
- middleFont()
-
- trainOne = new Image();
- trainTwo = new Image();
- trainThree = new Image();
- trainFour = new Image();
- onStep = new Image();
- underStep = new Image()
- startGame = new Image();
- backMa = new Image();
- soundImgClose = new Image();
- soundImgOpen = new Image();
- success = new Image();
- button1 = new Image;
-
- apple = new Image();
-
- appleLeft = new Image();
- appleRight = new Image();
-
- banana = new Image();
- bananaLeft = new Image();
- bananaRight = new Image();
-
- sandia = new Image();
- sandiaLeft = new Image();
- sandiaRight = new Image();
-
- basaha = new Image();
- basahaLeft = new Image();
- basahaRight = new Image();
- bg = new Image();
- success.src = './image/success.png'
- trainOne.src = './image/fruit1.png'
- trainTwo.src = './image/fruit2.png'
- trainThree.src = './image/fruit3.png'
- trainFour.src = './image/fruit4.png'
- onStep.src = './image/onStep.png'
- underStep.src = './image/underStep.png'
- startGame.src = './image/startGame.png'
- backMa.src = './image/backMa.png'
- soundImgClose.src = './image/close.png'
- soundImgOpen.src = './image/open.png'
- button1.src = './image/button1.png'
- apple.src = "./image/apple.png";
- appleLeft.src = './image/apple-1.png';
- appleRight.src = './image/apple-2.png';
- banana.src = './image/banana.png';
- bananaLeft.src = './image/banana-1.png';
- bananaRight.src = './image/banana-2.png';
- sandia.src = './image/sandia.png'
- sandiaLeft.src = './image/sandia-2.png'
- sandiaRight.src = './image/sandia-1.png'
- basaha.src = './image/basaha.png'
- basahaLeft.src = './image/basaha-2.png'
- basahaRight.src = './image/basaha-1.png'
- bg.src = './image/background.png'
-
-
- apple.onload = function () {
-
-
- draw()
- }
-
- }
-
-
- let wormOne;
-
- let wormTwo;
-
- let wormThree;
-
- let wormFour;
- let bgtree;
- let timerWorm;
-
- let yWorm = [600, 600, 600, 600];
- let speedWorm = [1, 1.5, 1.3, 1.4];
- let xWorm = [100, 300, 500, 700]
-
- let wormStart = 600
-
- let wormEnd = 20;
- let tempCanvas;
- let tempCtx;
- let pattern
-
- function initWorm() {
- wormOne = new Image();
- wormTwo = new Image();
- wormThree = new Image();
- wormFour = new Image();
- bgtree = new Image();
- wormOne.src = './image/bug1.png';
- wormTwo.src = './image/bug2.png';
- wormThree.src = './image/bug3.png';
- wormFour.src = './image/bug4.png';
- bgtree.src = './image/tree.png'
- wormFlag = [true, true, true, true]
- bgtree.onload = function () {
-
- drawWorm()
- }
- }
-
- function drawWorm() {
- ctx.clearRect(0, 0, canvas.width, canvas.height);
-
-
-
- tempCanvas = document.createElement('canvas');
- tempCanvas.width = canvas.width;
- tempCanvas.height = canvas.height;
- tempCtx = tempCanvas.getContext('2d');
- tempCtx.drawImage(bgtree, 0, 0, canvas.width, canvas.height);
- pattern = ctx.createPattern(tempCanvas, 'repeat');
- ctx.fillStyle = pattern;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.font = "40px Arial";
- ctx.strokeText("Hello World", 10, 50);
-
-
- ctx.drawImage(wormOne, xWorm[0], yWorm[0], 60, 60);
- ctx.drawImage(wormTwo, xWorm[1], yWorm[1], 60, 60);
-
- ctx.drawImage(wormThree, xWorm[2], yWorm[2], 60, 60);
-
- ctx.drawImage(wormFour, xWorm[3], yWorm[3], 60, 60);
- if (wormFlag[0]) {
- yWorm[0] = yWorm[0] - speedWorm[0] * random
- } else {
- yWorm[0] = yWorm[0] + speedWorm[0] * random * 1.5
- }
- if (yWorm[0] < wormEnd || yWorm[0] > wormStart) {
- yWorm[0] = wormStart
- wormFlag[0] = true
- random = Math.random() + 1
- }
- if (wormFlag[1]) {
- yWorm[1] = yWorm[1] - speedWorm[1] * random
- } else {
- yWorm[1] = yWorm[1] + speedWorm[1] * random * 1.5
- }
-
- if (yWorm[1] < wormEnd || yWorm[1] > wormStart) {
- yWorm[1] = wormStart
- wormFlag[1] = true;
- random = Math.random() + 1
- }
- if (wormFlag[2]) {
- yWorm[2] = yWorm[2] - speedWorm[2] * random
- } else {
- yWorm[2] = yWorm[2] + speedWorm[2] * random * 1.5
- }
-
- if (yWorm[2] < wormEnd || yWorm[2] > wormStart) {
- yWorm[2] = wormStart
- wormFlag[2] = true;
- random = Math.random() + 1
- }
- if (wormFlag[3]) {
- yWorm[3] = yWorm[3] - speedWorm[3] * random
- } else {
- yWorm[3] = yWorm[3] + speedWorm[3] * random * 1.5
- }
- if (yWorm[3] < wormEnd || yWorm[3] > wormStart) {
- yWorm[3] = wormStart
- wormFlag[3] = true;
- random = Math.random() + 1
- }
- let first = [xWorm[0] + 30, yWorm[0] + 30]
-
- let second = [xWorm[1] + 30, yWorm[1] + 30]
- let third = [xWorm[2] + 30, yWorm[2] + 30]
- let four = [xWorm[3] + 30, yWorm[3] + 30]
- wormCollision(first, second, third, four)
- timerWorm = requestAnimationFrame(drawWorm);
- if (fruitFlag !== 2) {
- window.cancelAnimationFrame(timerWorm)
- ctx.clearRect(0, 0, 900, 900);
- }
- }
- function draw() {
- widthLeft = (canvas.width - (1270 / 714 * canvas.height)) / 2
- ctx.clearRect(0, 0, canvas.width, canvas.height);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (trainingFlag == 1) {
- tempCanvasFruit = document.createElement('canvas');
- tempCanvasFruit.width = canvas.width;
- tempCanvasFruit.height = canvas.height;
- tempCtxFruit = tempCanvasFruit.getContext('2d');
-
- tempCtxFruit.drawImage(trainOne, widthLeft, 0, 1270 / 714 * canvas.height, canvas.height);
- patternFruit = ctx.createPattern(tempCanvasFruit, 'repeat');
- ctx.fillStyle = patternFruit;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
-
- ctx.drawImage(underStep, canvas.width / 2 - 80, canvas.height / 2 + 100, 160, 80);
-
- ctx.drawImage(backMa, widthLeft + 40, 30, 58, 46);
- }
- if (trainingFlag == 2) {
- tempCanvasFruit = document.createElement('canvas');
- tempCanvasFruit.width = canvas.width;
- tempCanvasFruit.height = canvas.height;
- tempCtxFruit = tempCanvasFruit.getContext('2d');
- tempCtxFruit.drawImage(trainTwo, widthLeft, 0, 1270 / 714 * canvas.height, canvas.height);
- patternFruit = ctx.createPattern(tempCanvasFruit, 'repeat');
- ctx.fillStyle = patternFruit;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.drawImage(trainThree, (canvas.width - (canvas.width / 2 + 200)) / 2, 80, canvas.width / 2 + 200, canvas.height / 2 + 130);
-
- ctx.drawImage(onStep, canvas.width / 2 - 200, canvas.height / 2 + 220, 160, 80);
-
- ctx.drawImage(underStep, canvas.width / 2 + 40, canvas.height / 2 + 220, 160, 80);
-
- ctx.drawImage(backMa, widthLeft + 40, 30, 58, 46);
- if (soundFlag) {
- ctx.drawImage(soundImgOpen, canvas.width - widthLeft - 90, 30, 58, 46);
- } else {
- ctx.drawImage(soundImgClose, canvas.width - widthLeft - 90, 30, 58, 46);
- }
- }
- if (trainingFlag == 3) {
- tempCanvasFruit = document.createElement('canvas');
- tempCanvasFruit.width = canvas.width;
- tempCanvasFruit.height = canvas.height;
- tempCtxFruit = tempCanvasFruit.getContext('2d');
- tempCtxFruit.drawImage(trainTwo, widthLeft, 0, 1270 / 714 * canvas.height, canvas.height);
- patternFruit = ctx.createPattern(tempCanvasFruit, 'repeat');
- ctx.fillStyle = patternFruit;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.drawImage(trainFour, (canvas.width - (canvas.width / 2 + 200)) / 2, 80, canvas.width / 2 + 200, canvas.height / 2 + 130);
-
- ctx.drawImage(onStep, canvas.width / 2 - 200, canvas.height / 2 + 220, 160, 80);
-
- ctx.drawImage(underStep, canvas.width / 2 + 40, canvas.height / 2 + 220, 160, 80);
-
- ctx.drawImage(backMa, widthLeft + 40, 30, 58, 46);
- if (soundFlag) {
-
- ctx.drawImage(soundImgOpen, canvas.width - widthLeft - 90, 30, 58, 46);
- } else {
-
- ctx.drawImage(soundImgClose, canvas.width - widthLeft - 90, 30, 58, 46);
- }
- }
- if (trainingFlag == 4) {
- tempCanvasFruit = document.createElement('canvas');
- tempCanvasFruit.width = canvas.width;
- tempCanvasFruit.height = canvas.height;
- tempCtxFruit = tempCanvasFruit.getContext('2d');
- tempCtxFruit.drawImage(trainTwo, 0, 0, canvas.width, canvas.height);
- patternFruit = ctx.createPattern(tempCanvasFruit, 'repeat');
- ctx.fillStyle = patternFruit;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-
- ctx.drawImage(backMa, widthLeft + 40, 30, 58, 46);
- if (countdownFlag) {
- gradient.addColorStop("1.0", "#D1BBFF");
-
- ctx.strokeStyle = gradient;
- ctx.font = "30px Arial";
- ctx.strokeText("倒计时:" + countdown(), canvas.width - 240, 100);
- gradient.addColorStop("1.0", "#D1BBFF");
-
- ctx.strokeStyle = gradient;
- ctx.font = "30px Arial";
- ctx.strokeText("第" + diff + '关', 100, 100);
- ctx.font = "30px Arial";
- ctx.strokeText("得分:" + count, canvas.width - 240, 150);
-
-
-
- }
- if (diffFlag) {
- gradient.addColorStop("1.0", "yellow");
-
- ctx.strokeStyle = gradient;
- ctx.font = "80px Arial";
- ctx.strokeText("第 " + diff + ' 关', canvas.width / 2 - 120, canvas.height / 2 - 100);
- }
- if (passFlag == 2) {
- gradient.addColorStop("1.0", "red");
-
- ctx.strokeStyle = gradient;
- ctx.font = "20px Arial";
- ctx.strokeText("很遗憾您已超时,继续加油!", canvas.width / 2 - 100, canvas.height / 2 - 100);
-
- ctx.drawImage(startGame, canvas.width / 2 - 80, canvas.height / 2 + 220, 160, 80);
- countdownFlag = false;
- diffFlag = false;
-
-
- }
-
- if (passFlag == 3) {
- gradient.addColorStop("1.0", "yellow");
-
- ctx.strokeStyle = gradient;
-
-
- ctx.drawImage(success, canvas.width / 2 - 325, 10);
- ctx.drawImage(startGame, canvas.width / 2 - 80, canvas.height / 2 + 220, 160, 80);
- countdownFlag = false;
- diffFlag = false;
-
-
- }
-
-
- if (flag[0]) {
- ctx.drawImage(apple, x[0], y[0], 60, 60);
- getColl()
- } else {
- apple_x_left += 0.5
- apple_x_right -= 0.5
- ctx.drawImage(appleLeft, apple_x_right, y[0], 60, 60);
- ctx.drawImage(appleRight, apple_x_left, y[0], 60, 60);
- }
- if (flag[1]) {
- ctx.drawImage(banana, x[1], y[1], 60, 30);
- getColl()
- } else {
- banana_x_left += 0.5
- banana_x_right -= 0.5
- ctx.drawImage(bananaLeft, banana_x_left, y[1], 60, 30);
- ctx.drawImage(bananaRight, banana_x_right, y[1], 60, 30);
- }
- if (flag[2]) {
- ctx.drawImage(sandia, x[2], y[2], 60, 60);
- getColl()
- } else {
- sandia_x_left += 0.5
- sandia_x_right -= 0.5
- ctx.drawImage(sandiaLeft, sandia_x_left, y[2], 60, 60);
- ctx.drawImage(sandiaRight, sandia_x_right, y[2], 60, 60);
- }
- if (flag[3]) {
- ctx.drawImage(basaha, x[3], y[3], 60, 60);
- getColl()
- } else {
- basaha_x_left += 0.5
- basaha_x_right -= 0.5
- ctx.drawImage(basahaLeft, basaha_x_left, y[3], 60, 60);
- ctx.drawImage(basahaRight, basaha_x_right, y[3], 60, 60);
- }
- random = Math.random() + 1
- y[0] = y[0] + speed[0] * random
- if (y[0] > fruitEnd) {
- y[0] = fruitStart
- flag[0] = true
- apple_x_left = x[0]
- apple_x_right = x[0]
- }
- random = Math.random() + 1
- y[1] = y[1] + speed[1] * random
- if (y[1] > fruitEnd) {
- y[1] = fruitStart
- flag[1] = true;
- banana_x_left = x[1];
- banana_x_right = x[1]
- }
- random = Math.random() + 1
- y[2] = y[2] + speed[2] * random
- if (y[2] > fruitEnd) {
- y[2] = fruitStart;
- flag[2] = true;
- sandia_x_left = x[2];
- sandia_x_right = x[2]
- }
- random = Math.random() + 1
- y[3] = y[3] + speed[3] * random
- if (y[3] > fruitEnd) {
- y[3] = fruitStart
- flag[3] = true;
- basaha_x_left = x[3]
- basaha_x_right = x[3]
- }
- }
- timer = requestAnimationFrame(draw);
- if (fruitFlag !== 1) {
-
- window.cancelAnimationFrame(timer)
- ctx.clearRect(0, 0, 900, 900);
- }
-
- }
-
- function getColl() {
- let first = [x[0] + 30, y[0] + 30]
-
- let second = [x[1] + 30, y[1] + 15]
- let third = [x[2] + 30, y[2] + 30]
- let four = [x[3] + 30, y[3] + 30]
-
- collision(first, second, third, four)
- }
-
- function countComputer() {
- if (diff == 1) {
- if (passFlag == 1) {
- count += 5
- }
- }
- if (diff == 2) {
-
- if (passFlag == 1) {
- count += 5
- }
- }
- if (diff == 3) {
-
- if (passFlag == 1) {
- count += 5
- }
- }
- }
-
- function collision(first, second, third, four) {
-
- if (flag[0]) {
- if ((Math.abs(targ[0] - (first[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (first[1])) <= (60 / 2 + 60 / 2))) {
-
- soundHitOpen()
- flag[0] = false
- countComputer()
- }
- }
-
- if (flag[1]) {
- if ((Math.abs(targ[0] - (second[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (second[1])) <= (60 / 2 + 30 / 2))) {
-
- soundHitOpen()
- flag[1] = false
- countComputer()
- }
- }
-
- if (flag[2]) {
- if ((Math.abs(targ[0] - (third[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (third[1])) <= (60 / 2 + 60 / 2))) {
-
- soundHitOpen()
- flag[2] = false
- countComputer()
- }
- }
-
-
- if (flag[3]) {
- if ((Math.abs(targ[0] - (four[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (four[1])) <= (60 / 2 + 60 / 2))) {
-
- soundHitOpen()
- flag[3] = false
- countComputer()
- }
- }
- }
-
- function wormCollision(first, second, third, four) {
-
- if ((Math.abs(targ[0] - (first[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (first[1])) <= (60 / 2 + 60 / 2))) {
-
- wormFlag[0] = false
- }
-
- if ((Math.abs(targ[0] - (second[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (second[1])) <= (60 / 2 + 60 / 2))) {
-
- wormFlag[1] = false
- }
-
- if ((Math.abs(targ[0] - (third[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (third[1])) <= (60 / 2 + 60 / 2))) {
-
- wormFlag[2] = false
- }
-
-
- if ((Math.abs(targ[0] - (four[0])) <= (60 / 2 + 60 / 2)) && (Math.abs(targ[1] - (four[1])) <= (60 / 2 + 60 / 2))) {
-
- wormFlag[3] = false
- }
- }
-
- function countdown() {
- startTimeFruit = new Date().getTime();
- let surplusTime = endTimeFruit - startTimeFruit;
- let th = Math.floor(surplusTime / (1000 * 60 * 60) % 24);
- let tm = Math.floor(surplusTime / (1000 * 60) % 60);
- let ts = Math.floor(surplusTime / 1000 % 60);
- if (ts < 10) {
- ts = '0' + ts
- }
- if (surplusTime >= 0) {
- if (!(passFlag == 2 || passFlag == 3)) {
- countdownFlag = true
- }
- return '0' + th + ':' + '0' + tm + ':' + ts
- } else {
-
-
-
-
-
- if (diff == 1) {
- if (count >= 90) {
-
- levelFun(diff, count)
- totalScore += count
- middleFont()
- speed = [1.5, 2.0, 2.3, 2.4];
-
- diff = 2;
- count = 0
-
- resetTime()
- } else {
- if (passFlag != 2) {
- levelFun(diff, count)
- }
- passFlag = 2
-
- }
- } else if (diff == 2) {
- if (count >= 60) {
- middleFont()
- levelFun(diff, count)
- totalScore += count
- speed = [2.0, 2.5, 2.8, 3.1];
- diff = 3;
- count = 0
-
- resetTime()
- } else {
- if (passFlag != 2) {
- levelFun(diff, count)
- }
- passFlag = 2
- }
- } else if (diff == 3) {
- if (count >= 45) {
- if (passFlag != 3) {
- totalScore += count
- levelFun(diff, count)
- saveResult(totalScore)
- }
- passFlag = 3
- } else {
- if (passFlag != 2) {
- levelFun(diff, count)
- }
- passFlag = 2
- }
- }
- return '00' + ':' + '00' + ':' + '00'
-
-
-
- }
- }
-
- $('#solar').hide();
- $('#exit').hide();
- $('#refresh').hide();
- let WASM_URL = "js/gazefilter.wasm";
- var buttonList = []
- $('#target').hide();
- $('#target1').hide();
- var record = {
- beforePoint: -1,
- currentPoint: 0,
- }
-
- function calibrationAccuracy() {
- $('#solar').hide();
- handleFullScreen();
- getFun()
- $('#target1').show();
- $('#startCalibration').hide();
- switchTime()
-
- $('#target1').hide()
-
-
-
-
-
- }
- $("#startCalibration").click(function () {
-
- handleFullScreen();
- getFun()
- $('#target1').show();
- $('#startCalibration').hide();
-
-
-
- $('#target1').hide()
- $('#target').show()
- clearInterval(time)
- $('#solar').show();
-
-
- init();
-
-
- });
-
- $('#exit').click(function () {
-
-
- if (fruitFlag == 1) {
- setTimeout(() => {
- initWorm()
- fruitFlag = 2
- }, 30);
- } else {
- setTimeout(() => {
- init()
- fruitFlag = 1
- }, 30);
- }
- })
- $('#refresh').click(function () {
- location.reload()
- })
- function handleFullScreen() {
- var de = document.documentElement;
- if (de.requestFullscreen) {
- de.requestFullscreen();
- } else if (de.msRequestFullscreen) {
- de.msRequestFullscreen();
- } else if (de.webkitRequestFullScreen) {
- de.webkitRequestFullScreen();
- } else if (de.mozRequestFullScreen) {
- de.mozRequestFullScreen();
- } else {
- wtx.info("当前浏览器不支持全屏!");
- }
- }
-
- function resetStatus() {
-
- passFlag = 1;
-
- speed = [1, 1.5, 1.3, 1.4];
- }
-
- function resetTime() {
- startTimeFruit = new Date().getTime();
- endTimeFruit = startTimeFruit + 180000;
- countdownFlag = true
- }
-
- function resetCount(val, value) {
-
- diff = val;
-
- count = value;
- }
-
- var time = null;
- function switchTime() {
- let a = 0
- time = setInterval(() => {
- $('#target1').show()
- $('#targetMini').show()
- if (a == 16) {
- $('#target1').hide()
- $('#target').show()
- clearInterval(time)
- $('#solar').show();
-
-
- trainingFlag = 4
-
- resetTime()
-
- resetCount(1, 0)
-
- resetStatus();
- } else {
- $('#targetMini1').css('transition', '0s');
- $('#targetMini1').css('width', 54 + 'px');
- $('#targetMini1').css('height', 54 + 'px');
- let x = buttonList[a].x1;
- x = Math.floor(x)
- let y = buttonList[a].y1;
- y = Math.floor(y)
- $('#target1').css('left', x + 'px');
- $('#target1').css('top', y + 'px');
-
- setTimeout(() => {
- $('#targetMini1').css('transition', '1s');
- $('#targetMini1').css('width', 20 + 'px');
- $('#targetMini1').css('height', 20 + 'px');
- }, 1000);
- setTimeout(() => {
- coordinates(x + 30, y + 30)
- }, 1500);
- setTimeout(() => {
- coordinates(x + 30, y + 30)
- }, 1840);
- setTimeout(() => {
- coordinates(x + 30, y + 30)
- }, 1940);
- a = a + 1
- }
- }, 2000)
- }
- function coordinates(x, y) {
- gazefilter.tracker.calibrate(
-
- window.performance.now(),
-
-
-
- x,
- y,
- 1.0
- );
- }
-
-
- function drawTargetOnScreen(position) {
- if (position != null && position.length == 2) {
-
-
-
-
- targ[0] = position[0] + 60;
- targ[1] = position[1] + 60;
- $('#target').css('left', position[0] + 'px');
- $('#target').css('top', position[1] + 'px');
-
-
-
- }
- }
-
-
- function getFun() {
- for (let i = 0; i < 16; i++) {
- let a = document.getElementById('num' + (i + 1));
- buttonList.push({
- x1: a.getBoundingClientRect().left,
- y1: a.getBoundingClientRect().top
- })
- }
- }
- async function initGazefilter() {
- cameraFlag = false
- await gazefilter.init(WASM_URL);
- console.log(1)
- await gazefilter.tracker.connect();
- let canvas = document.getElementById("tracker-canvas");
- console.log(12)
- await gazefilter.visualizer.setCanvas(canvas);
- console.log(123)
- cameraFlag = true
- await gazefilter.tracker.addListener("calib", response => {
-
- });
- }
- function startTrace() {
- gazefilter.tracker.addListener("filter", event => {
- drawTargetOnScreen(event.bestGazePoint());
- });
- }
- function hideSence() {
-
- $('#target').hide()
- $('#target1').hide()
- $('#targetMini').hide()
-
- $('#solar').show()
- }
- $("#finishcalibration").click(function () {
- window.removeEventListener("click", onmouseclick);
- $("#finishcalibration").hide();
- })
- $(document).ready(function () {
-
- resizeCanvas()
- init()
- hideSence()
-
-
- initGazefilter();
- startTrace();
- });
- </script>
- </body>
- </html>
|