用python写一个俄罗斯方块小游戏

相信大家都玩过俄罗斯方块吧,应该是小时候的回忆吧,但是想不想了解一下这个程序是怎么写出来的呢,自己写出来的应该玩起来更有感觉吧!

感觉还是蛮好玩吧!

接下来,我就分享一下这个游戏的源码过程啊!

先用python创建一个py文件

定义这次程序所需要的类

import sysimport timeimport pygamefrom pygame.localsimport *import blocks

然后写出它所需要的模块

SIZE =30 # 每个小方格大小BLOCK_HEIGHT =25  # 游戏区高度BLOCK_WIDTH =10  # 游戏区宽度BORDER_WIDTH =4  # 游戏区边框宽度BORDER_COLOR = (40, 40, 200)# 游戏区边框颜色SCREEN_WIDTH = SIZE * (BLOCK_WIDTH +5)# 游戏屏幕的宽SCREEN_HEIGHT = SIZE * BLOCK_HEIGHT# 游戏屏幕的高BG_COLOR = (40, 40, 60)# 背景色BLOCK_COLOR = (20, 128, 200)#BLACK = (0, 0, 0)RED = (200, 30, 30)# GAME OVER 的字体颜色

# 画背景```python```python
def _draw_background(screen):# 填充背景色screen.fill(BG_COLOR)# 画游戏区域分隔线pygame.draw.line(screen, BORDER_COLOR,(SIZE * BLOCK_WIDTH + BORDER_WIDTH // 2, 0),(SIZE * BLOCK_WIDTH + BORDER_WIDTH // 2, SCREEN_HEIGHT), BORDER_WIDTH)
# 画网格线```python
def _draw_gridlines(screen):# 画网格线 竖线for x in range(BLOCK_WIDTH):pygame.draw.line(screen, BLACK, (x * SIZE, 0), (x * SIZE, SCREEN_HEIGHT), 1)# 画网格线 横线for y in range(BLOCK_HEIGHT):pygame.draw.line(screen, BLACK, (0, y * SIZE), (BLOCK_WIDTH * SIZE, y * SIZE), 1)

画已经落下的方块

def _draw_game_area(screen, game_area):if game_area:for i, row in enumerate(game_area):for j, cell in enumerate(row):if cell != '.':pygame.draw.rect(screen, BLOCK_COLOR, (j * SIZE, i * SIZE, SIZE, SIZE), 0)

画单个方块

def _draw_block(screen, block, offset_x, offset_y, pos_x, pos_y):if block:for i in range(block.start_pos.Y, block.end_pos.Y + 1):for j in range(block.start_pos.X, block.end_pos.X + 1):if block.template[i][j] != '.':pygame.draw.rect(screen, BLOCK_COLOR,(offset_x + (pos_x + j) * SIZE, offset_y + (pos_y + i) * SIZE, SIZE, SIZE), 0)

画得分等信息

def _draw_info(screen, font, pos_x, font_height, score):print_text(screen, font, pos_x, 10, f'得分: ')print_text(screen, font, pos_x, 10 + font_height + 6, f'{score}')print_text(screen, font, pos_x, 20 + (font_height + 6) * 2, f'速度: ')print_text(screen, font, pos_x, 20 + (font_height + 6) * 3, f'{score // 10000}')print_text(screen, font, pos_x, 30 + (font_height + 6) * 4, f'下一个:')if __name__ == '__main__':main()

这样就可以写出来一个十分简单的俄罗斯方块啦,是不是觉得还不错呢!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下putty自动登录和窗口显示IP

一,写一个bat文件,里面内容写上 start D:\soft\putty.exe -pw my$1234 william119.29.109.244 然后就可以自动登录了。如果有多个窗口的话,标题会比较难区分,要是能显示IP就好了。 改标题这个网上很多文章,一上来就…

当能电脑能够ping通同一个网段的ip,却ping不通网关的解决方法

今日打开电脑,竟然无法上网,搞了一个多小时,才找到原因,本人视为奇耻大辱,一般大家电脑上不了网,就会按 如下步骤来解决。 一 查看网络配置, 在windows中的命令行输入框中输入ipconfig/all来查…

上云网关EasyNTS遇到IP冲突时,如何正确更改IP地址?

在此前的文章中,我们分享过很多关于EasyNTS上云网关平台及硬件的技术性内容,感兴趣的用户可以翻阅往期的文章进行了解。EasyNTS具备内网穿透、组网运维、多协议视频流拉转推、设备/业务上云等功能,具有运算速度快、安全性高、资源损耗低等特点…

什么是谈恋爱

谈恋爱 什么是谈恋爱 谈恋爱是一种社会活动,是培养爱情的过程或在爱情的基础上进行的相互交往,主要是双方交流与沟通。一般来说如果是真心接触,互相扶持,共同进步,互相成就彼此。谈恋爱的道德要求主要体现在以下几个方…

【电商】电商后台设计—购物车

在电商的核心交易流程中,购物车是其中非常重要的一环,它承担商品加购、价格计算、促销活动展示等功能,与会员系统、商品系统、库存系统、订单系统等紧密结合。 一、你真的需要购物车吗? 1. 购物车作用 电商系统中很多产品功能都…

电商开放API接口分享-商品采集接口、关键字搜索接口,获取商品ID、商品主图接口

API是application programming interface(应用程序接口)的简称,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。…

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…

淘宝双主图技术解析(附工具包)

软件准备:ps 、Fiddler 4抓包、 【第一步:主图制作!】 PS做好双主图(尺寸800*800px) 电脑显示的在第二张图,手机显示的在第一张图 第一张图0秒,第二张图240秒即可,导出为gif图片&…

跨境电商主图

一种程度上来讲,一张好的主图决定了80%以上的点击率,如何设计出一张高点击率的主图是所有卖家最关心的问题。 很多时候跨境店铺明明给了你展现的机会,但你却因为主图不够吸引人,从而错失了流量,真是太可惜了&#xff…

获取电商网站主图和详情图的浏览器插件

介绍 搞图宝,专门获取各大电商平台详情页面主图和详情图的浏览器插件 现已支持京东、京东国际、淘宝、天猫、coupang、1688、naver、gmarket、alibaba、兰亭集势 谷歌浏览器下载地址:Google Chrome 网络浏览器 插件下载地址以及详细文档:https://git…

探索在数据开发中利用chatgpt提高代码质量---第三篇

题目三: 打折日期交叉问题:计算每个品牌总的打折销售天数,注意其中的交叉日期 (1)数据准备 -- 创建手机品牌促销表 CREATE TABLE bdms.promotion_table (brand string,start_date string,end_date string ); -- 插入…

造手机、“+ AI”,掉队的蔚来瞎折腾?

对标豪华品牌BBA,自建换电站,蔚来汽车曾凭借先发优势,一度成为造车新势力的领头羊,但最近两个月,蔚来的单月交付量仅有6000多台,渐露掉队之相。 主业低迷,蔚来传出新消息。两天前,工…

RobotGPT:机器人需要从“功能机”向“智能机”升级

| 科 | 技 | 杂 | 谈 | 中国通信行业第一自媒体 如同手机“功能机”向“智能机”的升级,在人形机器人进入千家万户,真正改变我们生活的过程中,它们要为我们连接外界的信息、产品和服务,就必须,也必然身在本地&#xff…

会Excel,还有必要学习Python做数据分析吗?

众所周知,Python是一款非常优秀的编程语言,具有简单易学、多种应用场景、开源免费等优势,它在数据科学、人工智能、网络开发等领域得到广泛应用,成为了目前最受欢迎和流行的编程语言之一。 以前在数据分析课上,经常有…

游戏脚本用什么语言写_为什么要写分镜头脚本?

分镜头脚本是最实用的影视创作脚本,它是在文学脚本的基础上运用蒙太奇思维和蒙太奇技巧进行再创作的脚本,即根据拍摄提纲或文学脚本,参照拍摄现场的实际情况,分隔场次或段落,并运用形象的对比、呼应、积累、暗示、并列…

Python实战 | 如何抓取tx短片弹幕并作词云图分析

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次目的:采集tx短片弹幕,并且做词云图可视化分析 这个不少漫迷应该都看过吧~ 哪里都好,就是更新太慢了一点,剧情磨蹭了一点,哎 那今天我们就来采集一下它的弹幕吧&#xff…

html5中分镜图文脚本,企业宣传片脚本如何撰写分镜头?

企业宣传片脚本如何撰写分镜头? 在整个企业宣传片制作中,宣传片拍摄可谓是其中重要环节。而企业宣传片的拍摄脚本则是沟通宣传片策划与拍摄之间的桥梁所在。企业宣传片脚本可以说是宣传片拍摄过程中策划方案实施的指明灯,为整个拍摄指明方向&#xff0c…

html5分镜头脚本范例,分镜头脚本范本.pdf

分镜头脚本范本.pdf (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 镜 号 景别摄法时间画面解说音 乐 备注 1中景卡住男生和女生的中 景, 男生为背面斜侧, …

html5分镜头脚本范例,分镜头脚本模板(小故事分镜头脚本范例)

分镜头脚本最重要的就是可视化的语言阐述内容,在内容上有场次,镜号,景别,拍摄内容,拍摄方法,声音(人声,音乐,音响),时长,实例图片等 其中,实际图片…

qq一注销账号就服务器繁忙,qq熊熊怎样解除服务器繁忙的问题

熊熊服务器将进行不停机更新升级到最新版本,请您使用自动升级或手动升级将您的熊熊客户端升级为最新,以便体验最新游戏。正在社区的用户在服务器升级时有可能会被强制退出游戏,您可以再次登陆升级即可,对大家造成的不便,敬请谅解! 版本更新内容预知 一、新增小游戏 新增两…