From e8cc605965d85f0c2a40ef57675b7049897be86d Mon Sep 17 00:00:00 2001 From: bigJIU <1572204178@qq.com> Date: Fri, 9 Dec 2022 21:41:03 +0800 Subject: [PATCH] Add Welcome & Fixed issues --- .idea/workspace.xml | 638 ++------------------------- Flask/.idea/.gitignore | 8 - Flask/.idea/Flask.iml | 8 - IDManager.py | 15 +- __pycache__/IDManager.cpython-39.pyc | Bin 3654 -> 3655 bytes __pycache__/main.cpython-39.pyc | Bin 5244 -> 5866 bytes data/annotation.csv | 15 + data/questionare.csv | 36 ++ img/welcome.png | Bin 0 -> 10473 bytes main.py | 50 ++- templates/GameAnnotation.html | 40 +- templates/GameAnnotation2.html | 12 +- templates/GameOver.html | 27 +- templates/GamePlay.html | 25 +- templates/GameQuestion.html | 78 +++- templates/GameTutorial.html | 23 +- templates/GameWelcome.html | 287 ++++++++++++ templates/data.js | 1 + 18 files changed, 567 insertions(+), 696 deletions(-) delete mode 100644 Flask/.idea/.gitignore delete mode 100644 Flask/.idea/Flask.iml create mode 100644 img/welcome.png create mode 100644 templates/GameWelcome.html diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 51d561a..1b2be68 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,617 +2,21 @@ - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + @@ -732,7 +139,22 @@ + + + @@ -803,7 +229,7 @@ - + \ No newline at end of file diff --git a/Flask/.idea/.gitignore b/Flask/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/Flask/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/Flask/.idea/Flask.iml b/Flask/.idea/Flask.iml deleted file mode 100644 index d0876a7..0000000 --- a/Flask/.idea/Flask.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/IDManager.py b/IDManager.py index 8594f1e..8d7d543 100644 --- a/IDManager.py +++ b/IDManager.py @@ -6,7 +6,7 @@ class idManager(): levelNum = 200 typeNum = 100 - timeMin = 1 + timeMin = 0 tutorialMax = 3 ip_dic = {} ip_recent = {} @@ -18,6 +18,7 @@ class idManager(): def __int__(self): self.levelNum = 200 self.typeNum = 100 + self.timeMin = 0 def getLevels(self, ip): if ip not in self.ip_dic.keys(): @@ -85,14 +86,14 @@ class idManager(): self.ip_time[ip] = 0 def getTimes(self, ip): - print(self.ip_time[ip]) + if ip not in self.ip_time.keys(): - return 0 + self.ip_time[ip] = 0 + + if self.ip_time[ip] >= self.timeMin: + return 1 else: - if self.ip_time[ip] >= self.timeMin: - return 1 - else: - return 0 + return 0 def addTimes(self, ip): if ip not in self.ip_time.keys(): diff --git a/__pycache__/IDManager.cpython-39.pyc b/__pycache__/IDManager.cpython-39.pyc index f776f45ab45cebd7f12fa25255bb561ad40b3121..75fde18f7e850932a43db866ebe077d488eba711 100644 GIT binary patch delta 578 zcmYL`O-mb56o%)__e^@D*2X}Mf&{9g)~^T(iVL9|OXEUCv7kgJXzXahb>g=R@h6;( z;MPrWW%Unqqbpb4Wm_n?(X9xA=S&D*n1^%EeR=Ph_ui)NQX(gWtI)d1;OhOANC8Of zhV)bm^?W!|mK9$mg0B%(Uzt%nJu5Xjl{y0mo>sMk{7yc|mN%O3SOo ztxy(&ch#fS3DekOpTHcR*`qLw=T3U)NZC+-8M4<`XDB85D3^+sjna^8M+QB7W%MgH zRrtqEVAgTs3$)peB3I+!;+k`yvxv`KJLmhel-l+R>h4*hW>k&QTwysZ%0e!XO?c%F z!aDwQi_QSwFjzM)#Tp^Rlh`2~;A`v!j`8`!caMXwCCF1mYT3vY$0fTM(Vznuh~CeA dyzgfWF*1x{#svNr<6z*EXg8ym8O7#!<_);Ddr|-Z delta 636 zcmYL`O>fgc5QcYbZ@qEqG;Qke6(LZig4>GHP$~pHfZ&FjOCoV=71dVjkThZAmKJ>A z;|Nk!%>j;ZjF6BZH+}&955B^sH!d7N6=Eh3u;oXy@4VyLojojlF1dBrbp$=%?fvyH zAKVha5zfHWQl7K`60s%%g9w4B3g4_~lXPtnd?QuOa3^e5wp*zk?{z{7@D;2|&Wipq zcwlIW1#=#3ylqZHiVgET6#FmDLjZ|2d1IEl=yApbLoqx?fiX$&EuG=Gh@a#on8qXd z&}F@64D|z5z$YUP+`<~hQD<$vy%pM7Lly}A}HlQ$NLXg~s|#B%_V&`cWe#&|1sK%Wbs`Y%hmd0*a zu!q00KOw;%qj!Cq{ewH0A6Duyj(FhuB4e=gGPc~g)0cU@z*uBlWh^mnV&7e+U4L`W T<_C9somGS3;DMUNa?bk=pe>9v diff --git a/__pycache__/main.cpython-39.pyc b/__pycache__/main.cpython-39.pyc index b2fc01167fe7dd66530fac93261bbf69cc99a08c..3757539545e8d74cabc17eb5cc72513d9d4eb7d5 100644 GIT binary patch delta 2631 zcmZWqTW=Fb6yBL#uh;9fV>?cqn~5EAu?Z03KtdsuOTr}uLZDPdmXNSAOXA=-VZ5Ob z1*L5et&k!Sjp(z}st>%h52z1S|3IZm?Ym!4`_!ANKDJdQdd{pbA+@x}v)`PVIrGgo z-~OBW^*}He2$%}|nn%U#cP(4NF7oHrpuNt_Y{a(8&CI_|n8gB*lns)NN+bwK6AMYC z#kLljS(rsw^BiT-P0CtWtL$l&xiQFXW9<@&Nu&diPSz!nHi^Um*~7Xe(k_w2_Bvrn z)+3<~xx`);nIm$6Ue+h^PMO*dg9lhjB3%+m1G0||N+d4F?yrwMzz#}$kIWo`%tLHg zBHa?n05ZZ3KT_6Vw+T7;NPX}q8+%LWi##?Gw+m7@mF{X~hEI=j@eFDKz76>DED1R(IP!Hc;Q_5bZZxi|N zg^d|=#x^C2qm_*{7xiruiTGrWwoNt&^qY>KnQMgkH|YlKk14Q6Ynq2(iL7_Ikb7XW zQmwHp{#G*q3-{!#I7>XAD~Kc7vt%5LYK5RsljuaJI>`|FioVj+2niD2BYx9TrWg8U z`8^`;iA_4BtgR_fDc#gyO?7%TjO<;nPJD3QSuCX0tWjI3q807?4o4Q#9{hqQjR89IN0+lp6xrYJqS7o*MZr;v3IY3^Si=T*nM7je9V3z!|iO5j`Bp zz-w(pN?g@1M*09r(;XvPMM7_DuN8=j7~3%@Ene!6XR+R_QLyjXh3S>WthTVSxSZB_ zC&E4`{1Wz*-2L{PBYrc5S2|uyJ@w1_b0f1T6D@@q_m%35i?Aa2Q3yyCGDx zLcZkicJZk(;K2zi;(KGDOY)Di;%I|J;prv(IK1=yBJ3N9!Z}n7JYbZz%jSTjWZ7qt z%i^K$#tz_*X&ul=u}i#Ol|`9=GHGZ%w+f)jPUqRM}3aTbfz({tIV_ksuTr(JYUh4?%Dh~sd!3GZq82ot49YD@j3y# z9bb`Vei}m;gi5e+VP|sAeB&t7DoVXCO{>;4hq#JX*!T*l7!07 z1GZ`oAzOG+GP7IZsMrj4wjhbVI^19}5s`TXoUv*IQ=($snBND;FUZP2)=p31sM?xX z0zmfl2g~+u!SEqS+O3oefZc`Xb){So<-pfn_Ywb}1}@<&7f}O^@{z4fqx`=Wr%RgRNxVH^$pTyKt7_MNzf_B{5%kcUUJXPjh z@fg6oK|+*Y7J<;dbtKFWkCf5J(5QRjBZo4&ro`ZD2^OaUu5A#ewku^11LJ#09KGxX z)POd1=$dPVdKn~#DA*z7LiEU}L!=U+5}^zb=3TEktlzPi0ZR4la8T2A&{c!mrImt{ zOt|z6Ly=XEu!VPkWA%IzLOS5;xFO*q*d=v5imis2JMeW>O1kNFNoQWuv}F4jBxiln zfi8h3h@V4=f}3VMt>@>vnzi1h&w{rGM}#Y~gj~@&-<03&qc`%J0#H_@ns{VWKDOU#(V*QOv5nAf6N3o761SM delta 2086 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 1576462..296060f 100644 --- a/main.py +++ b/main.py @@ -14,9 +14,14 @@ evalDataPath = "evals/" questionarePath = "data/questionare.csv" annotationPath = "data/annotation.csv" +annotationPath2 = "data/annotation2.csv" @app.route('/') +def gamewelcome(): + return render_template('GameWelcome.html') + +@app.route('/question') def gamequestion(): return render_template('GameQuestion.html') @@ -28,18 +33,18 @@ def gamepreplay(): ip = request.remote_addr # Save the result to questionare idm.write_csv(questionarePath, - [ip, result.get("gamestyle"), result.get("frequency"), result.get("age"), result.get("gender"), + [ip,result.get("playeds"),result.get("playedp"), result.get("gamestyle"), result.get("frequency"), result.get("age"), result.get("gender"), ""]) idm.setControl(ip, result.get("control")) print(result.get("gamestyle")) - # return redirect(url_for('gametutorial', id=ip)) + return redirect(url_for('gametutorial', id=ip)) # debug use: - return redirect(url_for('gameanno2', id=ip)) + #return redirect(url_for('gameplay2', id=ip)) @app.route('/gametutorial/') def gametutorial(id): - return render_template('GameTutorial.html', tutorial=idm.addTutorial(id), next=idm.hasNextTutorial(id)) + return render_template('GameTutorial.html', tutorial=idm.addTutorial(id), next=idm.hasNextTutorial(id),control=idm.getControl(id)) @app.route('/again') @@ -79,6 +84,7 @@ def gameanno(id): if (id != "radioresult"): print("anno " + id) gamelevels = idm.getRecent(id) + level1 = "lvl" + str(gamelevels[0]) level2 = "lvl" + str(gamelevels[1]) return render_template('GameAnnotation.html', level1=level1, level2=level2) @@ -94,15 +100,14 @@ def getRadioData(): print(result) ipRecent = idm.getRecent(ip) idm.write_csv(annotationPath, [ip, ipRecent[0], ipRecent[1], result["fun"]]) - idm.addTimes(ip) - finish = idm.getTimes(ip) - - return render_template("GameOver.html", finish=finish, stage=2) -@app.route("/gameover/") -def over(stage): - return render_template("GameOver.html", finish=1, stage=stage) + return redirect(url_for('over', stage=1)) + + +@app.route('/gameplay2') +def gamepreplay2(): + return redirect(url_for('gameplay2', id=request.remote_addr)) @app.route('/gameplay2/') @@ -124,15 +129,15 @@ def getJSONData2(id): @app.route('/annotation2') def gamepreanno2(): - return redirect(url_for('gameanno', id=request.remote_addr)) + return redirect(url_for('gameanno2', id=request.remote_addr)) @app.route('/annotation2/') def gameanno2(id): if id != "result": print("anno " + id) - # gamelevels = idm.getRecent(id) - gamelevels = idm.getTypeLevels(id) + gamelevels = idm.getRecent(id) + # gamelevels = idm.getTypeLevels(id) level1 = gamelevels[0] level2 = gamelevels[1] level3 = gamelevels[2] @@ -146,9 +151,24 @@ def gameannoresult2(id): if request.method == 'POST': print("result! " + id) resultList = list(request.form)[0].split(",") + levelList = idm.getRecent(request.remote_addr) print(resultList) - return redirect(url_for('over',stage=2)) + idm.write_csv(annotationPath2, + [request.remote_addr, resultList[0], resultList[1], resultList[2], levelList[0], levelList[1], levelList[2], + ""]) + return redirect(url_for('over', stage=2)) + + +@app.route("/gameover/") +def over(stage): + finish = idm.getTimes(request.remote_addr) + print("finish %d",finish) + if finish: + idm.setTimes(request.remote_addr) + else: + idm.addTimes(request.remote_addr) + return render_template("GameOver.html", finish=finish, stage=stage) def saveFile(path, filename, content): diff --git a/templates/GameAnnotation.html b/templates/GameAnnotation.html index 8980bac..7ef1b8f 100644 --- a/templates/GameAnnotation.html +++ b/templates/GameAnnotation.html @@ -236,16 +236,16 @@ function Replay(id){
- +{# #}
-

Level A Review

+

Level A

Drag Picture To Move

@@ -258,7 +258,7 @@ function Replay(id){
-

Level B Review

+

Level B

Drag Picture To Move

@@ -272,13 +272,35 @@ function Replay(id){
+ + + +

- Annotation Questions + Which level was more fun to play?


-
+
diff --git a/templates/GameAnnotation2.html b/templates/GameAnnotation2.html index 29619c8..573a01a 100644 --- a/templates/GameAnnotation2.html +++ b/templates/GameAnnotation2.html @@ -198,7 +198,7 @@ function Replay(id){
-

Collector Review

+

Level A

Drag Picture To Move

@@ -211,7 +211,7 @@ function Replay(id){
-

Killer Review

+

Level B

Drag Picture To Move

@@ -224,7 +224,7 @@ function Replay(id){
-

Runner Review

+

Level C

Drag Picture To Move

@@ -247,15 +247,15 @@ function Replay(id){
- Collector Level + Level A
- Killer Level + Level B
- Runner Level + Level C
diff --git a/templates/GameOver.html b/templates/GameOver.html index 29e6613..a6e3285 100644 --- a/templates/GameOver.html +++ b/templates/GameOver.html @@ -143,11 +143,18 @@ @@ -158,13 +165,23 @@ Thank You!!!
- + diff --git a/templates/GamePlay.html b/templates/GamePlay.html index fb3d8eb..ed75cc3 100644 --- a/templates/GamePlay.html +++ b/templates/GamePlay.html @@ -98,11 +98,11 @@
- +{# #}
@@ -110,7 +110,7 @@
-

Mario Game User Test

+
@@ -120,8 +120,10 @@ //Init Cheerpj Framework cheerpjInit(); var divElement = document.getElementById("GameWindow"); + var title = document.getElementById("Head"); var levelNum = Number("{{levelNum}}") var levels = getLevels("{{gamelevels}}",levelNum); + var levelNames = ["Level A","Level B","Level C","Level D"]; cheerpjCreateDisplay(500,500,divElement); cheerpjRunMain("Play", "/app/Mario-AI-Interface.jar", "0", "f_l"); @@ -132,10 +134,13 @@ for (i = 0; i < levelNum-1; i++) { console.log("Play level: %s",levels[i]) PlayLevel(levels[i],control) - .then(function (){alert("Game Over!")}); + .then(function (){alert("Game Over!")}) + .then(function (){ + console.log(i) + var index = levelNames.indexOf(title.innerText); + title.innerText = levelNames[index+1];}); } - console.log("Play level: %s",levels[levelNum-1]) PlayLevel(levels[levelNum-1],control) .then(function (){ alert("Go to Evaluation Window") @@ -144,6 +149,10 @@ + + + +

diff --git a/templates/GameQuestion.html b/templates/GameQuestion.html index 1f5704c..f420ec5 100644 --- a/templates/GameQuestion.html +++ b/templates/GameQuestion.html @@ -191,18 +191,70 @@
+

- Questionare + Questionnaire


- -

Which do you prefer in Super Mario Bros?

+ + +

Have you played Super Mario Bros before?

+ + + +

+ +

Do you played platform games like Super Mario Bros?

+ + + +

+ +

What is your prefered acion in Super Mario Bros?

-W +

How frequently do you play game?

-

Your age?

+

What is your age?

-

Your gender?

+

What is your gender?

-

You would like to play in?

+

How would you like to play?

diff --git a/templates/GameTutorial.html b/templates/GameTutorial.html index c6c630e..27364de 100644 --- a/templates/GameTutorial.html +++ b/templates/GameTutorial.html @@ -117,23 +117,24 @@
- +{# #}
-

Mario Game Tutorial

+

Super Mario Bros Tutorial

- Further description of Tutorial can be done here
- Use the way of Play That you selected + Before proceeding to the main part of the experiment please familiarize yourself with the game.
+ You may proceed to the next phase of this survey once you are ready! +

@@ -147,13 +148,13 @@
+ ">

Repeat Tutorial

+ + + + + + + + AI and Games + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + + + + +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+

+

Purpose Of the Experiment

+

+ The Experiment is designed for participants to annotate the performance of the Super Mario Bros' levels that generated by computer. +

+
+

Procedure Of the Experiment

+

+ + The Experiment is consist of two Phase, which you need to do them two times in an experiment.
+ Each Phase contains several Super Mario Bros levels to play and a annotation page to evaluate those levels you just played.
+ Enjoy your Time! +

+ +

+ + +
+ + +
+
+ + +
+ + + + + + + +
+
+
+ +
+

+

Copyright © Jialin Liu

+ +
+ +
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/data.js b/templates/data.js index b0b9340..970b91a 100644 --- a/templates/data.js +++ b/templates/data.js @@ -30,6 +30,7 @@ function PostToServer(url,data) { } } function PlayLevel(level,control){ + var returnVal = cjCall("Play", "playGameMain", level, 5, control); return returnVal.then(function(){ console.log("the return val is ready");