From 043310694c38c7b75b1c2d9f3fd2302d3df8a7c8 Mon Sep 17 00:00:00 2001
From: BellCodeEditor <bellcode_dev@bell.ai>
Date: Sun, 8 May 2022 16:36:09 +0800
Subject: [PATCH] auto save

---
 my_Tetris.py | 41 +++++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/my_Tetris.py b/my_Tetris.py
index 8711234..7a7ba06 100644
--- a/my_Tetris.py
+++ b/my_Tetris.py
@@ -1,5 +1,6 @@
 import pygame
 from pygame import locals
+import random  # 导入random模块
 
 pygame.init()   # 初始化
 score = 0
@@ -45,22 +46,42 @@ cube_colors = [
     (153, 0, 51), (204, 255, 102), (255, 153, 0)]
 
 center = [2, 8]     # 第2行第8列
-current_shape = [(0, -1), (0, 0), (0, 1), (-1, 0)]
+# 调用random模块中的choice方法从7种方块列表中随机选出一个,并赋值给变量shape
+shape = random.choice(shape_list)
+# 随机形状索引
+index = random.randint(0, len(shape)-1)  # 随机选出一个形状绘制出来
+current_shape = shape[index]  # 生成索引下标
+color = random.choice(cube_colors)  # 方块颜色调用random模块的chioce方法随机选取一种
+
+def check(center):  # def定义函数check,参数center
+    for cube in current_shape:  # for循环
+        # 计算出移动后每个小方块的行、列位置
+        cube = (cube[0] + center[0], cube[1] + center[1])
+        # if判断当前的小方块超出网格的行、列,就返回False
+        if cube[0] < 1 or cube[1] < 1 or cube[0] > grid_num_height\
+                or cube[1] >grid_num_width:
+            return False  # 返回False
 
 while True:
     for event in pygame.event.get():
         if event.type == locals.QUIT:
             exit()
         if event.type == locals.KEYDOWN:
-            if event.key == locals.K_RIGHT:     # 向右
-                if center[1] < 15:
-                    center[1] += 1
-            elif event.key == locals.K_LEFT:    # 向左
-                if center[1] > 1:
-                    center[1] -= 1
-            elif event.key == locals.K_DOWN:    # 向下
-                if center[0] < 25:
-                    center[0] += 1
+            if event.key == locals.K_RIGHT:  # 向右
+                center[1] = center[1] + 1  # 中心点右移1列
+                # if判断方块有没有超出网格范围,使用检查函数进行检测
+                if check(center) == False:
+                    center[1] = center[1] - 1  # 左移1列,位置还原
+            elif event.key == locals.K_LEFT:  # 向左
+                center[1] = center[1] - 1  # 中心点左移1列
+                # if判断方块有没有超出网格范围,使用检查函数进行检测
+                if check(center) == False:
+                    center[1] = center[1] + 1  # 右移1列,位置还原
+            elif event.key == locals.K_DOWN:  # 向下
+                center[0] = center[0] + 1  # 中心点下移1行
+                # if判断方块有没有超出网格范围,使用检查函数进行检测
+                if check(center) == False:
+                    center[0] = center[0] - 1  # 上移1行,位置还原
 
     # 将背景图画上去
     screen.blit(background, (0, 0))
--
libgit2 0.25.0