为了方便喜欢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相关推荐

  1. python模拟足球射门_[转载]博客园仿真足球竞赛平台Python版SDK

    为了方便喜欢Python的同学能使用Python开发自己的球队,所以编写了此SDK.这个SDK 基本上是参照C#版SDK改过来的,除了一些复杂的几何算法没有实现外,其他功能都已实现.喜欢的朋友可以自己 ...

  2. python 爱心文字墙_博客园墙裂推荐!从未见过如些清新脱俗的完整Python+requests接口自动化测试框架搭建文章!...

    前言 很多小伙伴不知道什么是框架?框架有哪些东西? 一步步从需求分析到报告生成告诉你如何搭自动化建框架. 学完unittest后这里基本上可以搭建一个简易的项目框架了,我们可以用一条run_main. ...

  3. python数据挖掘领域工具包 - wentingtu - 博客园

    python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 原文:http://qxde01 ...

  4. 【转】使用C#发送Http 请求实现模拟登陆(以博客园为例)

    [转]使用C#发送Http 请求实现模拟登陆(以博客园为例) 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也 ...

  5. 使用C#发送Http 请求实现模拟登陆(以博客园为例)

    使用C#发送Http 请求实现模拟登陆(以博客园为例) 原文:使用C#发送Http 请求实现模拟登陆(以博客园为例) 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到c ...

  6. 博客园,CSDN等平台利用Github绑定域名

    博客园,CSDN等平台利用Github绑定域名 网上有许多关于这方面的教程,但是大多数由于Github发生了更新导致教程出现了断层,并且在绑定域名后还会有其他问题发生,在这篇博文中,我将详细的演示如何 ...

  7. python命令行运行模式_[Python] 命令行模式阅读博客园的博文

    1 #-*- coding:UTF-8 -*- 2 importrequests3 from lxml importetree4 importsys5 importio6 importos7 8 9 ...

  8. Python爬虫入门教程 54-100 博客园等博客网站自动评论器

    爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单 ...

  9. Python爬虫入门教程 40-100 博客园Python相关40W博客抓取 scrapy

    爬前叨叨 第40篇博客吹响号角,爬取博客园博客~本文最终抓取到了从2010年1月1日到2019年1月7日的37W+文章,后面可以分析好多东西了呢 经常看博客的同志知道,博客园每个栏目下面有200页,多 ...

  10. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

最新文章

  1. 19行关键代码,带你轻松入门PaddlePaddle单机训练
  2. PHP实现飞信接口来通过网页免费发短信
  3. 带你学python基础:面向对象编程
  4. jquery.form.js插件中ajaxSubmit提交在jquery1.4版本中的应用
  5. C++常类型(const)
  6. 记一起因证书引发的支付宝支付异步通知接收不到的事故
  7. 【UOJ】【BZOJ】 [Zjoi2016]小星星
  8. java基础学习-(2)堆和栈
  9. oracle or索引失效,以下Oracle错误意味着什么:无效的列索引
  10. idea怎么设置选中文件时,自动在左侧弹出文件所在位置及文件
  11. Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和
  12. 快速阅读之眼球的训练
  13. yarn lib cli.js SyntaxError: Unexpected token
  14. Intellij IDEA集成sencha插件开发Extjs应用
  15. Winform(C#) 国内开源美化控件主题库2:花木兰控件库
  16. Java 的 IDEA 神级插件!
  17. 【LuoguP4233】射命丸文的笔记-多项式求逆
  18. 温度记录仪和传感器的校准知识
  19. 零基础JavaScript-DOM入门(第一天)(第二天)
  20. Upload to server password failed. Failed to transfer file . Permission denied.

热门文章

  1. 【扩频通信】基于matlab扩频通信系统仿真【含Matlab源码 968期】
  2. 【水果识别】基于matalb GUI灰度、二值化、滤波水果分级【含Matlab源码 1848期】
  3. 【TWVRP】基于matlab人工鱼群算法求解带时间窗的车辆路径规划问题【含Matlab源码 161期】
  4. 若泽数据 巨人_面部识别巨人拒绝分享有关其算法数据集的详细信息
  5. 数据应用apply练习
  6. oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型
  7. 二维粒子群算法的matlab源程序,二维粒子群算法的matlab源程序
  8. matlab利用窗改变幅值_Matlab在车辆中的应用 信号处理分析
  9. data标签怎么爬虫_scrapy爬虫笔记(1):scrapy基本使用
  10. activiti工作流 php,码云社 | 砺锋科技-SpringBoot整合Activiti工作流(附源码) - 用代码改变世界...