今天突发奇想,打算做一个单击模拟版的篮球经理游戏,主要功能包括随机组队、抽卡、更换阵容和模拟比赛。具体的等想到了再往里添加,目前设计的游戏流程是这样的:

今天就先来完成准备工作。

尽然是模拟抽卡的游戏,首先要有卡池,也就是数据库。我从虎扑数据库里爬取了所有现役NBA球员的姓名、位置和头像,然后再稍加处理。爬虫代码如下:

from bs4 import BeautifulSoup

import requests

'''保存图片函数'''

def saveImg(myurl):

# 1.请求页面

thtml = requests.get(myurl)

# 2.用返回内容创建soup对象

tsoup = BeautifulSoup(thtml.content, 'lxml')

# 3.获取球员名称放入 namelist

allname = tsoup.select("td.left > b > a")

namelist=[]

for tname in allname:

namelist.append(tname.text)

# 4.获取球员位置放入 loclist

loc = tsoup.select("td")

loclist=[]

for tname in loc:

if "F" in tname or "G" in tname or "C" in tname or "G-F" in tname or "F-G" in tname or "C-F" in tname or "F-C" in tname:

loclist.append(tname.text)

# 5.获取球员头像src连接放入 srclist

allsrc=tsoup.select("td.td_padding > a >img")

srclist=[]

for tsrc in allsrc:

srclist.append(tsrc.get("src"))

# 6.进行图片和球员保存

for i in range(0,len(srclist)):

data=requests.get(srclist[i])

path='image/'+namelist[i]+".jpg" #头像存储路径

path2='players.txt' #球员名单

file=open(path,"wb")

file.write(data.content)

doc=open(path2,"a")

doc.write(namelist[i]+" "+loclist[i]+"\n")

url="https://nba.hupu.com/players" #主界面网址

header={

"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/8.1.0.14126"

}

urls=[] #用来存储各个队的球员列表所在的网址

html=requests.get(url,headers=header)

soup=BeautifulSoup(html.content,"lxml")

#获取所有球队页面所在的url地址

allurl=soup.select("span.team_name > a")

for t in allurl:

urls.append(t.get("href"))

#开始爬取

for turl in urls:

saveImg(turl)

虎扑的球员数据是按照球队来分布的,每个球队的球员可以在同一个网页上获取。其中比较麻烦的是球员位置,它的标签是

,可是这个网页里有很多同名的标签,因此我们通过内容来筛选,也就是代码中的:

if "F" in tname or "G" in tname or "C" in tname or "G-F" in tname or "F-G" in tname or "C-F" in tname or "F-C" in tname:

loclist.append(tname.text)

得到头像图片和球员名单后,发现其中有一些名字空白的球员,把这些球员删掉后,还剩497人。然后我们需要在txt里,在每一行的末尾手动为该球员加上能力值,分隔符是一个空格。这个工作虽然很累,但也挺有趣,毕竟是自己玩的游戏,想怎么设就怎么设吧。对于那些根本不认识的饮水机球员,我一律设为了65,其他的都跟2K20差不多。

接下来还要对球员名单做进一步处理,按照位置分成G、F、C三部分,目的是为了在模拟组队的时候,能够组出一只正常的队伍,包括两个G、两个F和一个C。同时这样一分,也会让球员名单更加清晰。

这里面有一些双位置的球员,为了避免重复,我全部按照第一位置来划分的,比如G-F就是G。切分球员名单的代码如下:

with open("players.txt", "r") as f:

data = f.readlines()

doc1 = open("G.txt",'a',encoding="utf-8")

doc2 = open("F.txt",'a',encoding="utf-8")

doc3 = open("C.txt",'a',encoding="utf-8")

for i in data:

loc=i.split()

if "G" in loc[1] and loc[1] != "F-G":

print("%s %s %s"%(loc[0],loc[1],loc[2]),file=doc1)

elif "F" in loc[1] and loc[1] != "G-F" and loc[1] != "C-F":

print("%s %s %s"%(loc[0],loc[1],loc[2]),file=doc2)

elif "C" in loc[1] and loc[1] != "F-C":

print("%s %s %s"%(loc[0],loc[1],loc[2]),file=doc3)

现在球员名单的顺序是按照球队划分的,如果想按照能力值排序也可以,但是没必要费劲巴拉写代码了,粘贴到excel里排序吧。不过直接粘进去以后,三列数据都挤在一列,只要选择“数据”中的“分列”,然后按空格分列即可,后面就能正常排序了。

下面是我们今天得到的图片:

还有三个球员名单:

明天我会用tkinter(也许用pygame更好,但最近都在研究tkinter,可以在之前做的程序上稍加改动)做一个简单的游戏界面,实现随机组队和抽卡、更换阵容的功能。

python编写篮球_自制python版篮球经理游戏(1)—准备相关推荐

  1. python编写代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  2. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  3. python编写篮球_自制python版篮球经理游戏(5)—代码

    游戏已全部完成,虽然和最初的设计有了些许偏差,但完成度达到了90%以上.完整代码在附件里,注释介绍了一些算法逻辑,并未对语句做详细地讲解,不过都是tkinter的一些基本语句,有疑问的地方直接百度即可 ...

  4. 怎么用python编写记事本_利用Python开发实现简单的记事本

    利用Python开发实现简单的记事本 最近想对 python 加深学习一下,同时也是想试着做一些东西,所以使用 python, 结合 Tkinter 来做一个简单的跨平台记事本.最终实现的记事本如下, ...

  5. 用python编写神经网络_用Python实现神经网络(第5周)的代价函数

    基于Coursera的机器学习课程,我试图用python实现神经网络的代价函数.有一个question类似于这个--有一个可接受的答案--但答案中的代码是用八度音阶编写的.为了不偷懒,我已经尝试将答案 ...

  6. unity可以用python编写吗_基于python的Cා代码生成器(用于服务并应用于unity),一个,c,为了,并且,Unity...

    为了满足项目需要,本人需要实现一个c#代码生成器(使用python开发),为此设计了一个语法模板适用于Unity的代码生成器.本次使用了Python的Template模板,使用python开发. ## ...

  7. python编写古诗_用Python实现古诗词填字游戏(一)

    利用古诗词做填字游戏是一项很有趣的活动,通常的填字游戏都是由几横几竖构成,如下图: 显然,横竖交叉的位置就是两句诗共有的字.那么,问题来了,如何从众多诗文中找到有共同字的句子呢? 这里Mr. PosP ...

  8. python编写我爱你_我爱你Python——情人节快乐

    今天是2月14日,嗯,这是一个单身贵族的节日!从昨晚12点到现在朋友圈,空间一直都在秀. 你说秀就秀吧,我还发现竟然有秀重复的,嗯,你们都懂得!这也太休了吧!!!! 好友们都在秀,我呢?我当然不是一个 ...

  9. 用WeRoBot和Python编写一个不使用网页版微信且能够回复消息微信群聊机器人

    要用 WeRoBot 和 Python 编写一个不使用网页版微信且能够回复消息的微信群聊机器人,您需要以下步骤: 安装 WeRoBot 和相关依赖: pipinstall werobot 创建一个 P ...

最新文章

  1. 工业智联网: 基本概念、关键技术与核心应用
  2. WhatsApp宣布免费 欲变身一站式企业式服务应用
  3. Linux_RHEL_设置网络
  4. 高项的项目管理ITTO(PMP第五版)
  5. 使用docker快速启动jetlinks
  6. 字符集GBK升级UTF8
  7. Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案
  8. linux中postfix(基于源码)的邮件系统
  9. priority_queuey用法
  10. 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
  11. 几年的写论文和审稿心得
  12. Tomcat配置监听80端口、配置虚拟主机、日志
  13. IDEA打开窗口的数量及打开窗口的排列方式调整
  14. 数据结构(C语言版)之队列
  15. 笔记本如何解除锁定计算机,笔记本键盘锁住了怎么解锁 有三种方法可以解决...
  16. [转] 一些你不知道但是超美的地方,一定要去
  17. English trip 自习内容 句子结构和成分
  18. 因果,稳定,无源,无损系统(1)
  19. 经纬度转换为UTM坐标
  20. YMEC8A2TB3A2C3

热门文章

  1. 调光调色护眼台灯--DLT8T10S--杰力科创--触摸芯片
  2. linux内核编程memcpy,Linux库memcpy函数实现
  3. 点云在任意平面上获取二维投影
  4. ACC-5595反射内存交换机
  5. HTC G2 超级新手教程之最终版
  6. 手机APP爬虫[爬虫专题(19)]
  7. 华为光纤猫HG8245破解
  8. 东南大学计算机考研分数线2019,东南大学研究生分数线(2019)
  9. 控制台应用程序-打印图形
  10. 搞怪独特的520文案表情包分享来啦