当前位置: 首页 > article >正文

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

谈到记忆里的小游戏,俄罗斯方块是大家一定会想到的一款游戏,自己写出来的应该玩起来更有感觉,然后就写了一个俄罗斯方块的游戏
image.png
给大家分享一下这个游戏的源码
先用python创建一个py文件

定义这次程序所需要的类

import sys

import time

import pygame

from 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()


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

image.png
以上就是俄罗斯方块的源码过程,大家可以写一下玩一玩

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。


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

全套资料已经打包好了,朋友们如果需要可以【点击这里】免费获得【保证100%免费】

希望这篇文章对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。
————————————————


http://www.kler.cn/a/406479.html

相关文章:

  • Maven 依赖管理
  • 课程考核 三道模拟题
  • 菜鸟驿站二维码/一维码 取件识别功能
  • 免费开源!DBdoctor推出开源版系统诊断工具systool
  • centos安装jenkins
  • Redis性能优化的18招
  • 机器人打包物品研究现状简述
  • stm32启动过程解析startup启动文件
  • 【分享一个vue指令】鼠标放置提示指令v-tooltip
  • 【git】husky - pre-commit script failed (code 2)
  • 数据库课程设计全流程:方法与实例解析
  • C#调用JAVA
  • Rust编程与项目实战-模块std::thread(之一)
  • Rust 的静态网站生成器「GitHub 热点速览」
  • VTK知识学习(11)- 可视化管线
  • 第J7周:对于ResNeXt-50算法的思考
  • Linux Docker 部署 Jenkins 详解教程
  • C#里怎么样判断文件是否存在?
  • Idea修改Commit Changes模式、idea使用git缺少部分Commit Changes
  • 基本的SELECT语句
  • 在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
  • 车企如何实现安全图纸外发管理
  • 单片机学习笔记 5. 数码管静态显示
  • Diving into the STM32 HAL-----DAC笔记
  • 设计模式:6、装饰模式(包装器)
  • 如何修复WordPress卡在维护模式