俄罗斯方块准备好久了,之前很多内容学的不太好,在网上找了找教程,结果都是用面向对象的方法,我要很仔细的看才能看懂,然而看懂了我自己还是不会写,于是我写了个仅仅用基础语法写明白的俄罗斯方块(if-elif-else,while,for-in,try-except-finally,and/or/not)(list.append/extend/insert/index/remove/pop)(len(),min(),+/-/*//=,//,%)(仅需要掌握以上内容)

核心思想就是变换列表,如何通过合适的方式处理列表

首先,引入模块,创建一个窗口

接下来,先看主循环再说,首先就要把基本内容配置好使窗口可以关闭,自动更新画面

现在算是进入正题了,基本思路是用list_的一个变量装坐标,变量格式为

list_=[[[x1(1),y1(1)],[x2(1),y2(1)],……],[[x1(2),y1(2)],[x2(2),y2(2),……],……]

列表分三层,最里面的一层是一个[x,y],装着一个方块准备的坐标,外面一层需要把多个坐标(一般是4个)给整在一个列表下面嵌套,用这种方式把这四组坐标视为一个整体对象(比如一个方块的坐标)

将它设置在主循环外,然后就要构思如何放置方块放置方块的循环

由于此列表是多层嵌套,所以需要循环两次,第二次得到的就是标准的[x,y]坐标(i2)

方块大小设计为28*28,方块之间间隙2格,起始坐标如图30*i2[0]+182,30*i2[1]+2场景坐标自规划

接下来,思考方块,总所周知俄罗斯方块7种类型,如果这都想不明白还是别看了

用n表示类型,用1-7表示他们,初始的n应该为一个随机数,调用random.randint(1,7)示例

lo和hi表示什么呢?lo表示此图像从上到下的长度-1,hi则为宽度-1,有一定作用

接下来说变形

我将变形后的n统一规划为8-35,其中7个一组,不过有的每组都不变(比如正方形,原为2,当n=9,16,23,30时完全没变)

检测一下键盘的"w"改变形状,如果n此时>28说明到最后一组了需要回到第一组-21,否则+7

接下来看上面n=8-35时怎么具体运行的

要解释这个问题,首先明白它是怎么运动的

list_实际上分为动静两部分,最后一个对象([-1]索引)为仍然在下落的对象(一种图案),其他的为已经静止的方块

代码中in_代表状态,0时会立即在顶部生成一个图形随后变为1,而每次检测到落地就会变为0,生成的时候是在列表末尾追加,所以才说动着的就是最后一个位置的内容

弄明白了自动运动,也可以叠加了,现在是时候解释n=8-35时候的dx和dy了

为什么生成的坐标要用变量表示呢?因为变化形态后必须保证方块仍然在当前位置,dx和dy就是存储当前方块x和y的变量,为了更方便,dx,dy实际上是方块左上角的坐标

8-35,每组7个,一共4组,因为部分方块是4种形态

可以变形了也要能左右移动,仍然需要监听键盘,同时需要保证此时方块的位置在边界线(-6-8)以内才能执行

这样存在着一个问题,如果左右侧有方块,你可以控制图形直接"钻"进去

这里没有之前失败的图,直接上代码

最后,控制消行和分数,消行使用循环完成,简要地说我们使用了另外一个变量ybx存储一个单层嵌套的list_,因为i2就是每一个最后一层的坐标,而ybx仅仅只是添加进去,ybx的格式为

ybx=[[x1,y1],[x2,y2],[x3,y3],[x4,y4],……]没有进行分组

yybox是另一个变量,将ybx带入循环,将它的每一个y都放进去

yybox格式:[y1,y2,y3,y4,y5,……]

这里就可以检测了,如果yybox里有15个相等的y值(高度),则判定为有一行已经填满(别忘了宽度一共15格)

首先要直接移除掉那个地方的所有元素,但这样还不够,为什么呢?因为上面的方块需要下落,这个时候,记下当前的y值,使上面的方块下降一格,下面的方块就不动

还面临着一个问题,我们修改的是ybx这个一层的变量,和list_不一样(如果你有直接修改list_达到这样效果的当我没说,真大佬)而ybx和list_唯一的区别就是list_每4个要单独嵌套,所以再写一个变量循环进去,如果此时循环次数余数为3,那么就向里面分配一组数进去,但如果最后留下一个没分配的怎么办呢?列举相关的3种情况,并且让它添加的内容里有相等的坐标强行凑齐4个

分数设置是每行15分,每100行加高一个难度

失败判定为如果有静止的方块y值=0则失败,注意是静止

此游戏bug相当的多,因为只用最基本的功能实在需要太厉害的思维以及各种运算符切片的敏感度,如果你不断地变化形状,那么方块可能会卡到旁边的方块里或者没落下去或者翻出去,另外计算分数的时候有的时候一次消行会多计算1-2两分,包括下面这张图也一样

游戏实景

python标准库pygame_用python基础百行之内以pygame为库的俄罗斯方块代码相关推荐

  1. 够强大,Python 这款可视化数据看板不足百行代码

    对于从事数据领域的小伙伴来说,当需要阐述自己观点.展示项目成果时,我们需要在最短时间内让别人知道你的想法.我相信单调乏味的语言很难让别人快速理解.最直接有效的方式就是将数据进行可视化展现. 提到数据可 ...

  2. 小白入门——Python标准库和第三方库简介

    首先简要介绍如何查看python库安装位置,常见Python标准库和常见Python第三方库简介. 查看python库安装位置 1.使用pip list查看 在cmd中输入python -m pip ...

  3. Python标准库和第三方库简介

    Python标准库和第三方库简介 先简要介绍如何查看python库安装位置,常见Python标准库和常见Python第三方库简介. 查看python库安装位置 1.使用pip list查看 在cmd中 ...

  4. Python连载系列:认识Python

    Python连载系列:认识Python 认识Python GitHub地址:https://github.com/hellgoddess/PythonGuide 本章目录: Python简介-历史/优 ...

  5. 2020年Python行业趋势解读:Python行业前景到底如何?

    相信对于很多想转行或者零基础的小伙伴来说,Python行业发展前景绝对是关键性问题.毕竟这个关系到自己未来的就业,实际的收入,甚至决定了你的职业发展方向.那么,问题来了,到底Python行业前景如何? ...

  6. python学习费用-学习老男孩python多少钱?收费贵不贵?

    Python被评为2017年最受欢迎的编程语言,随着人工智能发展的推进,2018年热度会更高,老男孩教育早在2012年就开设了Python培训课程,目前已开设20多期,是行业较早开设Python课程的 ...

  7. python标准库很丰富支持多种编程范式_基础班-第03天{python基础}

    声明:内容来源于网络,本人只是在此稍作整理,如有涉及版权问题,归传智播客官方所有. 认识python(了解) 1.Python发展历史 起源 Python的作者,Guido von Rossum,荷兰 ...

  8. python标准库os.path中_Python零基础入门学习19:常用标准库之os.path子库

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为3~5分钟. os库是Python标准库,包含几百个函数.它能处理与系统相关的常用路径操作.进程管理.环境参数等 ...

  9. 5个python标准库及作用_零基础编程——Python标准库使用

    摘要 书接前文: 本文将讲解Python标准库内容,有操作系统接口os.文件路径通配符glob.命令行参数sys.正则表达式re.数学math.日期与时间.数据压缩.性能评估等,我们只需要知道有些什么 ...

最新文章

  1. 出门问问李志飞:小米让别人无路可走,我也要让它走起来没有那么方便
  2. An In-Depth Look at the HBase Architecture--转载
  3. tomcat更改端口
  4. python字典遍历的4种方法
  5. 计算机硬件性能关联性,计算机硬件系统组成课堂教学有效研究结题报告.ppt
  6. Hibernate学习笔记--映射配置文件详解
  7. gps频率范围_以GPS为例讲解射频接收阻抗匹配的过程
  8. 爬虫学习2----Pyquery
  9. 利用python开发一个竞争情报系统_一个基于python的即时通信程序
  10. 如何判断两物体加速度相等_高中物理知识点总结解题技巧:关联物体问题的求解方法...
  11. Easy AR初级开发教程
  12. router走差分_route
  13. 低通滤波器转带通滤波器公式由来_什么是-3dB截止频率?浅析滤波器原理、分类和滤波器优化!...
  14. Apache Ignite
  15. 以太网详解(三)-PHY Transceiver硬件设计注意事项
  16. 微信小程序组件之picker-view
  17. 多极神经元红蓝铅笔手绘,多极神经元手绘图作业
  18. halcon模板匹配实践(5)使用橡皮擦涂抹功能实现减少模板匹配特征
  19. python问题——ValueError: only 2 non-keyword arguments accepted
  20. vue+websocket+express+mongodb实战项目(实时聊天)(一)

热门文章

  1. 驭势领读 | 陈楸帆评《未来简史》:未来还属于人类吗?
  2. 2019/4/20华为西安研究所研发面试 面经
  3. 50 行 Python 代码制作一个数据大屏
  4. JAVA完整版WMS仓库管理系统PC+微信小程序端源码
  5. matlab找不到bma_g代码,基于矢量图形的G代码自动生成软件路径优化算法的研究
  6. [java]判断一个数字中是否含有某个数字
  7. 人工智能未来发展趋势
  8. SW转发与接口类型 DHCP配置
  9. CFA协会委托Prometric协助完成CFA(R) I级课程的数字化转型
  10. iOS 对https App内部的http请求进行白名单设置