python模拟足球比赛_博客园仿真足球竞赛平台Python版SDK
为了方便喜欢Python的同学能使用Python开发自己的球队,所以编写了此SDK。这个SDK基本上是参照C#版SDK改过来的,除了一些复杂的几何算法没有实现外,其他功能都已实现。喜欢的朋友可以自己下了慢慢改善,我也会不断更新这个SDK。下面介绍一下基本的使用吧。
一、导入soccer模块
不需要过多的import导入语句,轻轻松松,简简单单,只需要一句导入语句:
from soccer import *
二、模块介绍
1. 导入soccer后,我们可以使用如下的一些实例对象:
field_settings#球场设置信息
game_settings#比赛设置信息
rule_settings#规则设置信息
server_settings#服务器设置信息
communicator#通信对象
2. 类对象如下:
Vector2f#二维坐标
GameState#比赛状态(比分信息)
ClientInfo#球队信息(球队名,作者)
命令相关的对象及常量如下:
Command#命令
CommandType_Catch = 'Catch'#扑球
CommandType_Dash = 'Dash'#跑
CommandType_Turn = 'Turn'#转身
CommandType_Stay ='Stay'#原地不动
CommandType_Kick = 'Kick'#踢球
CommandType_Unknow = 'Unknow'#未知命令
所有实现了的类和C#版SDK基本一致,比如Vector2f的操作符重载等。上面列的是主要的一些类和对象,除此之外还包括比如一些角度计算的模块(anglehelper),矩形对象(rectangle) 等。
三、创建球队实例
创建方法和C#版本基本一样,下面的代码应该不需要过多解释:
if __name__ == "__main__":
"""
entry point of the great team!
"""
myteam = TeamNancy('NancyTeam', 'CoderZh')
if communicator.connect(myteam.info):
print 'Platform Connected!!!'
while True:
"""
Start the game cycle
"""
wmdata = communicator.getworldmodel()#get the infomation from the server
if (wmdata == None):
print 'Game Over!'
exit()
#get the infomation of the game to my team
myteam.getworldmodel(wmdata)
#my team think for a while and send the commands to the server
communicator.send_commands(myteam.think())
else:
print 'Connect Fail!!!'
再来看看如何创建自己的AI球队的类:
class TeamNancy(object):
def __init__(self, teamname, author):
self.info = ClientInfo(teamname, author)
self.wm = WorldModel()
self.cmds = [Command() for i in range(5)]
def getworldmodel(self, wmdata):
self.wm = wmdata
def think(self):
for i in range(rule_settings.AgentNum):
temppos = self.wm.ball.pos - self.wm.MyAgents[i].pos
if temppos.getlength() < rule_settings.MaxKickBallDistance:
self.cmds[i].type = CommandType_Kick
self.cmds[i].param1 = 1.0
self.cmds[i].param2 = 0
elif math.fabs(temppos.getdirection() - self.wm.MyAgents[i].dir) < 2:
self.cmds[i].type = CommandType_Dash
self.cmds[i].param1 = rule_settings.MaxDashVel
else:
self.cmds[i].type = CommandType_Turn
self.cmds[i].param1 = temppos.getdirection()
return self.cmds;
四、下载SDK
五、感谢
感谢 逖靖寒 同学给我们带来了那么好玩的游戏,丰富了我们的生活,带来了很多乐趣。同时希望此Python版SDK能给同学们带来一些帮助,也希望同学们提出宝贵意见,不断的完善这个SDK。谢谢!!
python模拟足球比赛_博客园仿真足球竞赛平台Python版SDK相关推荐
- python模拟足球射门_[转载]博客园仿真足球竞赛平台Python版SDK
为了方便喜欢Python的同学能使用Python开发自己的球队,所以编写了此SDK.这个SDK 基本上是参照C#版SDK改过来的,除了一些复杂的几何算法没有实现外,其他功能都已实现.喜欢的朋友可以自己 ...
- python 爱心文字墙_博客园墙裂推荐!从未见过如些清新脱俗的完整Python+requests接口自动化测试框架搭建文章!...
前言 很多小伙伴不知道什么是框架?框架有哪些东西? 一步步从需求分析到报告生成告诉你如何搭自动化建框架. 学完unittest后这里基本上可以搭建一个简易的项目框架了,我们可以用一条run_main. ...
- python数据挖掘领域工具包 - wentingtu - 博客园
python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 原文:http://qxde01 ...
- 【转】使用C#发送Http 请求实现模拟登陆(以博客园为例)
[转]使用C#发送Http 请求实现模拟登陆(以博客园为例) 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也 ...
- 使用C#发送Http 请求实现模拟登陆(以博客园为例)
使用C#发送Http 请求实现模拟登陆(以博客园为例) 原文:使用C#发送Http 请求实现模拟登陆(以博客园为例) 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到c ...
- 博客园,CSDN等平台利用Github绑定域名
博客园,CSDN等平台利用Github绑定域名 网上有许多关于这方面的教程,但是大多数由于Github发生了更新导致教程出现了断层,并且在绑定域名后还会有其他问题发生,在这篇博文中,我将详细的演示如何 ...
- python命令行运行模式_[Python] 命令行模式阅读博客园的博文
1 #-*- coding:UTF-8 -*- 2 importrequests3 from lxml importetree4 importsys5 importio6 importos7 8 9 ...
- Python爬虫入门教程 54-100 博客园等博客网站自动评论器
爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单 ...
- Python爬虫入门教程 40-100 博客园Python相关40W博客抓取 scrapy
爬前叨叨 第40篇博客吹响号角,爬取博客园博客~本文最终抓取到了从2010年1月1日到2019年1月7日的37W+文章,后面可以分析好多东西了呢 经常看博客的同志知道,博客园每个栏目下面有200页,多 ...
- Python爬虫入门教程:博客园首页推荐博客排行的秘密
1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...
最新文章
- 19行关键代码,带你轻松入门PaddlePaddle单机训练
- PHP实现飞信接口来通过网页免费发短信
- 带你学python基础:面向对象编程
- jquery.form.js插件中ajaxSubmit提交在jquery1.4版本中的应用
- C++常类型(const)
- 记一起因证书引发的支付宝支付异步通知接收不到的事故
- 【UOJ】【BZOJ】 [Zjoi2016]小星星
- java基础学习-(2)堆和栈
- oracle or索引失效,以下Oracle错误意味着什么:无效的列索引
- idea怎么设置选中文件时,自动在左侧弹出文件所在位置及文件
- Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和
- 快速阅读之眼球的训练
- yarn lib cli.js SyntaxError: Unexpected token
- Intellij IDEA集成sencha插件开发Extjs应用
- Winform(C#) 国内开源美化控件主题库2:花木兰控件库
- Java 的 IDEA 神级插件!
- 【LuoguP4233】射命丸文的笔记-多项式求逆
- 温度记录仪和传感器的校准知识
- 零基础JavaScript-DOM入门(第一天)(第二天)
- Upload to server password failed. Failed to transfer file . Permission denied.
热门文章
- 【扩频通信】基于matlab扩频通信系统仿真【含Matlab源码 968期】
- 【水果识别】基于matalb GUI灰度、二值化、滤波水果分级【含Matlab源码 1848期】
- 【TWVRP】基于matlab人工鱼群算法求解带时间窗的车辆路径规划问题【含Matlab源码 161期】
- 若泽数据 巨人_面部识别巨人拒绝分享有关其算法数据集的详细信息
- 数据应用apply练习
- oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型
- 二维粒子群算法的matlab源程序,二维粒子群算法的matlab源程序
- matlab利用窗改变幅值_Matlab在车辆中的应用 信号处理分析
- data标签怎么爬虫_scrapy爬虫笔记(1):scrapy基本使用
- activiti工作流 php,码云社 | 砺锋科技-SpringBoot整合Activiti工作流(附源码) - 用代码改变世界...