溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用Python怎么控制臺輸出一個(gè)俄羅斯方塊

發(fā)布時(shí)間:2021-04-17 15:35:28 來源:億速云 閱讀:171 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章給大家介紹使用Python怎么控制臺輸出一個(gè)俄羅斯方塊,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

俄羅斯方塊-打印

功能:輸入字母,打印俄羅斯方塊的*圖形

# 盡可能吧俄羅斯方塊放在中間
Tetris = {'L': [[1, 1], [1, 2], [1, 3], [2, 3]],
         'O': [[1, 1], [2, 1], [1, 2], [2, 2]],
         'J': [[2, 1], [2, 2], [1, 3], [2, 3]],
         'Z': [[1, 1], [2, 1], [2, 2], [3, 2]],
         'S': [[1, 1], [1, 2], [2, 2], [2, 3]],
         'I': [[1, 1], [1, 2], [1, 3], [1, 4]],
         'T': [[1, 1], [2, 1], [2, 2], [3, 1]]}
print(Tetris)

while True:
    figure = input("請輸入俄羅斯方塊的形狀")
    flag = 0
    for i in range(0, 5):
        for j in range(0, 4):
            for li in range(0, len(Tetris[figure])):    # Tetris['L']
                if j == Tetris[figure][li][0] and i == Tetris[figure][li][1]:
                    flag = 1
            if flag == 1:
                print("*", end='')
            else:
                print(" ", end='')
            flag = 0
        print()

俄羅斯方塊-移動(dòng)

這一版使用了函數(shù)+字典

功能:輸入字母,打印俄羅斯方塊的*圖形,輸入468可以移動(dòng)

# 文件名稱:Model-Tetris.PY
# 開發(fā)工具:PyCharm

Tetris = {'L': [[1, 1], [1, 2], [1, 3], [2, 3]],
         'O': [[1, 1], [2, 1], [1, 2], [2, 2]],
         'J': [[2, 1], [2, 2], [1, 3], [2, 3]],
         'Z': [[1, 1], [2, 1], [2, 2], [3, 2]],
         'S': [[1, 1], [1, 2], [2, 2], [2, 3]],
         'I': [[1, 1], [1, 2], [1, 3], [1, 4]],
         'T': [[1, 1], [2, 1], [2, 2], [3, 1]]}

def L_char(char):
    flag = 0
    for i in range(0, 7):
        for j in range(0, 7):
            for li in range(0, len(Tetris[char])):  # Tetris['L']
                if j == Tetris[char][li][0] and i == Tetris[char][li][1]:
                    flag = 1
            if flag == 1:
                print("*", end='')
            else:
                print(" ", end='')
            flag = 0
        print()

def move(char, num):
    if num == 2:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][1] += 1
    if num == 4:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][0] -= 1
    if num == 6:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][0] += 1
    if num == 8:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][1] -= 1
# 文件名稱:Test-Tetris.PY
# 開發(fā)工具:PyCharm   
from Day05 import Model_Tetris
if __name__ == '__main__':
    char = input("請輸入圖形:")
    Model_Tetris.L_char(char)
    while True:
        num = int(input("請輸入移動(dòng)代碼2/4/6/8:"))
        if num == 8 or num == 2 or num == 4 or num == 6:
            Model_Tetris.move(char, num)
            Model_Tetris.L_char(char)
        else:
            break

俄羅斯方塊-旋轉(zhuǎn)

主要思想:預(yù)定義4X4的坐標(biāo)轉(zhuǎn)換,旋轉(zhuǎn)式查找字典中的轉(zhuǎn)換坐標(biāo),進(jìn)行相應(yīng)的替換

功能:輸入字母,打印俄羅斯方塊的*圖形,輸入468可以移動(dòng),輸入5可以旋轉(zhuǎn)

廢話不多說,直接給出代碼:

#!/usr/bin/python
# _*_coding:utf-8_*_
# 開發(fā)人員:zys
# 開發(fā)時(shí)間:2021/4/16 16:50 
# 文件名稱:Test-Tetris.PY
# 開發(fā)工具:PyCharm   
import random

from Day06.test1 import Model_Tetris
if __name__ == '__main__':
    # 隨機(jī)生成方法
    # Character = "LOJSZIT"
    # char = random.choice(Character)

    char = "L"
    Model_Tetris.L_char(char)
    while True:
        num = int(input("請輸入移動(dòng)代碼4/5/6/8:")) # 5是旋轉(zhuǎn)
        if num == 8 or num == 4 or num == 6:
            Model_Tetris.move(char, num)
            Model_Tetris.L_char(char)
        elif num == 5:
            Model_Tetris.revolve(char)
            Model_Tetris.L_char(char)
        else:
            break
#!/usr/bin/python
# _*_coding:utf-8_*_
# 開發(fā)人員:zys
# 開發(fā)時(shí)間:2021/4/16 16:36 
# 文件名稱:Model-Tetris.PY
# 開發(fā)工具:PyCharm

Tetris = {'L': [[1, 1], [1, 2], [1, 3], [2, 3]],
         'O': [[1, 1], [1, 2], [2, 1], [2, 2]],
         'J': [[1, 2], [2, 2], [3, 1], [3, 2]],
         'Z': [[1, 1], [1, 2], [2, 2], [2, 3]],
         'S': [[1, 1], [2, 1], [2, 2], [3, 2]],
         'I': [[1, 1], [2, 1], [3, 1], [4, 1]],
         'T': [[1, 1], [1, 2], [2, 2], [1, 3]]}
# 4*4旋轉(zhuǎn)
'''這里補(bǔ)充一個(gè)知識點(diǎn):
    字典中的key是不可變的,所以不能用list作為字典的key,
    因?yàn)閘ist可以修改,這里采用了元組作為key,指明不可改變,
    后面地址查值的時(shí)候需要進(jìn)行類型轉(zhuǎn)換。'''
rotateDict = {(1, 1): [4, 1], (1, 2): [3, 1], (1, 3): [2, 1], (1, 4): [1, 1],
              (2, 1): [4, 2], (3, 1): [4, 3], (4, 1): [4, 4], (4, 2): [3, 4],
              (4, 3): [2, 4], (4, 4): [1, 4], (3, 4): [1, 3], (2, 4): [1, 2],
              (2, 2): [3, 2], (3, 2): [3, 3], (3, 3): [2, 3], (2, 3): [2, 2]}

def L_char(char):
    flag = 0
    for i in range(0, 5):
        for j in range(0, 5):
            for li in range(0, len(Tetris[char])):  # Tetris['L']
                if j == Tetris[char][li][0] and i == Tetris[char][li][1]:
                    flag = 1
            if flag == 1:
                print("*", end='')
            else:
                print(" ", end='')
            flag = 0
        print()

def move(char, num):
    if num == 2:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][1] += 1
    if num == 4:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][0] -= 1
    if num == 6:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][0] += 1
    if num == 8:
        for li in range(0, len(Tetris[char])):
            Tetris[char][li][1] -= 1


def revolve(char):
    newTetris = []  # 新的list
    for i in range(len(Tetris[char])):
        newTetris.append(rotateDict[tuple(Tetris[char][i])])   # 對應(yīng)坐標(biāo)添加到新的坐標(biāo)
    Tetris[char] = newTetris

關(guān)于使用Python怎么控制臺輸出一個(gè)俄羅斯方塊就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI