欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

俄羅斯方塊的移動不難實現(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)

主要思想:預定義4X4的坐標轉(zhuǎn)換,旋轉(zhuǎn)式查找字典中的轉(zhuǎn)換坐標,進行相應的替換

功能:輸入字母,打印俄羅斯方塊的*圖形,輸入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])])   # 對應坐標添加到新的坐標
    Tetris[char] = newTetris

總結(jié)

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

相關文章

  • 好的Python培訓機構(gòu)應該具備哪些條件

    好的Python培訓機構(gòu)應該具備哪些條件

    python是現(xiàn)在開發(fā)的熱潮,大家應該如何學習呢?許多人選擇自學,還有人會選擇去培訓結(jié)構(gòu)學習,那么好的培訓機構(gòu)的標準是什么樣的呢?下面跟隨腳本之家小編一起通過本文學習吧
    2018-05-05
  • python用700行代碼實現(xiàn)http客戶端

    python用700行代碼實現(xiàn)http客戶端

    這篇文章主要介紹了python用700行代碼實現(xiàn)http客戶端的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python?Pandas讀取csv/tsv文件(read_csv,read_table)的區(qū)別

    Python?Pandas讀取csv/tsv文件(read_csv,read_table)的區(qū)別

    這篇文章主要給大家介紹了關于Python?Pandas讀取csv/tsv文件(read_csv,read_table)區(qū)別的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用Pandas具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • python 五子棋如何獲得鼠標點擊坐標

    python 五子棋如何獲得鼠標點擊坐標

    這篇文章主要介紹了python 五子棋如何獲得鼠標點擊坐標,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python實現(xiàn)注冊登錄功能

    Python實現(xiàn)注冊登錄功能

    這篇文章主要為大家詳細介紹了Python實現(xiàn)注冊登錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python如何可視化經(jīng)緯度信息

    python如何可視化經(jīng)緯度信息

    在Python中處理經(jīng)緯度信息,首先通過篩選得到符合條件的停車點,并去除重復數(shù)據(jù),利用這些數(shù)據(jù)點的索引值將原始數(shù)據(jù)進行分段,并繪制地圖,處理重復數(shù)據(jù)時可以使用set()方法或列表生成式,最后,可以通過DataFrame的join方法合并具有相同索引值的數(shù)據(jù)
    2024-09-09
  • Python中的字符串判斷

    Python中的字符串判斷

    本文通過實例代碼介紹了Python中的字符串判斷,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • Pycharm編輯器功能之代碼折疊效果的實現(xiàn)代碼

    Pycharm編輯器功能之代碼折疊效果的實現(xiàn)代碼

    這篇文章主要介紹了Pycharm編輯器功能之代碼折疊效果的實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Python實現(xiàn)給PDF添加水印的方法

    Python實現(xiàn)給PDF添加水印的方法

    這篇文章主要介紹了Python實現(xiàn)給PDF添加水印的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python try 異常處理(史上最全)

    python try 異常處理(史上最全)

    為了處理異常,我們使用try...except,這篇文章主要介紹了python try 異常處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論