赞
踩
一、引入所需的包
- 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)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。