博客园仿真足球竞赛平台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

 http://files.cnblogs.com/coderzh/SoccerSDK.rar

五、感谢

感谢 逖靖寒 同学给我们带来了那么好玩的游戏,丰富了我们的生活,带来了很多乐趣。同时希望此Python版SDK能给同学们带来一些帮助,也希望同学们提出宝贵意见,不断的完善这个SDK。谢谢!!



本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/09/11/1289302.html,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1464 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
1月前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
4月前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1730 17
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4月前
|
机器学习/深度学习 监控 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析、数学模型及Python代码
2024年中国研究生数学建模竞赛E题要求建立高速公路应急车道紧急启用模型,以缓解特定路段的拥堵问题。题目提供了四个视频观测点的数据,需分析交通流参数随时间的变化规律,建立拥堵预警模型,并验证模型有效性。此外,还需设计合理的应急车道启用规则和算法,优化视频监控点布局,以提升决策科学性和成本效益。涉及视频数据处理、非线性动态系统建模和机器学习等技术。适合交通工程、数学、计算机科学等多个专业学生参与。需利用Python等工具进行数据处理和建模。具体问题包括统计参数变化、建立拥堵模型、验证模型有效性、设计启用规则和优化监控点布局。
1032 12
【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析、数学模型及Python代码
|
3月前
|
前端开发 数据可视化 API
Python实现智能家居设备的统一控制平台
【10月更文挑战第6天】 Python实现智能家居设备的统一控制平台
164 11
|
4月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
132 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的大学竞赛报名管理系统
基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
53 3
基于Python+Vue开发的大学竞赛报名管理系统
|
4月前
|
Kubernetes API 开发工具
【Azure Developer】通过SDK(for python)获取Azure服务生命周期信息
需要通过Python SDK获取Azure服务的一些通知信息,如:K8S版本需要更新到指定的版本,Azure服务的维护通知,服务处于不健康状态时的通知,及相关的操作建议等内容。
62 18
|
4月前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
77 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
5月前
|
Python
炫酷!纯Python开发LOL英雄信息查询平台
炫酷!纯Python开发LOL英雄信息查询平台
52 2