乌龟图形应用程序中的线程非常缓慢
我真的不确定我是否正确使用线程,因为我只是开始使用它们,但是使用线程库,我已经设置了一个线程并将其链接到函数,但是由于某种原因,函数在线程内部运行速度非常慢。与主要代码相比。我正在使用线程来使用time.sleep()
函数,同时可以输入和处理其他内容(因为time.sleep
停止整个程序在等待的持续时间)。对不起,对于长代码,但这是:
import time
import threading
import turtle
import random
wn = turtle.Screen()
tetris = turtle.Turtle()
tetris.speed(0)
wn.tracer(0)
grid = []
tetriminos = ['t','l','j','i','s','z','o']
def time_count():
while True:
down()
time.sleep(1)
t1 = threading.Thread(target=time_count)
t1.start()
#current tetrimino
class currenttetrimino():
def __init__(self,tet,rot,centre,centreb):
self.tet = tet
self.rot = rot
self.centre = centre
self.centreb = centreb
curtet = currenttetrimino('t','1',0,0)
class square():
def __init__(self, falling, block, color):
self.falling = falling
self.block = block
self.color = color
for i in range(12):
grid.append([])
for i in range(12):
for j in range(25):
grid[i].append(square(False, False, 'gray'))
def gridsquare(color):
tetris.setheading(0)
tetris.color(color)
tetris.begin_fill()
for i in range(4):
tetris.forward(20)
tetris.right(90)
tetris.end_fill()
tetris.color('black')
def refreshGrid():
tetris.clear()
for i in range(12):
for j in range(25):
tetris.pu()
tetris.goto(i * 20 - 120, j * 20 - 250)
tetris.pd()
if grid[i][j].block == True:
gridsquare(grid[i][j].color)
elif grid[i][j].falling == True:
gridsquare(grid[i][j].color)
else:
gridsquare('gray')
def left():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i - 1][j].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i - 1][j].falling = True
grid[i - 1][j].color = grid[i][j].color
curtet.centre -= 1
refreshGrid()
def right():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i + 1][j].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[11 - i][j].falling == True:
grid[11 - i][j].falling = False
grid[11 - i + 1][j].falling = True
grid[11 - i + 1][j].color = grid[11 - i][j].color
curtet.centre += 1
refreshGrid()
def down():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i][j - 1].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j - 1].falling = True
grid[i][j - 1].color = grid[i][j].color
curtet.centreb -= 1
refreshGrid()
else:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j].block = True
lineClearCheck()
refreshGrid()
newTetrimino()
def instantDrop():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i][j - 1].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j - 1].falling = True
grid[i][j - 1].color = grid[i][j].color
curtet.centreb -= 1
instantDrop()
else:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j].block = True
lineClearCheck()
refreshGrid()
newTetrimino()
def lineClearCheck():
for i in range(24):
ok = True
for j in range(10):
if grid[j][i + 1].block == False:
ok = False
if ok == True:
lineClear(i)
def lineClear(y):
y += 1
for i in range(10):
grid[i + 1][y].block = False
for i in range(10):
for j in range(24):
if j > y and grid[i + 1][j].block == True:
grid[i + 1][j].block = False
grid[i + 1][j - 1].block = True
grid[i + 1][j - 1].color = grid[i + 1][j].color
refreshGrid()
lineClearCheck()
def rotate():
if curtet.tet == 't':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
elif curtet.tet == 'i':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre][curtet.centreb - 2].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre - 2][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb - 2].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 2][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 2].color = grid[curtet.centre + 1][curtet.centreb].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 2][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 2].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 2][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 2][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 2].color
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
elif curtet.tet == 'l':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb - 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre - 1][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb - 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb - 1].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.tet == 'j':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre - 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre - 1][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb - 1].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb - 1].color
elif curtet.tet == 'z':
if curtet.rot == 1:
if grid[curtet.centre + 1][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.tet == 's':
if curtet.rot == 1:
if grid[curtet.centre + 1][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb + 1].block != True and grid[curtet.centre - 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre + 1][curtet.centreb - 1].color
refreshGrid()
def tetrimino(a1,a2,b1,b2,c1,c2,d1,d2,color):
grid[a1][a2].falling = True
grid[b1][b2].falling = True
grid[c1][c2].falling = True
grid[d1][d2].falling = True
grid[a1][a2].color = color
grid[b1][b2].color = color
grid[c1][c2].color = color
grid[d1][d2].color = color
def newTetrimino():
tet = tetriminos[random.randint(0, 6)]
curtet.tet = tet
curtet.rot = 1
#'t','l','j','i','s','z','o'
#middle top - 5, 24
curtet.centre = 5
curtet.centreb = 23
if tet == 'z':
tetrimino(5,24,5,23,4,24,6,23,'lime green')
elif tet == 's':
tetrimino(5,24,5,23,4,23,6,24,'red')
elif tet == 't':
tetrimino(5,23,4,23,6,23,5,24,'dark magenta')
elif tet == 'l':
tetrimino(5,23,4,23,6,23,6,24,'dark orange')
elif tet == 'j':
tetrimino(5,23,4,23,6,23,4,24,'blue')
elif tet == 'i':
tetrimino(4,24,5,24,6,24,7,24,'cyan')
curtet.centre = 6
curtet.centreb = 24
elif tet == 'o':
tetrimino(5,24,6,24,5,23,6,23,'gold')
refreshGrid()
newTetrimino()
for i in range(25):
grid[0][i].block = True
grid[0][i].color = 'black'
for i in range(25):
grid[11][i].block = True
grid[11][i].color = 'black'
for i in range(12):
grid[i][0].block = True
grid[i][0].color = 'black'
refreshGrid()
wn.listen()
wn.onkeypress(left,'a')
wn.onkeypress(right,'d')
wn.onkeypress(down,'s')
wn.onkeypress(rotate,'w')
wn.onkeypress(instantDrop,'space')
wn.mainloop()
应该发生什么:每1秒钟,它运行down()
函数
发生什么:由于某种原因,它运行速度非常慢(您可以删除线程和运行它并按下“ S”,以查看它应该是什么样的)。
I'm really not sure if I'm using threads right because I just started using them but using the threading library, I have set up a thread and linked it to a function, but for some reason that function runs very slow inside the thread compared to in the main code. I am using threading to be able to use the time.sleep()
function at the same time as being able to input and process other things (since time.sleep
halts the entire program for the duration that it is waiting). Sorry for long code but here it is:
import time
import threading
import turtle
import random
wn = turtle.Screen()
tetris = turtle.Turtle()
tetris.speed(0)
wn.tracer(0)
grid = []
tetriminos = ['t','l','j','i','s','z','o']
def time_count():
while True:
down()
time.sleep(1)
t1 = threading.Thread(target=time_count)
t1.start()
#current tetrimino
class currenttetrimino():
def __init__(self,tet,rot,centre,centreb):
self.tet = tet
self.rot = rot
self.centre = centre
self.centreb = centreb
curtet = currenttetrimino('t','1',0,0)
class square():
def __init__(self, falling, block, color):
self.falling = falling
self.block = block
self.color = color
for i in range(12):
grid.append([])
for i in range(12):
for j in range(25):
grid[i].append(square(False, False, 'gray'))
def gridsquare(color):
tetris.setheading(0)
tetris.color(color)
tetris.begin_fill()
for i in range(4):
tetris.forward(20)
tetris.right(90)
tetris.end_fill()
tetris.color('black')
def refreshGrid():
tetris.clear()
for i in range(12):
for j in range(25):
tetris.pu()
tetris.goto(i * 20 - 120, j * 20 - 250)
tetris.pd()
if grid[i][j].block == True:
gridsquare(grid[i][j].color)
elif grid[i][j].falling == True:
gridsquare(grid[i][j].color)
else:
gridsquare('gray')
def left():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i - 1][j].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i - 1][j].falling = True
grid[i - 1][j].color = grid[i][j].color
curtet.centre -= 1
refreshGrid()
def right():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i + 1][j].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[11 - i][j].falling == True:
grid[11 - i][j].falling = False
grid[11 - i + 1][j].falling = True
grid[11 - i + 1][j].color = grid[11 - i][j].color
curtet.centre += 1
refreshGrid()
def down():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i][j - 1].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j - 1].falling = True
grid[i][j - 1].color = grid[i][j].color
curtet.centreb -= 1
refreshGrid()
else:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j].block = True
lineClearCheck()
refreshGrid()
newTetrimino()
def instantDrop():
ok = True
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
if grid[i][j - 1].block == True:
ok = False
if ok == True:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j - 1].falling = True
grid[i][j - 1].color = grid[i][j].color
curtet.centreb -= 1
instantDrop()
else:
for i in range(12):
for j in range(25):
if grid[i][j].falling == True:
grid[i][j].falling = False
grid[i][j].block = True
lineClearCheck()
refreshGrid()
newTetrimino()
def lineClearCheck():
for i in range(24):
ok = True
for j in range(10):
if grid[j][i + 1].block == False:
ok = False
if ok == True:
lineClear(i)
def lineClear(y):
y += 1
for i in range(10):
grid[i + 1][y].block = False
for i in range(10):
for j in range(24):
if j > y and grid[i + 1][j].block == True:
grid[i + 1][j].block = False
grid[i + 1][j - 1].block = True
grid[i + 1][j - 1].color = grid[i + 1][j].color
refreshGrid()
lineClearCheck()
def rotate():
if curtet.tet == 't':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
elif curtet.tet == 'i':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre][curtet.centreb - 2].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre - 2][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb - 2].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 2][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 2].color = grid[curtet.centre + 1][curtet.centreb].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 2][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 2].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 2][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 2][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 2].color
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
elif curtet.tet == 'l':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb - 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre - 1][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb - 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb - 1].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.tet == 'j':
if curtet.rot == 1:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb + 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre + 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 3:
if grid[curtet.centre][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True and grid[curtet.centre - 1][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre - 1][curtet.centreb - 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb - 1].color
elif curtet.rot == 4:
if grid[curtet.centre + 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb].block != True and grid[curtet.centre - 1][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb - 1].color
elif curtet.tet == 'z':
if curtet.rot == 1:
if grid[curtet.centre + 1][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb - 1].block != True:
curtet.rot += 1
grid[curtet.centre - 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb - 1].color = grid[curtet.centre][curtet.centreb + 1].color
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre - 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre - 1][curtet.centreb + 1].block != True and grid[curtet.centre][curtet.centreb + 1].block != True:
curtet.rot = 1
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre][curtet.centreb - 1].falling = False
grid[curtet.centre - 1][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].falling = True
grid[curtet.centre][curtet.centreb + 1].color = grid[curtet.centre][curtet.centreb - 1].color
grid[curtet.centre - 1][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.tet == 's':
if curtet.rot == 1:
if grid[curtet.centre + 1][curtet.centreb - 1].block != True and grid[curtet.centre + 1][curtet.centreb].block != True:
curtet.rot += 1
grid[curtet.centre + 1][curtet.centreb + 1].falling = False
grid[curtet.centre - 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb - 1].falling = True
grid[curtet.centre + 1][curtet.centreb].color = grid[curtet.centre - 1][curtet.centreb].color
grid[curtet.centre + 1][curtet.centreb - 1].color = grid[curtet.centre + 1][curtet.centreb + 1].color
elif curtet.rot == 2:
if grid[curtet.centre + 1][curtet.centreb + 1].block != True and grid[curtet.centre - 1][curtet.centreb].block != True:
curtet.rot = 1
grid[curtet.centre + 1][curtet.centreb].falling = False
grid[curtet.centre + 1][curtet.centreb - 1].falling = False
grid[curtet.centre + 1][curtet.centreb + 1].falling = True
grid[curtet.centre - 1][curtet.centreb].falling = True
grid[curtet.centre + 1][curtet.centreb + 1].color = grid[curtet.centre + 1][curtet.centreb].color
grid[curtet.centre - 1][curtet.centreb].color = grid[curtet.centre + 1][curtet.centreb - 1].color
refreshGrid()
def tetrimino(a1,a2,b1,b2,c1,c2,d1,d2,color):
grid[a1][a2].falling = True
grid[b1][b2].falling = True
grid[c1][c2].falling = True
grid[d1][d2].falling = True
grid[a1][a2].color = color
grid[b1][b2].color = color
grid[c1][c2].color = color
grid[d1][d2].color = color
def newTetrimino():
tet = tetriminos[random.randint(0, 6)]
curtet.tet = tet
curtet.rot = 1
#'t','l','j','i','s','z','o'
#middle top - 5, 24
curtet.centre = 5
curtet.centreb = 23
if tet == 'z':
tetrimino(5,24,5,23,4,24,6,23,'lime green')
elif tet == 's':
tetrimino(5,24,5,23,4,23,6,24,'red')
elif tet == 't':
tetrimino(5,23,4,23,6,23,5,24,'dark magenta')
elif tet == 'l':
tetrimino(5,23,4,23,6,23,6,24,'dark orange')
elif tet == 'j':
tetrimino(5,23,4,23,6,23,4,24,'blue')
elif tet == 'i':
tetrimino(4,24,5,24,6,24,7,24,'cyan')
curtet.centre = 6
curtet.centreb = 24
elif tet == 'o':
tetrimino(5,24,6,24,5,23,6,23,'gold')
refreshGrid()
newTetrimino()
for i in range(25):
grid[0][i].block = True
grid[0][i].color = 'black'
for i in range(25):
grid[11][i].block = True
grid[11][i].color = 'black'
for i in range(12):
grid[i][0].block = True
grid[i][0].color = 'black'
refreshGrid()
wn.listen()
wn.onkeypress(left,'a')
wn.onkeypress(right,'d')
wn.onkeypress(down,'s')
wn.onkeypress(rotate,'w')
wn.onkeypress(instantDrop,'space')
wn.mainloop()
What is supposed to happen: every 1 second it runs the down()
function
What happens: it runs it very slow for some reason (you can remove the thread and run it and press 's' to see what it is supposed to be like).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论