python画江苏_Python 制作小游戏系列 - 中国省份测试地图

这两天豆子在学习Python的pandas模块。这个模块可以很方便的处理各个格式的文本文件,结合前面学习的Turtle绘图模块,我们可以做一个检测记忆的小游戏,通过输入中国的省份名字,他会自动地在空白地图上表明出来。如果实在想不起了,输入exit可以退出,然后会生成一个csv文件,标明我漏掉的省份名称。

截图如下

输入exit 退出之后,会自动生成一个csv,里面是我漏掉的省份名字

下面看看思路和实现的要点:

困难点:

1.如何获取每个省份在这个地图里面的坐标

2.如何处理坐标和省份名字之间的关系

3.地图上显示内容

解决方案:

我们可以通过 turtle 的鼠标事件来显示坐标

比如说,通过下面的代码,我可以在地图上点击对应的区域来获取响应的坐标

def get_mouse_click_coor(x,y):

print(x,y)

turtle.onscreenclick(get_mouse_click_coor)

turtle.mainloop()

创建一个类似下面的csv文件,列出省份名字和其对应的坐标,通过第一步的准备,我可以把每个省份的坐标都获取出来

state,x,y

河北,115.0,48.0

山西,73.0,-1.0

辽宁,192.0,58.0

吉林,234.0,91.0

黑龙江,243.0,151.0

江苏,164.0,-63.0

浙江,169.0,-120.0

安徽,130.0,-85.0

福建,144.0,-165.0

江西,109.0,-145.0

山东,139.0,-22.0

显示内容就很容易了,指定Turtle的实例化对象到对应的坐标输出相应的文字即可

下面是源代码,不到60行,非常简单,但是游戏效果很好

import turtle

import pandas

screen = turtle.Screen()

screen.title("中国省份记忆测试")

image= "china.gif"

screen.addshape(image)

turtle.shape(image)

#回答正确的列表

correct=[]

#总数据

data = pandas.read_csv("province.csv")

allstate= data.state.to_list()

#没有记住的列表

faillist=[]

while len(correct) < 34:

answer = screen.textinput(title=f"{len(correct)}/34 正确", prompt="省份名字是什么?").title()

if answer == 'Exit':

print("exit")

for item in allstate:

if item in correct:

pass

else:

print(item)

faillist.append(item)

print(faillist)

newdata= pandas.DataFrame(faillist)

newdata.to_csv("newdata.csv")

break

#把 pandas数据里面符合我们搜索结果的那一行数据找出来

state_data = data[data.state == answer]

if len(state_data) == 0:

print("No such state")

else:

# 找到这一行了,把对应的名字,x和y坐标找出来

name = state_data.state.item()

x = state_data.x

y = state_data.y

print(name)

print(x)

print(y)

#发送海龟到对应坐标处输出内容

display = turtle.Turtle()

display.hideturtle()

display.penup()

display.goto(int(x),int(y))

display.write(name,align="center",font=("Arial",8,"normal"))

correct.append(answer)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值