最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python控制臺輸出俄羅斯方塊的方法實例

 更新時間:2021年04月17日 14:32:06   作者:to_upper  
這篇文章主要給大家介紹了關(guān)于Python控制臺輸出俄羅斯方塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天填一個坑,俄羅斯方塊!!

俄羅斯方塊的移動不難實現(xiàn),但是旋轉(zhuǎn)就不太容易實現(xiàn),究其原因是因為Python中沒有數(shù)組這種數(shù)據(jù)結(jié)構(gòu),所以不能用矩陣的公式。今天把旋轉(zhuǎn)做出來了,剛好整理一下,把之前的都整合在一起

俄羅斯方塊-打印

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

# 盡可能吧俄羅斯方塊放在中間
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()

俄羅斯方塊-移動

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

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

# 文件名稱: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("請輸入移動代碼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的坐標轉(zhuǎn)換,旋轉(zhuǎn)式查找字典中的轉(zhuǎn)換坐標,進行相應(yīng)的替換

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

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

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

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

    char = "L"
    Model_Tetris.L_char(char)
    while True:
        num = int(input("請輸入移動代碼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ā)時間: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)
'''這里補充一個知識點:
    字典中的key是不可變的,所以不能用list作為字典的key,
    因為list可以修改,這里采用了元組作為key,指明不可改變,
    后面地址查值的時候需要進行類型轉(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)坐標添加到新的坐標
    Tetris[char] = newTetris

總結(jié)

到此這篇關(guān)于Python控制臺輸出俄羅斯方塊的文章就介紹到這了,更多相關(guān)Python輸出俄羅斯方塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytorch-神經(jīng)網(wǎng)絡(luò)擬合曲線實例

    pytorch-神經(jīng)網(wǎng)絡(luò)擬合曲線實例

    今天小編就為大家分享一篇pytorch-神經(jīng)網(wǎng)絡(luò)擬合曲線實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中Playwright?與?pyunit?結(jié)合使用詳解

    Python中Playwright?與?pyunit?結(jié)合使用詳解

    這篇文章主要介紹了Python中Playwright?與?pyunit?結(jié)合使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python實現(xiàn)12種降維算法的示例代碼

    Python實現(xiàn)12種降維算法的示例代碼

    數(shù)據(jù)降維算法是機器學(xué)習(xí)算法中的大家族,與分類、回歸、聚類等算法不同,它的目標是將向量投影到低維空間,以達到某種目的如可視化,或是做分類。本文將利用Python實現(xiàn)12種降維算法,需要的可以參考一下
    2022-04-04
  • Python 實現(xiàn)靜態(tài)鏈表案例詳解

    Python 實現(xiàn)靜態(tài)鏈表案例詳解

    這篇文章主要介紹了Python 實現(xiàn)靜態(tài)鏈表案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • pandas探索你的數(shù)據(jù)實現(xiàn)可視化示例詳解

    pandas探索你的數(shù)據(jù)實現(xiàn)可視化示例詳解

    這篇文章主要為大家介紹了pandas探索你的數(shù)據(jù)實現(xiàn)可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • python列表嵌套引發(fā)的問題總結(jié)

    python列表嵌套引發(fā)的問題總結(jié)

    這篇文章主要介紹了python列表嵌套引發(fā)的問題總結(jié),下面問文章引發(fā)問題來自日常工作總結(jié),具有一定的參考價值需要的小伙伴可以參考一下
    2022-05-05
  • Pytorch中膨脹卷積的用法詳解

    Pytorch中膨脹卷積的用法詳解

    今天小編就為大家分享一篇Pytorch中膨脹卷積的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python3中函數(shù)參數(shù)傳遞方式實例詳解

    Python3中函數(shù)參數(shù)傳遞方式實例詳解

    這篇文章主要介紹了Python3中函數(shù)參數(shù)傳遞方式,結(jié)合實例形式較為詳細的分析了Python3中函數(shù)參數(shù)傳遞的常見操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python實現(xiàn)對照片中的人臉進行顏值預(yù)測

    Python實現(xiàn)對照片中的人臉進行顏值預(yù)測

    今天給大家?guī)淼氖顷P(guān)于Python實戰(zhàn)的相關(guān)知識,文章圍繞如何用Python實現(xiàn)對照片中的人臉進行顏值預(yù)測展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python使用梯度下降算法實現(xiàn)一個多線性回歸

    python使用梯度下降算法實現(xiàn)一個多線性回歸

    這篇文章主要為大家詳細介紹了python使用梯度下降算法實現(xiàn)一個多線性回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

宁都县| 西畴县| 古交市| 西昌市| 湾仔区| 濉溪县| 延庆县| 金塔县| 剑川县| 靖安县| 女性| 烟台市| 信丰县| 淮北市| 高尔夫| 连云港市| 阳春市| 渑池县| 临猗县| 盐山县| 山阳县| 阿拉善右旗| 邵武市| 永川市| 鹤峰县| 汾西县| 柳江县| 杭锦后旗| 桦川县| 仁怀市| 苏尼特左旗| 祁连县| 闸北区| 贵阳市| 台湾省| 定兴县| 瑞金市| 华池县| 乌兰县| 体育| 桦川县|