pygame module - 半成品俄罗斯方块

main.py

import random
from pygame.locals import *
import sys
from shapes7 import *
import threading
import time

pygame.init()
lock = threading.Lock()
mutex = threading.Lock()
global tsid, speed, pps, pvs, tsnb

# 设置屏幕大小
screen = pygame.display.set_mode((600, 600))

# 颜色信息
# forum_gold = 255, 227, 132
light_yellow = 255, 222, 179
deep_dark = 41, 36, 33
# white = 255, 255, 255
# blue = 0, 0, 255

# 创建随机数
tsid = random.randint(0, 4)

# 设置字体
myFont = pygame.font.Font(None, 25)
textImage1 = myFont.render("K_LEFT to move left", False, deep_dark)
textImage2 = myFont.render("K_RIGHT to move right", False, deep_dark)
textImage3 = myFont.render("K_UP to switch the shape", False, deep_dark)
textImage4 = myFont.render("K_SPACE to restart", False, deep_dark)

# 设置公共参数
width = 6  # 图形宽度
speed = 30  # 下沉速度
pps = 0  # 竖直坐标补偿
pvs = 0  # 水平补偿坐标
color = deep_dark  # 图形颜色
tsnb = 0  # T-shape号码

def keyboard_listener():
    global tsnb, tsid, pvs, pps
    while True:
        # 定义键盘事件 K_UP, K_DOWN, K_LEFT, K_RIGHT, K_SPACE, QUIT
        for event in pygame.event.get():
            # if event.type in (QUIT, KEYDOWN) or event.type == KEYDOWN and event.key == K_SPACE:
            if event.type == QUIT:
                pygame.quit(), sys.exit()
            # elif event.type == KEYDOWN and event.key == pygame.K_1 and action_flag == 0:
            #     sys.exit()
            elif event.type == KEYDOWN and event.key == pygame.K_UP:
                # lock.acquire()
                if tsid in (0, 3, 4):
                    if tsnb >= 3:
                        tsnb = 0
                    else:
                        tsnb += 1
                elif tsid in (2, 5, 6):
                    if tsnb >= 1:
                        tsnb = 0
                    else:
                        tsnb += 1
                # lock.release()
            elif event.type == KEYDOWN and event.key == pygame.K_SPACE:
                lock.acquire()
                pvs = pps = tsnb = 0
                tsid = random.randint(0, 4)
                lock.release()
            elif event.type == KEYDOWN and event.key == pygame.K_LEFT:
                # lock.acquire()
                pvs -= 30
                # lock.release()
            elif event.type == KEYDOWN and event.key == pygame.K_RIGHT:
                # lock.acquire()
                pvs += 30
                # lock.release()

def main():
    # clock = pygame.time.Clock()
    global pps, pvs, tsnb, tsid, speed

    while True:
        time.sleep(0.4)
        screen.fill(light_yellow)
        # screen.blit(textImage, (200, 200))
        # 下沉规则
        if pps < 540 - speed and ((tsid == 0 and tsnb != 0) or (tsid == 2 and tsnb == 1) or (tsid in (3, 4) and tsnb == 1)):
            lock.acquire()
            pps += speed
            lock.release()
        elif pps < 570 - speed and (tsid == tsnb == 0 or tsid == 1 or (tsid in (3, 4) and tsnb != 1)):#(0, 1, 3, 4)
            lock.acquire()
            pps += speed
            lock.release()
        elif pps < 600 -speed and tsid == 2 and tsnb == 0:
            lock.acquire()
            pps +=speed
            lock.release()

        # 绘制图形
        if tsid == 0:
            lock.acquire()
            shape_t(screen, color, width, pps, tsnb, pvs)
            lock.release()
        elif tsid == 1:
            lock.acquire()
            shape_o(screen, color, width, pps, pvs)
            lock.release()
        elif tsid == 2:
            lock.acquire()
            shape_i(screen, color, width, pps, tsnb, pvs)
            lock.release()
        elif tsid == 3:
            lock.acquire()
            shape_l(screen, color, width, pps, tsnb, pvs)
            lock.release()
        elif tsid == 4:
            lock.acquire()
            shape_j(screen, color, width, pps, tsnb, pvs)
            lock.release()
        # elif tsid == 5:
        #     shape_z(screen, color, width, pps, tsnb, pvs)
        # elif tsid == 6:
        #     shape_s(screen, color, width, pps, tsnb, pvs)

        # 绘制文字
        screen.blit(textImage1, (0, 0))
        screen.blit(textImage2, (0, 30))
        screen.blit(textImage3, (0, 60))
        screen.blit(textImage4, (0, 90))
        pygame.display.update()
        time.sleep(0.4)



# 创建游戏循环线程、键盘监听线程
game_thread = threading.Thread(target=main)
keyboard_thread = threading.Thread(target=keyboard_listener)

keyboard_thread.start()
game_thread.start()

shapes7.py

import pygame

# 第一个形状
def shape_t(screen, color, width, pps, tsnb, pvs):
# 线的参数
    up_p1 = 285+pvs, 0.0+pps
    up_p2 = 315+pvs, 0.0+pps
    lt_p2 = 255+pvs, 60.0+pps
    lt_p1 = 255+pvs, 30.0+pps
    rt_p1 = 345+pvs, 30.0+pps
    rt_p2 = 345+pvs, 60.0+pps
    dn_p1 = 285+pvs, 90.0+pps
    dn_p2 = 315+pvs, 90.0+pps
    md_p1 = 285+pvs, 30.0+pps
    md_p2 = 315+pvs, 30.0+pps
    md_p3 = 285+pvs, 60.0+pps
    md_p4 = 315+pvs, 60.0+pps

    if tsnb == 0:
        pygame.draw.line(screen, color, up_p1, md_p3, width)
        pygame.draw.line(screen, color, up_p2, md_p4, width)
        pygame.draw.line(screen, color, up_p1, up_p2, width)
        pygame.draw.line(screen, color, lt_p1, rt_p1, width)
        pygame.draw.line(screen, color, lt_p2, rt_p2, width)
        pygame.draw.line(screen, color, lt_p1, lt_p2, width)
        pygame.draw.line(screen, color, rt_p1, rt_p2, width)
    elif tsnb == 1:
        pygame.draw.line(screen, color, up_p1, dn_p1, width)
        pygame.draw.line(screen, color, up_p2, dn_p2, width)
        pygame.draw.line(screen, color, up_p1, up_p2, width)
        pygame.draw.line(screen, color, md_p1, rt_p1, width)
        pygame.draw.line(screen, color, md_p3, rt_p2, width)
        pygame.draw.line(screen, color, dn_p1, dn_p2, width)
        pygame.draw.line(screen, color, rt_p1, rt_p2, width)
    elif tsnb == 2:
        pygame.draw.line(screen, color, dn_p1, md_p1, width)
        pygame.draw.line(screen, color, dn_p2, md_p2, width)
        pygame.draw.line(screen, color, dn_p1, dn_p2, width)
        pygame.draw.line(screen, color, lt_p1, rt_p1, width)
        pygame.draw.line(screen, color, lt_p2, rt_p2, width)
        pygame.draw.line(screen, color, lt_p1, lt_p2, width)
        pygame.draw.line(screen, color, rt_p1, rt_p2, width)
    elif tsnb == 3:
        pygame.draw.line(screen, color, up_p1, dn_p1, width)
        pygame.draw.line(screen, color, up_p2, dn_p2, width)
        pygame.draw.line(screen, color, up_p1, up_p2, width)
        pygame.draw.line(screen, color, md_p2, lt_p1, width)
        pygame.draw.line(screen, color, md_p4, lt_p2, width)
        pygame.draw.line(screen, color, dn_p1, dn_p2, width)
        pygame.draw.line(screen, color, lt_p1, lt_p2, width)

def shape_o(screen, color, width, pps, pvs):
    p1 = 270+pvs, 0+pps
    p2 = 300+pvs, 0+pps
    p3 = 330+pvs, 0+pps
    p4 = 270+pvs, 30+pps
    p6 = 330+pvs, 30+pps
    p7 = 270+pvs, 60+pps
    p8 = 300+pvs, 60+pps
    p9 = 330+pvs, 60+pps

    pygame.draw.line(screen, color, p1, p3, width)
    pygame.draw.line(screen, color, p4, p6, width)
    pygame.draw.line(screen, color, p7, p9, width)
    pygame.draw.line(screen, color, p1, p7, width)
    pygame.draw.line(screen, color, p2, p8, width)
    pygame.draw.line(screen, color, p3, p9, width)

def shape_i(screen, color, width, pps, tsnb, pvs):
    p1 = 240 + pvs, 0 + pps
    p2 = 270 + pvs, 0 + pps
    p3 = 300 + pvs, 0 + pps
    p4 = 330 + pvs, 0 + pps
    p5 = 360 + pvs, 0 + pps
    p6 = 240 + pvs, 30 + pps
    p7 = 270 + pvs, 30 + pps
    p8 = 300 + pvs, 30 + pps
    p9 = 330 + pvs, 30 + pps
    p10 = 360 + pvs, 30 + pps
    p11 = 270 + pvs, -30 + pps
    p12 = 300 + pvs, -30 + pps
    p13 = 270 + pvs, 60 + pps
    p14 = 300 + pvs, 60 + pps
    p15 = 270 + pvs, 90 + pps
    p16 = 300 + pvs, 90 + pps
    if tsnb == 0:
        pygame.draw.line(screen, color, p1, p6, width)
        pygame.draw.line(screen, color, p2, p7, width)
        pygame.draw.line(screen, color, p3, p8, width)
        pygame.draw.line(screen, color, p4, p9, width)
        pygame.draw.line(screen, color, p5, p10, width)
        pygame.draw.line(screen, color, p1, p5, width)
        pygame.draw.line(screen, color, p6, p10, width)
    elif tsnb == 1:
        pygame.draw.line(screen, color, p2, p3, width)
        pygame.draw.line(screen, color, p7, p8, width)
        pygame.draw.line(screen, color, p11, p12, width)
        pygame.draw.line(screen, color, p13, p14, width)
        pygame.draw.line(screen, color, p15, p16, width)
        pygame.draw.line(screen, color, p11, p15, width)
        pygame.draw.line(screen, color, p12, p16, width)
def shape_l(screen, color, width, pps, tsnb, pvs):
    up_p1 = 270 + pvs, -30 + pps
    up_p2 = 300 + pvs, -30 + pps
    up_p3 = 270 + pvs, 0 + pps
    up_p4 = 300 + pvs, 0 + pps
    lt_p1 = 240 + pvs, 30 + pps
    lt_p2 = 240 + pvs, 60 + pps
    lt_p3 = 270 + pvs, 30 + pps
    lt_p4 = 270 + pvs, 60 + pps
    rt_p1 = 360 + pvs, 0 + pps
    rt_p2 = 360 + pvs, 30 + pps
    rt_p3 = 330 + pvs, 0 + pps
    rt_p4 = 330 + pvs, 30 + pps
    dn_p1 = 300 + pvs, 90 + pps
    dn_p2 = 330 + pvs, 90 + pps
    dn_p3 = 300 + pvs, 60 + pps
    dn_p4 = 330 + pvs, 60 + pps
    if tsnb == 0:
        pygame.draw.line(screen, color, up_p3, rt_p1, width)
        pygame.draw.line(screen, color, lt_p3, rt_p2, width)
        pygame.draw.line(screen, color, up_p3, lt_p4, width)
        pygame.draw.line(screen, color, up_p4, dn_p3, width)
        pygame.draw.line(screen, color, lt_p4, dn_p3, width)
        pygame.draw.line(screen, color, rt_p1, rt_p2, width)
        pygame.draw.line(screen, color, rt_p3, rt_p4, width)
    elif tsnb == 1:
        pygame.draw.line(screen, color, up_p3, rt_p3, width)
        pygame.draw.line(screen, color, lt_p3, rt_p4, width)
        pygame.draw.line(screen, color, up_p4, dn_p1, width)
        pygame.draw.line(screen, color, rt_p3, dn_p2, width)
        pygame.draw.line(screen, color, up_p3, lt_p3, width)
        pygame.draw.line(screen, color, dn_p1, dn_p2, width)
        pygame.draw.line(screen, color, dn_p3, dn_p4, width)
    elif tsnb == 2:
        pygame.draw.line(screen, color, lt_p1, rt_p4, width)
        pygame.draw.line(screen, color, lt_p2, dn_p4, width)
        pygame.draw.line(screen, color, up_p4, dn_p3, width)
        pygame.draw.line(screen, color, rt_p3, dn_p4, width)
        pygame.draw.line(screen, color, up_p4, rt_p3, width)
        pygame.draw.line(screen, color, lt_p1, lt_p2, width)
        pygame.draw.line(screen, color, lt_p3, lt_p4, width)
    elif tsnb == 3:
        pygame.draw.line(screen, color, up_p1, lt_p4, width)
        pygame.draw.line(screen, color, up_p2, dn_p3, width)
        pygame.draw.line(screen, color, lt_p3, rt_p4, width)
        pygame.draw.line(screen, color, lt_p4, dn_p4, width)
        pygame.draw.line(screen, color, up_p1, up_p2, width)
        pygame.draw.line(screen, color, up_p3, up_p4, width)
        pygame.draw.line(screen, color, rt_p4, dn_p4, width)
def shape_j(screen, color, width, pps, tsnb, pvs):
    up_p1 = 300 + pvs, -30 + pps
    up_p2 = 330 + pvs, -30 + pps
    up_p3 = 300 + pvs, 0 + pps
    up_p4 = 330 + pvs, 0 + pps
    lt_p1 = 240 + pvs, 0 + pps
    lt_p2 = 240 + pvs, 30 + pps
    lt_p3 = 270 + pvs, 0 + pps
    lt_p4 = 270 + pvs, 30 + pps
    rt_p1 = 360 + pvs, 30 + pps
    rt_p2 = 360 + pvs, 60 + pps
    rt_p3 = 330 + pvs, 30 + pps
    rt_p4 = 330 + pvs, 60 + pps
    dn_p1 = 270 + pvs, 90 + pps
    dn_p2 = 300 + pvs, 90 + pps
    dn_p3 = 270 + pvs, 60 + pps
    dn_p4 = 300 + pvs, 60 + pps
    if tsnb == 0:
        pygame.draw.line(screen, color, up_p4, lt_p1, width)
        pygame.draw.line(screen, color, lt_p2, rt_p3, width)
        pygame.draw.line(screen, color, up_p4, rt_p4, width)
        pygame.draw.line(screen, color, up_p3, dn_p4, width)
        pygame.draw.line(screen, color, rt_p4, dn_p4, width)
        pygame.draw.line(screen, color, lt_p1, lt_p2, width)
        pygame.draw.line(screen, color, lt_p3, lt_p4, width)
    elif tsnb == 1:
        pygame.draw.line(screen, color, lt_p4, rt_p3, width)
        pygame.draw.line(screen, color, lt_p3, up_p4, width)
        pygame.draw.line(screen, color, lt_p3, dn_p1, width)
        pygame.draw.line(screen, color, up_p3, dn_p2, width)
        pygame.draw.line(screen, color, up_p4, rt_p3, width)
        pygame.draw.line(screen, color, dn_p1, dn_p2, width)
        pygame.draw.line(screen, color, dn_p3, dn_p4, width)
    elif tsnb == 2:
        pygame.draw.line(screen, color, rt_p1, lt_p4, width)
        pygame.draw.line(screen, color, rt_p2, dn_p3, width)
        pygame.draw.line(screen, color, lt_p3, dn_p3, width)
        pygame.draw.line(screen, color, up_p3, dn_p4, width)
        pygame.draw.line(screen, color, up_p3, lt_p3, width)
        pygame.draw.line(screen, color, rt_p1, rt_p2, width)
        pygame.draw.line(screen, color, rt_p3, rt_p4, width)
    elif tsnb == 3:
        pygame.draw.line(screen, color, up_p1, dn_p4, width)
        pygame.draw.line(screen, color, up_p2, rt_p4, width)
        pygame.draw.line(screen, color, rt_p3, lt_p4, width)
        pygame.draw.line(screen, color, rt_p4, dn_p3, width)
        pygame.draw.line(screen, color, up_p1, up_p2, width)
        pygame.draw.line(screen, color, up_p3, up_p4, width)
        pygame.draw.line(screen, color, lt_p4, dn_p3, width)
# def shape_z(screen, color, width, pps, tsnb, pvs):
# def shape_s(screen, color, width, pps, tsnb, pvs):

function1.py

def func(tsid, screen, color, width, pps, tsnb, pvs, recordblock):
    from storeblocks import storeblocks
    import random
    # new_entry = ({
    #     'tsid': tsid,
    #     'screen': screen,
    #     'color': color,
    #     'width': width,
    #     'pps': pps,
    #     'tsnb': tsnb,
    #     'pvs': pvs
    # })
    storeblocks(pvs, pps, tsid, tsnb, recordblock)
    # 去重列表
    recordblock = [list(item) for item in set(tuple(row) for row in recordblock)]
    print(f"打印方块列表已更新{recordblock}")

    pvs = pps = tsnb = 0
    tsid = random.randint(0, 6)
    return pvs, pps, tsnb, tsid, recordblock

storeblocks.py

def storeblocks(pvs, pps, tsid, tsnb, recordblock):
    if tsid == 0:
        if tsnb == 0:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 255, pps + 45]
            blockct4 = [pvs + 315, pps + 45]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 285, pps + 75]
            blockct4 = [pvs + 315, pps + 45]
        elif tsnb == 2:
            blockct1 = [pvs + 285, pps + 75]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 255, pps + 45]
            blockct4 = [pvs + 315, pps + 45]
        elif tsnb == 3:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 255, pps + 45]
            blockct4 = [pvs + 285, pps + 75]
    elif tsid == 1:
        blockct1 = [pvs + 315, pps + 15]
        blockct2 = [pvs + 315, pps + 45]
        blockct3 = [pvs + 285, pps + 15]
        blockct4 = [pvs + 285, pps + 45]
    elif tsid == 2:
        if tsnb == 0:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 255, pps + 15]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 345, pps + 15]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps - 15]
            blockct2 = [pvs + 285, pps + 15]
            blockct3 = [pvs + 285, pps + 45]
            blockct4 = [pvs + 285, pps + 75]
    elif tsid == 3:
        if tsnb == 0:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 345, pps + 15]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 315, pps + 15]
            blockct3 = [pvs + 315, pps + 45]
            blockct4 = [pvs + 315, pps + 75]
        elif tsnb == 2:
            blockct1 = [pvs + 315, pps + 15]
            blockct2 = [pvs + 315, pps + 45]
            blockct3 = [pvs + 285, pps + 45]
            blockct4 = [pvs + 255, pps + 45]
        elif tsnb == 3:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps - 15]
            blockct3 = [pvs + 285, pps + 45]
            blockct4 = [pvs + 315, pps + 45]
    elif tsid == 4:
        if tsnb == 0:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 255, pps + 15]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 315, pps + 45]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 315, pps + 15]
            blockct3 = [pvs + 285, pps + 45]
            blockct4 = [pvs + 285, pps + 75]
        elif tsnb == 2:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 315, pps + 45]
            blockct4 = [pvs + 345, pps + 45]
        elif tsnb == 3:
            blockct1 = [pvs + 285, pps + 45]
            blockct2 = [pvs + 315, pps + 45]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 315, pps - 15]
    elif tsid == 5:
        if tsnb == 0:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 255, pps + 15]
            blockct3 = [pvs + 285, pps + 45]
            blockct4 = [pvs + 315, pps + 45]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps + 45]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 315, pps - 15]
    elif tsid == 6:
        if tsnb == 0:
            blockct1 = [pvs + 315, pps + 15]
            blockct2 = [pvs + 345, pps + 15]
            blockct3 = [pvs + 315, pps + 45]
            blockct4 = [pvs + 285, pps + 45]
        elif tsnb == 1:
            blockct1 = [pvs + 285, pps + 15]
            blockct2 = [pvs + 285, pps - 15]
            blockct3 = [pvs + 315, pps + 15]
            blockct4 = [pvs + 315, pps + 45]

    recordblock.append(blockct1)
    recordblock.append(blockct2)
    recordblock.append(blockct3)
    recordblock.append(blockct4)
    return recordblock
# def storeblocks(pvs, pps, tsid, tsnb, recordblock):
#     if tsid == 0:
#         if tsnb == 0:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 255, pps + 30, pvs + 240, pps + 45, pvs + 270, pps + 45, pvs + 255, pps + 60]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 285, pps + 60, pvs + 270, pps + 75, pvs + 300, pps + 75, pvs + 285, pps + 90]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#         elif tsnb == 2:
#             b1 = [pvs + 285, pps + 60, pvs + 270, pps + 75, pvs + 300, pps + 75, pvs + 285, pps + 90]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 255, pps + 30, pvs + 240, pps + 45, pvs + 270, pps + 45, pvs + 255, pps + 60]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#         elif tsnb == 3:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 255, pps + 30, pvs + 240, pps + 45, pvs + 270, pps + 45, pvs + 255, pps + 60]
#             b4 = [pvs + 285, pps + 60, pvs + 270, pps + 75, pvs + 300, pps + 75, pvs + 285, pps + 90]
#     elif tsid == 1:
#         b1 = [pvs + 315, pps, pvs + 330, pps + 15, pvs + 300, pps + 15, pvs + 315, pps + 30]
#         b2 = [pvs + 315, pps + 30, pvs + 330, pps + 45, pvs + 300, pps + 45, pvs + 315, pps + 60]
#         b3 = [pvs + 285, pps, pvs + 300, pps + 15, pvs + 270, pps + 15, pvs + 285, pps + 30]
#         b4 = [pvs + 285, pps + 30, pvs + 300, pps + 45, pvs + 270, pps + 45, pvs + 285, pps + 60]
#     elif tsid == 2:
#         if tsnb == 0:
#             b1 = [pvs + 285, pps, pvs + 300, pps + 15, pvs + 270, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 255, pps, pvs + 270, pps + 15, pvs + 240, pps + 15, pvs + 255, pps + 30]
#             b3 = [pvs + 315, pps, pvs + 330, pps + 15, pvs + 300, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 345, pps, pvs + 360, pps + 15, pvs + 330, pps + 15, pvs + 345, pps + 30]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps - 30, pvs + 300, pps - 15, pvs + 270, pps - 15, pvs + 285, pps]
#             b2 = [pvs + 285, pps, pvs + 300, pps + 15, pvs + 270, pps + 15, pvs + 285, pps + 30]
#             b3 = [pvs + 285, pps + 30, pvs + 300, pps + 45, pvs + 270, pps + 45, pvs + 285, pps + 60]
#             b4 = [pvs + 285, pps + 60, pvs + 300, pps + 75, pvs + 270, pps + 75, pvs + 285, pps + 90]
#     elif tsid == 3:
#         if tsnb == 0:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 345, pps, pvs + 330, pps + 15, pvs + 360, pps + 15, pvs + 345, pps + 30]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b3 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#             b4 = [pvs + 315, pps + 60, pvs + 300, pps + 75, pvs + 330, pps + 75, pvs + 315, pps + 90]
#         elif tsnb == 2:
#             b1 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b2 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#             b3 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b4 = [pvs + 255, pps + 30, pvs + 240, pps + 45, pvs + 270, pps + 45, pvs + 255, pps + 60]
#         elif tsnb == 3:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps - 30, pvs + 270, pps - 15, pvs + 300, pps - 15, pvs + 285, pps]
#             b3 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#     elif tsid == 4:
#         if tsnb == 0:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 255, pps, pvs + 240, pps + 15, pvs + 270, pps + 15, pvs + 255, pps + 30]
#             b3 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b3 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b4 = [pvs + 285, pps + 60, pvs + 270, pps + 75, pvs + 300, pps + 75, pvs + 285, pps + 90]
#         elif tsnb == 2:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#             b4 = [pvs + 345, pps + 30, pvs + 330, pps + 45, pvs + 360, pps + 45, pvs + 345, pps + 60]
#         elif tsnb == 3:
#             b1 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b2 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#             b3 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 315, pps - 30, pvs + 300, pps - 15, pvs + 330, pps - 15, pvs + 315, pps]
#     elif tsid == 5:
#         if tsnb == 0:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 255, pps, pvs + 240, pps + 15, pvs + 270, pps + 15, pvs + 255, pps + 30]
#             b3 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#             b3 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 315, pps - 30, pvs + 300, pps - 15, pvs + 330, pps - 15, pvs + 315, pps]
#     elif tsid == 6:
#         if tsnb == 0:
#             b1 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b2 = [pvs + 345, pps, pvs + 330, pps + 15, pvs + 360, pps + 15, pvs + 345, pps + 30]
#             b3 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#             b4 = [pvs + 285, pps + 30, pvs + 270, pps + 45, pvs + 300, pps + 45, pvs + 285, pps + 60]
#         elif tsnb == 1:
#             b1 = [pvs + 285, pps, pvs + 270, pps + 15, pvs + 300, pps + 15, pvs + 285, pps + 30]
#             b2 = [pvs + 285, pps - 30, pvs + 270, pps - 15, pvs + 300, pps - 15, pvs + 285, pps]
#             b3 = [pvs + 315, pps, pvs + 300, pps + 15, pvs + 330, pps + 15, pvs + 315, pps + 30]
#             b4 = [pvs + 315, pps + 30, pvs + 300, pps + 45, pvs + 330, pps + 45, pvs + 315, pps + 60]
#
#     recordblock.append([b1, b2, b3, b4])
#     return recordblock

KeyBoard.py

# 定义键盘事件 K_UP, K_DOWN, K_LEFT, K_RIGHT, K_SPACE, QUIT
import pygame


def keyboard(tsid, tsnb, pps, pvs, events):
    import pygame
    from pygame import KEYDOWN, QUIT
    import sys
    import random
    for event in events:
        # if event.type in (QUIT, KEYDOWN) or event.type == KEYDOWN and event.key == K_SPACE:
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        # elif event.type == KEYDOWN and event.key == pygame.K_1 and action_flag == 0:
        elif event.type == KEYDOWN and event.key == pygame.K_UP:
            if tsid in (0, 3, 4):
                if (((tsid == 3 and tsnb == 0) or (tsid == 4 and tsnb == 3)) and pps >= 510) or \
                        (tsid == 0 and tsnb == 0 and pps >= 510):
                    break
                elif (tsid == 0 and ((tsnb == 3 and pvs > 270) or
                      (tsnb == 1 and pvs <= -270))) or \
                        (tsid == 3 and ((tsnb == 3 and pvs >= 240) or
                                             (tsnb == 1 and pvs <= -240))) or \
                        (tsid == 4 and ((tsnb == 1 and pvs >= 240) or
                                             (tsnb == 3 and pvs <= -240))):
                    break
                elif tsnb >= 3:
                    tsnb = 0
                else:
                    tsnb += 1
            elif tsid in (2, 5, 6):
                if tsid == 2 and tsnb == 0 and pps >= 480:
                    break
                elif (tsid == 2 and tsnb == 1 and
                      (pvs >= 240 or pvs <= -270)) or \
                        (tsid == 5 and tsnb == 1 and pvs <= -270) or \
                        (tsid == 6 and tsnb == 1 and pvs >= 270):
                    break
                elif tsnb >= 1:
                    tsnb = 0
                else:
                    tsnb += 1
        elif event.type == KEYDOWN and event.key == pygame.K_SPACE:
            pvs = pps = tsnb = 0
            tsid = random.randint(0, 6)
        elif event.type == KEYDOWN and event.key == pygame.K_LEFT:
            # -2 (tsid ==  and tsnb == ) or
            if pvs > -240 and \
                    ((tsid == 0 and tsnb in (0, 2, 3)) or
                     (tsid == 2 and tsnb == 0) or
                     (tsid == 3 and tsnb == 2) or
                     (tsid == 4 and tsnb == 0) or
                     (tsid == 5 and tsnb == 0)):
                pvs -= 30
            # -1
            elif pvs > -270 and \
                    ((tsid == 0 and tsnb == 1) or
                     (tsid == 1 and tsnb == 0) or
                     (tsid == 2 and tsnb == 1) or
                     (tsid == 3 and tsnb in (0, 1, 3)) or
                     (tsid == 4 and tsnb in (1, 2, 3)) or
                     (tsid == 5 and tsnb == 1) or
                     (tsid == 6 and tsnb in (0, 1))):
                pvs -= 30
            # 0
        elif event.type == KEYDOWN and event.key == pygame.K_RIGHT:
            # +2
            if pvs < 240 and \
                    ((tsid == 2 and tsnb == 0) or
                     (tsid == 3 and tsnb == 4) or
                     (tsid == 4 and tsnb == 2) or
                     (tsid == 6 and tsnb == 0)):
                pvs += 30
            # +1
            elif pvs < 270 and \
                    ((tsid == 0 and tsnb in (0, 1, 2)) or
                     (tsid == 1 and tsnb == 0) or
                     (tsid == 3 and tsnb in (1, 2, 3)) or
                     (tsid == 4 and tsnb in (0, 1, 3)) or
                     (tsid == 5 and tsnb in (0, 1)) or
                     (tsid == 6 and tsnb == 1)):
                pvs += 30
            # 0
            elif pvs < 300 and ((tsid == 2 and tsnb == 1) or (tsid == 0 and tsnb == 3)):
                pvs += 30
    return tsid, tsnb, pps, pvs,events

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值