Python+pygame制作小游戏--俄罗斯方块(一)

一、引入所需的包

import os
import pygame
import sys
import random
import pygame.font
import time

二、初始化

都是一些基本的操作,不赘述。不清楚的看注释及查文档。

pygame.init()
 
cols = 10                        #游戏网格列数,可以调整,不要太小
rows = 20                        #游戏网格行数,可以调整
cell_size = 38                    #一个网格的大小
block_size = cell_size - 1        #一个方块的大小,小于等于cell_size,即要有边距
block_edge = int(block_size /2)    #方块的立体感,数字>=1,数字越小立体感越强
fps = 38                        #每秒帧数,建议范围20-60
 
win_width = cols * cell_size     #主屏宽度
win_hight = rows * cell_size     #主屏高度
#设置pygame窗口居中,注意值的设置方式。必须在pg.display.set_mode前面调用
os.environ['SDL_VIDEO_CENTERED'] = '1'
#或 设置pygame窗口的位置(左上角),格式为"x, y"。必须在pg.display.set_mode前面调用 
# os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (380,38)   
screen = pygame.display.set_mode((win_width, win_hight))  
pygame.display.set_caption("我的俄罗斯方块")  #设置标题

三、定义block

一共有7种类型:条型,田字型,T型,L型,J型,S型,Z型,所有的类型都由4个小方块组成,都是最终在一个4*4的方格中。按惯例,左上角定义为(0,0),就可以知道其中每个小网格的相对坐标,移动时就是移动这些个坐标了,旋转时也是依赖这些坐标,形成了一个标准结构:(以下以T型为例子说明)

最终定义完成一个完整的blocks字典结构

blocks = {
    1: [[(0,1),(1,1),(2,1),(3,1)],
        [(2,0),(2,1),(2,2),(2,3)]],        #条型
    2: [[(1,1),(2,1),(1,2),(2,2)]],        #田字型
    3: [[(0,1),(1,1),(2,1),(1,2)],
        [(1,0),(0,1),(1,1),(1,2)],
        [(1,1),(0,2),(1,2),(2,2)],
        [(1,0),(1,1),(2,1),(1,2)]],        #T型
    4: [[(0,1),(1,1),(2,1),(0,2)],
        [(0,0),(1,0),(1,1),(1,2)],
        [(2,1),(0,2),(1,2),(2,2)],
        [(1,0),(1,1),(1,2),(2,2)]],        #L型
    5: [[(0,1),(1,1),(2,1),(2,2)],
        [(1,0),(1,1),(0,2),(1,2)],
        [(0,1),(0,2),(1,2),(2,2)],
        [(1,0),(2,0),(1,1),(1,2)]],        #J型
    6: [[(1,1),(2,1),(0,2),(1,2)],
        [(0,0),(0,1),(1,1),(1,2)]],        #S型
    7: [[(0,1),(1,1),(1,2),(2,2)],
        [(2,0),(1,1),(2,1),(1,2)]],}       #Z型

四、定义颜色

为简单起见,只定义了网格底色和7种方块对应的颜色。

app_colors = [(138,200,198),(200,50,50),(50,200,200),(50,50,200),(200,200,50),(200,50,200),(50,200,50),(125,50,125)]

Python+pygame制作经典小游戏--俄罗斯方块(二)

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值