经过这几天的深思熟虑我和小明同学将这次作业基本的完整了,可能界面略丑陋,但是基本功能均已实现。我们的服务器端采用python编写,因为服务器端是这次作业的难点,而python中有一个叫做web.py的轻量级框架使用效果极好,并且不用编写配置文件,其对URL的处理很简练。对于客户端我采用了python编写小明选择了ruby,但是由于我的客户端有一些bug需要再交互模式下使用,所以我们将它抛弃而选择使用小明的客户端。由于代码编写的我身心疲惫,我就简略说一下我们本次编写过程中遇到的困难点:
  
      1.第一次使用web.py 花费不少时间来学习
          2.客户端并发较多,导致部分客户端崩溃,由于这个不是这次的重点,并没有对其进行处理。
                 3.不熟悉写网页,图表部分使用canvas写的,调试很麻烦
  
                 4.咱能换个博客吗 ,这个博客没有自动保存啊 我之前写的都没了。。。。写短点算了
  
这是运行结果的截图部分

然后是我们的代码部分

import web
import thread
import time
import data
import string
from web import form render=web.template.render('templates/')
urls=(
'/','index',
'/attend','attend',
'/register','register'
) registerform=form.Form(
form.Textbox("id",form.notnull)
) attendform=form.Form(
form.Textbox("id",form.notnull),
form.Textbox("num",form.notnull)
) def index_page():
for i in list(data.db.select('users')):
print i['id']
time.sleep(10)
for i in list(data.db.select('users')):
data.users[i['id']]=0.0
while True:
start=time.time()
data.thisturn={}
data.num=0
data.total=0
time.sleep(0.9)
if data.num!=0:
average=data.total/data.num*0.618
print average
data.thisturn['winner']=score(data.thisturn,data.users,average)
data.winner=data.thisturn['winner']
data.winnernumber=data.thisturn[data.winner]
data.thisturn['result']=average
data.goldpoint.append(average)
t=1-(time.time()-start)
time.sleep(t)
print data.num
data.turn+=1 def score(thisturn,users,average):
value_max=0
value_min=100
for i in thisturn:
a=abs(thisturn[i]-average)
if a>value_max:
value_max=a
max_num=i
if a<value_min:
value_min=a
winner=i
for i in list(data.db.select('users')):
if i['id'] not in thisturn and i['id']!=winner:
users[i['id']]-=5
elif i['id']==winner:
users[i['id']]+=10
elif i['id']==max_num:
users[i['id']]-=1
return winner class index:
def GET(self):
return render.index(data.turn,data.winnernumber,data.users,data.goldpoint) class attend:
def GET(self):
form=attendform()
return render.attend(form)
def POST(self):
form=attendform()
if not form.validates():
return render.attend(form)
else:
i=web.input()
i.num=string.atof(i.num)
data.num+=1
data.total+=i.num
data.thisturn[i.id]=i.num
return 0 class register:
def GET(self):
form=registerform()
return render.register(form)
def POST(self):
form=registerform()
if not form.validates():
return render.register(form)
else:
i=web.input()
data.db.insert('users',id=i.id,pd=0)
data.users[i.id]=0.0
return 0 if __name__=="__main__":
thread.start_new_thread(index_page,())
app=web.application(urls,globals())
app.run()
$def with(turn,number,users,goldpoint)
<html>
<head>
<meta http-equiv="refresh" content="1">
<script type="text/javascript">
function draw(){
var canvas=document.getElementById("cv");
var a=$goldpoint
if(canvas.getContext){
var ctx=canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(0,a[0]);
for(i=1;i<=$turn-1;i++){
ctx.lineTo(10*i,a[i]);
}
ctx.stroke();
ctx.endPath();
}
}
</script>
</head>
<body onload="draw();">
<p>现在是第$turn轮</p>
<p>上一轮获胜数字$number</p>
<p>选手得分</p>
<table border="1">
<tr>
$for i in users:
<td><b> $i </b></td>
</tr>
<tr>
$for i in users:
<td><b> $users[i] </b></td>
</tr>
</table>
<canvas id="cv" width="1500" height="150">
</canvas>
</body>
</html>

homework-05的更多相关文章

  1. Machine Learning, Homework 9, Neural Nets

    Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...

  2. STAT UN2102 Homework

    STAT UN2102 Homework 4 [100 pts]Due 11:59pm Monday, May 6th on CanvasYour homework should be submitt ...

  3. Final阶段第1周/共1周 Scrum立会报告+燃尽图 05

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2484] 版本控制:https://git.coding.net/liuyy08 ...

  4. 20181009-6 选题 Scrum立会报告+燃尽图 05

    Scrum立会报告+燃尽图(05)选题 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2195 一.小组介绍 组长:刘莹莹 ...

  5. 20181120-8 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 05

    此作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2413] 版本控制地址    [https://git.coding.ne ...

  6. 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05

    作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2387 版本控制https://git.coding.net/lglr2018/F ...

  7. 20181016-4 Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 05

    作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2288 Scrum master:王硕 一.小组介绍 组长:王一可 组员:范 ...

  8. C语言|博客作业05

    这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 我在这个课程的 ...

  9. day38-IO流05

    JavaIO流05 4.常用的类04 4.4节点流和处理流03 4.4.8打印流-PrintStream和PrintWriter 打印流只有输出流,没有输入流 1.简单介绍及应用 PrintStrea ...

  10. Java学习笔记(05)

    目录: static的用法 主函数的定义 增强for的循环 单例设计模式 封装 一.Static的用法 1.对象的内存分析 对象的引用变量是存在于栈区,而在堆区开辟了一块内存空间,调用对象给成员变量赋 ...

随机推荐

  1. 量化Hacker News 中50天的数据 Quantifying Hacker News with 50 days of data

    Quantifying Hacker News I thought it would be fun to analyze the activity on one of my favorite sour ...

  2. cas单点登出

    由于项目需求要实现单点登出需要在网上找了N久终于实现单点登出. 使用cas-server-core-3.3.3.jar(CAS Server 3.3.3) 使用cas-client-core-3.1. ...

  3. 《Linux/Unix系统编程手册》读书笔记1

    <Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...

  4. Uboot 2014.07 makefile分析 - 其他Cortex系列

    uboot的官网可以通过谷歌搜索得到,显示结果第一个链接就是. 官网:: http://www.denx.de/wiki/U-Boot ftp下载: ftp://ftp.denx.de/pub/u-b ...

  5. hdu 3359 Kind of a Blur (高斯消元 浮点型)

    题目链接 题意: H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B.给定矩阵B ...

  6. bzoj2436

    不难发现两边的活动是交替进行的,我们可以dp 先对时间离散化,设f[i,j]到时间i一个会场选j个活动,另一个会场最多有多少活动,那么f[i,j]=max(f[k,j]+s[k,i],f[k,j-s[ ...

  7. iOS开发:本地数据存储-NSUserDefaults

    Getting Default Values arrayForKey(_:) boolForKey(_:) dataForKey(_:) dictionaryForKey(_:) floatForKe ...

  8. Zxing 扫二维码

    1 http://blog.csdn.net/xiaanming/article/details/10163203 2 我会把一个可以运行的Demo云盘:http://pan.baidu.com/s/ ...

  9. AI 状态机

    by AKara 2010-11-11 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @weibo.com/akaras 一个简单横版游戏 ...

  10. UVA 350 Pseudo-Random Numbers 伪随机数(简单)

    题意:给定Z, I, M,  L,根据随机数产生式k=(Z*L+I)%M.但是L表示的是上一个产生的数,比如根据产生式产生了序列{2,5,4,3}那么5是由L=2算来的,4由L=5算来的..第1个所产 ...