《我的世界》Python编程入门(8)建造房屋

一、字典

首先,复习下前面学习的一些Python内置数据类型:
字符串在表示上有什么特点?数字呢?
Python内置的数据类型主要有:数字、字符串、列表、元组、字典。

1.1 字典的基本概念

字典(dict或者dictionaries)是一种可变(mutable)集合(collections),可以存储各种类型的数据
集合说明这种数据类型由多个元素构成
可变指的是元素可增删改
字典用{ } 表示开始和结束,字典的元素(item或element)为键:值对(key:value),键值用:分隔,元素用 , 分隔。

案例1:

d={'a':1,'b':2,'c':3}
#为具有3个元素的字典,
print(type(d))
结果为<class 'dict'>

b={}
#b为空字典

1.2 字典的基本特性

元素的键必须在字典中是唯一的!
元素的键和值具有一一对应关系!

案例2:
a={'a':1,'a':2}
print(a)
结果为{'a': 2}
#'a':1被覆盖掉了

字典的这两个基本特性可以用于搜索或去重。(想想新华字典是不是可以通过拼音或者偏旁部首快速查到对应的字)

1.3 字典元素的基本操作

1.3.1 新增或修改元素

格式:字典[键]=新值
注意:如果原字典中没有对应的键则为新增元素,若已存在该键则为修改元素
案例3:

a={'a':1}
a['a']=2
print(a)
#结果为{'a': 2}
a['a1']=2
print(a)
#结果为{'a': 2, 'a1': 2}
1.3.2 访问字典元素

字典元素访问的核心为按元素的键访问,得到的是对应的值。
格式:字典[键]
注意:若键不存在,则会报错!
案例4:

a={'a':1}
print(a['a'])
#结果为1
print(a['b'])
#结果为
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'b'
1.3.3 删除元素

格式:del 字典[键]
注意:如果被删除的元素不存在,则会报错。
案例5:

a={'a':1}
del a['a']
print(a)
#结果为{}
del a['a']
#结果为
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'

二、案例:建造房子

2.1 空气方块

block.AIR.id可以把方块设置为空气,即清除掉对应区域

2.2 setBlocks()方法

作用:将一个3D区域内的所有方块设置为一种相同的方法。
参数:7个,前6个为2组坐标,即3D区域的对角线端点坐标,最后一个参数为方块类型。
案例6:创建立方体

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
pos = mc.player.getTilePos()

mc.setBlocks(pos.x+2, pos.y, pos.z, pos.x+12, pos.y+10,
            pos.z+10, block.DIAMOND_BLOCK.id)

2.3 综合案例:建造房子

房屋要求:
在这里插入图片描述

案例分析

先建造一个立方体,再掏空立方体,只留下表面。
得到x轴与y轴最中间的坐标点
根据设计图规划房子
石头:COBBLESTONE
空气:AIR
玻璃:GLASS
木材:WOOD
羊毛:WOOL

案例参考效果

在这里插入图片描述

案例代码
import mcpi.minecraft as minecraft
import mcpi.block as block
#先导入所需模块,然后连接游戏
mc = minecraft.Minecraft.create()
#size表示所建房屋的大小,改变size可以改变房子的大小
size = 20
#获取玩家所在坐标点
pos = mc.player.getTilePos()
x=pos.x
y=pos.y
z=pos.z
#midx、midy为正面方向房子在x、y轴上的中间点,便于计算窗户和门的坐标
#如果房子大小改变,窗户、门的位置也会随之变化
midx = x + size/2
midy = y + size/2

#根据size建造一个实心立方体
mc.setBlocks(x, y, z, x+size, y+size, z+size, block.COBBLESTONE.id)
#将立方体的内部掏空
mc.setBlocks(x+1, y, z+1, x+size-1, y+size-1, z+size-1, block.AIR.id)
#实现门,midx代表了x轴坐标的中间位置
mc.setBlocks(midx-1, y, z, midx+1, y+3, z, block.AIR.id)
#填充玻璃窗户
mc.setBlocks(x+3, y+size-3, z, midx-3, midy+3, z, block.GLASS.id)
mc.setBlocks(midx+3, y+size-3, z, x+size-3, midy+3, z, block.GLASS.id)
#使用木材方块建造一个屋顶
mc.setBlocks(x, y+size, z, x+size, y+size, z+size, block.WOOD.id)
#在房子内增加一个羊毛地毯
mc.setBlocks(x+1, y-1, z+1, x+size-1, y-1, z+size-1, block.WOOL.id)

本课重难点

  1. 字典的基本概念
  2. 空气方块和setBlocks方法的使用
  3. 如何结合案例计算坐标点
  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值