肝了一夜,200行Python写了个俄罗斯方块,玩了一夜!

用python写一个俄罗斯方块小游戏 相信大家都玩过俄罗斯方块吧,应该是小时候的回忆吧,但是想不想了解一下这个程序是怎么写出来的呢,自己写出来的应该玩起来更有感觉吧! 感觉还是蛮好玩吧! 接下来,我就分享一下这个游戏的源码过程啊! 先用python创建一个py文件 定义这次程序所需要的类 import sys import time import pygame from pygame.localsimport * import blocks 然后写出它所需要的模块 SIZE =30 # 每个小方格大小 BLOCK_HEIGHT =2 阅读详情
点上方“菜鸟学Python”,选择“星标”
第487篇原创干货,第一时间送达

大家好,我是菜鸟哥!

夏天到了,长夜漫漫,无心睡眠呀!最近也没有啥好看的电影,马上就要毕业季啦,学妹都忙着去实习了,没有人找我学Python。于是就找点游戏打发时间,忽然想玩俄罗斯方块了,这个游戏还是非常经典呢!想想,反正是玩Python要不干脆自己用Python整一个吧,说干就干,撸起袖子,写代码。

01.效果展示

对于俄罗斯方块,想必大家都有印象,甚至好多的小伙伴都玩过。其实我个人觉得学习编程最好的办法就是找一个非常有兴趣的切入点去学习,这样有持续的动力。写一个小游戏,其实就是一个不错的方法,来看一下效果先!

02.程序讲解

看完游戏的效果之后,接下来我们来看一下程序是如何实现的吧。对于本次的程序,主要有两个类,分别是整个程序运行类Tetris,另一个就是生成每个方块对象的方块类Cube。我们以程序运行类入手,然后穿插讲解方块类,让大家清晰的了解整个程序的构建。

1).游戏初始化界面

在Tetris类中,需要设置游戏的初始化界面,程序如下图所示:

上述的程序中,通过self.showText函数来显示游戏的名字,通过self.button函数来分别控制self.run主函数和self.quitGame函数。其中self.button函数如下图所示。

函数中,首先判断鼠标点击的范围是否在指定的范围内,如果是的话,就执行action函数,如果不是,则就在界面中画出矩形,并在矩形中写上msg文字。

初始化的界面如下图所示:

2).进入self.run主函数

当点击上述的“开始”按钮后,程序便进入到self.run函数中进行执行。在self.run函数中,程序通过创建一个Cube类对象,然后监听键盘的上下左右箭头动作,来控制Cube对象的移动。

3.创建Cube类对象

方块类主要包含以下的信息,方块的位置信息,上下左右以及变形的运动方式,碰撞检测以及在界面中画出方块。这里我们挑选出获取方块的位置信息,检测碰撞以及向左运动的函数进行讲解,其他的函数大家可以下载源码来阅读。如下图所示:

上述的函数中,self.gridsPos函数获取的是方块的位置信息,如下图所示:

图的游戏界面中,方块在网格界面中移动,左上角的方格位置为(0,0),右小角的方格位置为(24,14)。self.gridsPos函数返回的是上图中的四个方格的位置坐标。self.collision函数用于方块的碰撞检测,而self.left函数是将方块的中心点向左移动一格,这样方块在界面上的显示就会向左整体移动一格,此外可以看到,每一个方块都是由四个小的方格构成。

4).方块不能向下移动

在self.run函数中,当方块不能向下移动时,存在两种可能,一个是跟已存在的方块发生了碰撞,另一种可能是达到了界面的底部。所以当方块不能向下移动时,就需要进行处理,生成下一个方块,而当方块跟自己发生了碰撞时,此时表明我们游戏结束。

5.更新界面内容

游戏的最后一步就是更新界面的显示内容,包括了方格的绘制,界面上已经存在的方块以及界面右侧的提升信息,函数如下图所示。

上述函数是画出界面上已经存在的方块以及提示信息的绘制。其效果如下图所示:

图中显示的每个部分都有特定的函数完成,而对于正在从上往下移动的方块来说,它的绘制是由Cube类中的draw函数绘制而成。

3.总结

整个这个游戏大概两百多行,就可以实现了经典而好玩的俄罗斯方块游戏,有兴趣的同学可以拿到源码进行魔改,增加一些功能!如果有学妹想学的,也可以联系小助手。

如何获取源码:

在下面的公众号后台输入:小助手,找他拿源码,备注暗号:俄罗斯



推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,领AI全套资料!
300行代码实现Python游戏:俄罗斯方块 本文代码基于 python3.6 和 pygame1.9.4。 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。 先来看一个游戏截图,有点丑,好吧,我没啥美术细胞,但是主体功能都实现了,可以玩起来。 现在来看一下实现的过程。 外形 俄罗斯方块整个界面... 阅读详情

相关推荐

基于Pierre Dellacherie算法实现俄罗斯方块的人工智能(python实现)《一》

基于Pierre Dellacherie算法实现俄罗斯方块的人工智能(python实现)《一》 1. 文章结构 本系列文章包括三部分: 1. 用python实现俄罗斯方块:《一》 2. 个性化功能的添加:游戏结束的动画,ad广告板等:《二》 3. 基于Pierre Dellacherie算法实现俄罗斯方块的人工智能:《三》 2. 项目介...

charming的博客 7667

python俄罗斯方块实训目标_俄罗斯方块实训总结.doc

俄罗斯方块实训总结这次实训即有收获,也有失落:1、俄罗斯方块程序勿促完成,有很多的bug,架构也有很多不合理的地方。虽然把所有的逻辑都进行的封装,但总感觉有些牵强附会。上课时,并没有讲任何的面向对象的内容,这样的代码让学生去理解实在是勉为其难。其实先让学生以面向过程的方法去编程,过一段时间再学面向对象或许对学生更为有利。2、代码和逻辑过于复杂,一方面学生难于理解,以至于使很多的学生丧失了继续学习程...

weixin_39800875的博客 1622

Python实现俄罗斯方块

俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。

不脱发的程序猿 4323

Python 俄罗斯方块, 基于pyqt5实现俄罗斯方块 --pyqt5 进阶

      学习了pyqt5后,总想弄些有趣点的, 然后就想起了弄一个小游戏, 弄一个简单的小游戏, 然后就用pyqt5写了一个俄罗斯方块的小游戏 开发环境 windows 10 python3.8x 游戏思路

Karbob 4761

200行代码搞定2048小游戏——python之禅

用python做的2048小游戏,只要200行就可搞定。人生苦短,我用python

C++俄罗斯方块200+行

很巧妙的生成跟旋转算法 就不需要什么数组来存储了 代码量很少。

python编的俄罗斯方块游戏_Python编写俄罗斯方块小游戏

俄罗斯方块是俄罗斯人发明的一款休闲类的小游戏,这款小游戏可以说是很多人童年的主打电子游戏了,本文我们使用 Python 来实现这款小游戏。游戏的基本规则是:移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。实现我们实现俄罗斯方块,主要用到的是 PyQt5 库,安装使用 pip install PyQt5 即可,游戏的组成比较简单,主要包括:主界面、各种方块和计分板,下...

weixin_39966130的博客 382

200行python代码实现贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 这次我们来写一个贪吃蛇游戏 下面贴出具体代码 import pygame import time import numpy as np # 此模块包含游戏所需的常量 from pygame.locals import * # 设置棋盘的长宽 BOARDWIDTH = 48 BOARDHEIGHT = 28 # 分数 score = 0 class Food(object): def __init__(self): self.item = (4, 5) # 画出食物 def _draw(self, sc

❤️ 硬核玩游戏:200行代码给你整个俄罗斯方块 ❤️

目录一、项目介绍二、编译运行1、编译过程2、所需文件 一、项目介绍 俄罗斯方块:顾名思义,俄罗斯方块自然是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。 该项目全部由c++编码实现,代码一共不到2

GOOD GOOD STUDY, DAY DAY UP 1815

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8027

ADS1220 STM32硬件SPI驱动程序

前一段时间温故了下标准库,使用的是F1系列芯片,测试程序。

随风飘零翼的博客 5770

300行Python代码实现俄罗斯方块,致敬逝去的童年

本文代码基于 python3.6 和 pygame1.9.4。俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。先来看一个游戏截图,有点丑,好吧,我没啥美术细胞,但是主体功能都实现了,可以玩起来。本人对于Python学习创建了一个小小的学习圈子,为各位提...

weixin_34233679的博客 2617

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 241

Python 游戏:300行代码实现俄罗斯方块

本文代码基于 python 3.6 和 pygame1.9.4。 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。 先来看一个游戏截图,有点丑,好吧,我没啥美术细胞,但是主体功能都实现了,可以玩起来。 现在来看一下实现的过程。 外形 ...

guliang21的专栏 9586

AES128加密算法开发(含源码)

本文详解了AES128加密算法的原理与C语言实现。AES128是当前广泛使用的对称加密标准,采用128位密钥和10轮变换,具有高安全性和高效性。文章从算法背景、核心概念(混淆与扩散)入手,详细解析了4×4状态矩阵表示、4个核心变换(字节替换、行移位、列混合、轮密钥加)以及密钥扩展过程。特别针对汽车电子应用场景,如ECU通信加密、车钥匙认证等,说明了AES128在资源受限环境中的优势。通过分步图解和原理剖析,帮助开发者深入理解这一加密标准的技术细节与实现方法。

汽车电子软件开发笔记 2918

LoRaWAN数据包分析工具

前言:LoRaWAN的射频数据包是加密的,而且有些字段是某个字节的某几位,看着不是那么直观,因此在某些情况下需要借助工具来分析数据包。 1、安装npm 这个工具是用JavaScript写的,其中用到了一些依赖库,而npm就可以一次性把这些依赖库下载下来,因此我们先要下载安装npm这个工具。 安装:sudo apt install npm 输入y,等待安装完成: 检查是否安装成功:npm -v 说明安装完成。 2、安装LoRa数据包分析工具lora-packet 安装:npm i.

freemote的博客 4630

python实现俄罗斯方块小游戏

回顾我们的python制作小游戏之路 我们用python实现了坦克大战 python制作坦克大战 我们用python实现了飞船大战 python制作飞船大战 我们用python实现了两种不同的贪吃蛇游戏 200行python代码实现贪吃蛇游戏 150行代码实现贪吃蛇游戏 我们用python实现了扫雷游戏 python实现扫雷游戏 我们用python实现了五子棋游戏 python实现五子棋游戏 今天...

liuzuoping的博客 8204

CDMamba安装配置Windows(50系列的显卡)

本人家里的显卡是RTX3050的,运行起来非常缓慢,大家可以参考上一篇文章,以下是用RTX5080配置的CDMamba,里面有一些库没有更新,因此会比较坑爹。就是pytorch已经更新了,搭配的是cuda12.8,但是cdmamba里的mmcv只更新到cuda12.1的版本,当然很多人会说那就向下兼容,但是笔者已经尝试了,会一直提示mmcv的问题。因此,索性直接不用mmcv。

hanfeng5268的博客 686

python小游戏——俄罗斯方块

python小游戏,pygame库俄罗斯方块完整代码及详细介绍。

m0_50162049的博客 1万+

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 481

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Pygame用200行代码实现俄罗斯方块

俄罗斯方块的逻辑很简单,就是几个方块组合在一起,然后下落,当其碰到四周的墙壁后便无法移动。方块在下落过程中若碰壁,则稍微有些麻烦,因为下方可能已经堆积了一些方块,为此不仅需要知道当前下落方块的信息,还要知道已经堆积的方块的信息。接下来逐个实现俄罗斯方块的细节,当左右移动方块时,若方块碰到墙壁,则需要一个判定函数,代码如下。然后是方块绘制函数,顾名思义,drawBlock绘制一个方块,drawBlocks绘制一组方块。其消除逻辑是,当某行全为1的时候,就把这行删掉,然后在顶端补充全0的列表。

微小冷的学习笔记 1431

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python小技巧:300行代码实现俄罗斯方块

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录前言外形方块停靠 前言 本文代码基于 python3.6 和 pygame1.9.4。 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。 先来看一个游戏截图,有点丑,好吧,我没啥美术细胞,但是主体功能都实现了,可以玩起来。 现在来看一下实现的过程。 外形 俄罗斯方块整个界面分为两部分,

python爬虫程序学习教程 3902

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python俄罗斯方块代码34行_Python:游戏:300行代码实现俄罗斯方块

本文代码基于 python3.6 和 pygame1.9.4。俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。先来看一个游戏截图,有点丑,好吧,我没啥美术细胞,但是主体功能都实现了,可以玩起来。现在来看一下实现的过程。外形俄罗斯方块整个界面分为两部分,...

weixin_30592887的博客 1972

用 Python 写了一个俄罗斯方块小游戏(附源码)

如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

m0_62283350的博客 1914

python小游戏源码-Python小游戏之300行代码实现俄罗斯方块

Python小游戏之300行代码实现俄罗斯方块来源:中文源码网 浏览: 次 日期:2019年11月5日【下载文档: Python小游戏之300行代码实现俄罗斯方块.txt 】(友情提示:右键点上行txt文档名->目标另存为)Python小游戏之300行代码实现俄罗斯方块前言本文代码基于 python3.6 和 pygame1.9.4。俄罗斯方块是儿时最经典的游戏之一,刚开始接触 py...

weixin_37988176的博客 1959
上一篇: 2021高考热度最高专业,大数据分析告诉你
下一篇: 火了!一周暴涨 3000 Star 的开源项目!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值