小学生python游戏编程arcade----excel调用

news2025/8/13 14:37:03

小学生python游戏编程arcade----excel调用

    • 前言
    • 小学生python游戏编程arcade----excel调用
      • 1、excel文件
        • 1.1 excel表头
        • 1.2 excel文件
        • 1.3 文件读取函数
        • 1.4 打开excel文件读取数据,每行一个字典,再总存为序列
        • 1.5 打开excel文件读取数据,取两列存为字典
        • 1.6 游戏中提取单词
        • 1.7 公共函数整体代码
    • 游戏效果
    • 源码获取

前言

接上篇文章继续解绍arcade游戏编程的基本知识。游戏基本界面弄好,英语单词录入excel后调用问题,基本涉及到单词及语义的读取,随机打乱,显示问题,游戏中公共函数的调用及效果。

小学生python游戏编程arcade----excel调用

1、excel文件

1.1 excel表头

在这里插入图片描述

1.2 excel文件

在这里插入图片描述

1.3 文件读取函数

def get_data(filename, sheetnum):
    # dir_case = 'F:\\code\\csdn\\cese_excel\\' + filename + '.xlsx'
    dir_case = filename
    data = xlrd.open_workbook(dir_case)
    table = data.sheets()[sheetnum]
    nor = table.nrows
    nol = table.ncols
    dict = {}
    for i in range(1, nor):
        for j in range(nol):
            title = table.cell_value(0, j)
            value = table.cell_value(i, j)
            dict[title] = value
        yield dict



1.4 打开excel文件读取数据,每行一个字典,再总存为序列

def run_select_school2(filename, sheet_index=0, table_header_row=0):
    # 打开excel文件读取数据,每行一个字典,再总存为序列
    data = xlrd.open_workbook(filename)
    table = data.sheet_by_index(sheet_index)
    nrows = table.nrows
    nclos = table.ncols
    # 获取表头行的信息,为一个字典
    header_row_data = table.row_values(table_header_row)
    # 将每行的信息放入一个字典,再将字典放入一个列表中
    list = []
    for rownum in range(1, nrows):
        rowdata = table.row_values(rownum)
        # 如果rowdata有值,
        if rowdata:
            dict = {}
            for j in range(0, len(header_row_data)):
                dict[header_row_data[j]] = rowdata[j]
            list.append(dict)
    return list

1.5 打开excel文件读取数据,取两列存为字典

def getwordzw(filename, sheet_index=0, danyuan=1,nianji='三年级上册'):
    # 打开excel文件读取数据,取两列存为字典
    data = xlrd.open_workbook(filename)
    table = data.sheet_by_index(sheet_index)
    nrows = table.nrows
    # nclos = table.ncols
    # 将每行的信息放入一个字典,再将字典放入一个列表中
    dict = {}
    for rownum in range(1, nrows):
        # print(int(table.cell_value(rownum, 5)))
        if table.cell_value(rownum, 5)== danyuan  and table.cell_value(rownum, 6)==nianji:
            # print('true')
            dict[table.cell_value(rownum, 1).replace('\u200e', '')] = table.cell_value(rownum, 4).replace('\u200e', '')

    return dict

1.6 游戏中提取单词

def setup_word(self, dy=1, year='三年级上册'):
    self.word_dict = getwordzw(u'english.xls', sheet_index=3, danyuan=dy, nianji=year)
    self.word_keys = list(self.word_dict.keys())
    print(self.word_dict)
    print(self.word_keys)

1.7 公共函数整体代码

# 公共函数
import random
import xlrd


def get_data(filename, sheetnum):
    # dir_case = 'F:\\code\\csdn\\cese_excel\\' + filename + '.xlsx'
    dir_case = filename
    data = xlrd.open_workbook(dir_case)
    table = data.sheets()[sheetnum]
    nor = table.nrows
    nol = table.ncols
    dict = {}
    for i in range(1, nor):
        for j in range(nol):
            title = table.cell_value(0, j)
            value = table.cell_value(i, j)
            dict[title] = value
        yield dict


def run_select_school2(filename, sheet_index=0, table_header_row=0):
    # 打开excel文件读取数据,每行一个字典,再总存为序列
    data = xlrd.open_workbook(filename)
    table = data.sheet_by_index(sheet_index)
    nrows = table.nrows
    nclos = table.ncols
    # 获取表头行的信息,为一个字典
    header_row_data = table.row_values(table_header_row)
    # 将每行的信息放入一个字典,再将字典放入一个列表中
    list = []
    for rownum in range(1, nrows):
        rowdata = table.row_values(rownum)
        # 如果rowdata有值,
        if rowdata:
            dict = {}
            for j in range(0, len(header_row_data)):
                dict[header_row_data[j]] = rowdata[j]
            list.append(dict)
    return list


def getwordzw(filename, sheet_index=0, danyuan=1,nianji='三年级上册'):
    # 打开excel文件读取数据,取两列存为字典
    data = xlrd.open_workbook(filename)
    table = data.sheet_by_index(sheet_index)
    nrows = table.nrows
    # nclos = table.ncols
    # 将每行的信息放入一个字典,再将字典放入一个列表中
    dict = {}
    for rownum in range(1, nrows):
        # print(int(table.cell_value(rownum, 5)))
        if table.cell_value(rownum, 5)== danyuan  and table.cell_value(rownum, 6)==nianji:
            # print('true')
            dict[table.cell_value(rownum, 1).replace('\u200e', '')] = table.cell_value(rownum, 4).replace('\u200e', '')
        # print(int(table.cell_value(rownum, 5)))
        # print(danyuan)
        # print(table.cell_value(rownum, 1),table.cell_value(rownum, 5))
        # if int(table.cell_value(rownum, 5))==1:   #(table.cell_value(rownum, 3) != '短语') and
        #     dict[table.cell_value(rownum, 1).replace('\u200e','')] = table.cell_value(rownum, 4).replace('\u200e','')

    return dict


if __name__ == '__main__':
    wordarr = getwordzw(u'english.xls', sheet_index=3, danyuan=1,nianji='三年级上册')
    print(len(wordarr))
    print(wordarr)
    # print(wordarr[1])
    sizi = random.sample(wordarr.keys(), 5)
    # dd = wordarr[sizi[2]]
    print(sizi)

游戏效果

在这里插入图片描述

源码获取

关注博主后,私聊博主免费获取
需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主

今天是以此模板持续更新此育儿专栏的第 31/50次。
可以关注我,点赞我、评论我、收藏我啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)

文章目录一、简介二、影响版本三、复现四、修复一、简介 拥有Overall/Read 权限的用户可以绕过沙盒保护,在jenkins可以执行任意代码。此漏洞需要一个账号密码和一个存在的job。 Jenkins的pipeline主要是通过一个配置文件或者job里面的pipeline脚本配置来设定每个j…

锐捷MPLS跨域方案C2实验配置

目录 配置ASBR之间的EBGP邻居 配置PE之间的Vpnv4邻居 此时配置PE与CE设备对接命令 手工配置为PE地址分配标签 MPLS隧道——跨域解决方案C1、C2讲解_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/127634890?ops_request_misc%257B%252…

数字孪生|交通运输可视化系统

交通是城市经济发展的动脉,与我们的日常生活息息相关。 传统交通信息管理中,只是做了粗略的信息发布以及简单的交通流量监测,早已经不能满足现代智慧交通的需求。现代的智慧交通则提供基于实时交通数据的交通信息服务,融入了物联网…

python离线安装module以及常见问题及解决方案

文章目录一,离线安装module1.1 下载module1.2 离线安装二,常见的问题2.1 模块缺少合适的适配:error: Could not find suitable distribution for Requirement.parse()2.2 install成功但发现控制台打印的最后一行显示下载module版本为0.0.0工作…

如何区分小角X射线散射和小角X射线衍射?

小角X射线散射(SAXS)大多数被用来测定超细粉体、纳米离子分布的有关性质,小角X射线衍射(SAXD)则主要用来测定超大晶面间距或者薄膜结构等等问题,在用途上两种实验并不一致,本篇文章将介绍小角X射…

Promise错误处理比较:使用then的第二个参数还是catch

catch是一个语法糖而己 还是通过then来处理的 如果在then的第一个函数里抛出了异常,后面的catch能捕获到,而then的第二个函数捕获不到。 catch是一个语法糖而己 还是通过then 来处理的: Promise.prototype.catch function(fn){return this…

Amazon Braket 与量子计算

KY1,Yankuan Pan2,Bertran Shao3,Zoey Deng41.Amazon HERO;2.项目架构师;3.开发者生态负责人;4.开发者关系 Amazon Braket 是一项完全托管式的量子计算服务,主要可面向研究人员、科学家和开发人员提供一些量子计算软硬件服务进行研究和开发工…

中国设备维修安装企业能力等级证书(制冷空调)

中国设备维修安装企业能力等级证书(制冷空调),是由中国制冷学会审定,中国设备管理协会批准颁发,全国性制冷空调设备维修、安装行业能力等级证书。也是目前国内唯一能在中国招标网http://www.ctba.org.cn/查询到的制冷空…

AVX | 关于RC电路耦合、相移、滤波、微分、积分的那些事儿~

所谓RC电路,就是电阻R和电容C组成的一种分压电路。如下图1所示:输入电压加于RC串联电路两端,输出电压取自于电阻R或电容C。由于电容的特殊性质,对下图(a)和(b)不同的输出电压取法,呈现出不同的频率特性。 由此RC电路在…

STM32实战总结:HAL之HMI

什么是HMI? HMI人机界面,HMI是Human Machine Interface 的缩写,“人机接口”,也叫人机界面。 人机界面(又称用户界面或使用者界面)是系统和用户之间进行交互和信息交换的媒介, 它实现信息的内部…

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

又到了四年一度的球迷狂欢节,本次卡塔尔世界杯已于11月21号举行。 每当世界杯来临,与世界杯相关产业都会迎来一波爆发,毕竟这个千亿美金市值的市场暗藏着无数的机会。而自GameFi的火热开始,世界杯也成为了加密投资者的狂欢日&…

C语言内存分区

本文参考详细讲解C语言五大内存分区与可执行程序的三段(Text段、Date段、Bss段)【建议收藏】 - 知乎 一、C语言内存分区 1.栈区(stack):存放函数形参和局部变量,由编译器自动分配和释放 2.堆区(heap)&am…

mysql-4-锁机制

1 场景 库存等 共享资源等。 都需要锁,大量并发下,防止库存超卖等现象产生。 2分类 分类 1:(读,写)锁:对数据操作的类型分类 2: 对数据操作的粒度分 行锁,表锁 读写锁 读锁(共享锁)&#xff1a…

ISCSLP 2022 | NPU-ASLP实验室8篇论文被录用

作为语音处理技术领域的旗舰国际会议,ISCSLP2022(International Symposium on Chinese Spoken Language Processing)将于12月11-14日在新加坡举办。 西工大音频语音与语言处理研究组(ASLPNPU)本届会议将携合作伙伴宣读论文8篇,涉…

MCE | 曲贝替定——来自海洋的抗软组织肿瘤化合物

目前,常用于 STS 的化疗药物为蒽环类药物如阿霉素 (ADM)、异环磷酰胺(IFO) 、环磷酰胺 (CTX) 、顺铂 (DDP) 等。但是,为了解决部分患者不适合利用蒽环类和酰胺类药物治疗,或利用这些药物治疗无效的问题,仍需寻找新的药物治疗方案。…

用gdb调试有问题的程序:练习使用gcc编译器和gdb调试器

内容 1.用gdb调试有问题的程序:练习使用gcc编译器和gdb调试器; 2.练习使用make工程管理器。 实操流程: (1)编制greet.c文件。 此代码的原意为倒序输出main函数中定义的字符串,但…

JNDI注入的理解、JDK给出的修复

RMI RMI(Remote Method Invocation):一种执行远程调用的Java API。RMI的目的是使在不同计算机上运行的对象(Object)之间的调用行为类似于本地调用。 RMI机制:服务器(Server)应实现一定的功能并将其注册到注册表(Registry)中,客户端(Client)应在注册表的命名空间(Naming spac…

RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)

RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列服务器。基于AMQP(Advanced Message Queuing Pr…

矢量网络分析仪如何校准?安泰测试来助力

要想学会测试, 首先要学会校准! 对矢量网络分析仪的校准是非常重要的一个步骤,能够提高仪器的测量精度。今天安泰测试就给大家分享一下矢量网络分析仪的校准操作步骤: 一、单端口校准 校准目的: 通过单端口校准可以消除该端口的反射跟踪误差、…

[附源码]SSM计算机毕业设计教学辅助系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…