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

Python控制臺(tái)輸出俄羅斯方塊移動(dòng)和旋轉(zhuǎn)功能

 更新時(shí)間:2021年04月18日 10:49:36   作者:to_upper  
這篇文章主要介紹了Python控制臺(tái)輸出俄羅斯方塊移動(dòng)和旋轉(zhuǎn)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

這兩天瀏覽量有點(diǎn)離譜,說(shuō)明一下,我沒有使用pygame,只是在控制臺(tái)可以打印、移動(dòng)和旋轉(zhuǎn)生成的俄羅斯方塊星號(hào)圖形

俄羅斯方塊-打印

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

# 盡可能吧俄羅斯方塊放在中間
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("請(qǐng)輸入俄羅斯方塊的形狀")
    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("請(qǐng)輸入圖形:")
    Model_Tetris.L_char(char)
    while True:
        num = int(input("請(qǐng)輸入移動(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)
廢話不多說(shuō),直接給出代碼:

#!/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("請(qǐng)輸入移動(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è)知識(shí)點(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])])   # 對(duì)應(yīng)坐標(biāo)添加到新的坐標(biāo)
    Tetris[char] = newTetris

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

相關(guān)文章

  • PyTorch中Tensor的維度變換實(shí)現(xiàn)

    PyTorch中Tensor的維度變換實(shí)現(xiàn)

    這篇文章主要介紹了PyTorch中Tensor的維度變換實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    這篇文章主要介紹了python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • python實(shí)現(xiàn)列表推導(dǎo)式與生成器

    python實(shí)現(xiàn)列表推導(dǎo)式與生成器

    列表推導(dǎo)式和生成器都是Python中處理集合的強(qiáng)大工具,列表推導(dǎo)式用于快速生成列表,而生成器表達(dá)式則提供了一種節(jié)約內(nèi)存的方式來(lái)處理大型數(shù)據(jù)集,下面就來(lái)介紹一下python實(shí)現(xiàn)列表推導(dǎo)式與生成器,感興趣的可以了解一下
    2024-09-09
  • conda下載各種包時(shí)如何避免版本不匹配問題

    conda下載各種包時(shí)如何避免版本不匹配問題

    在使用python和conda時(shí),由于Python版本不匹配,可能會(huì)導(dǎo)致一些問題的出現(xiàn),本文主要介紹了conda下載各種包時(shí)如何避免版本不匹配問題,感興趣的可以了解一下
    2024-03-03
  • 在Mac OS系統(tǒng)上安裝Python的Pillow庫(kù)的教程

    在Mac OS系統(tǒng)上安裝Python的Pillow庫(kù)的教程

    這篇文章主要介紹了在MacOS下安裝Python的Pillow庫(kù)的教程,Pillow庫(kù)用來(lái)對(duì)圖片進(jìn)行各種處理操作,需要的朋友可以參考下
    2015-11-11
  • python爬蟲之利用selenium+opencv識(shí)別滑動(dòng)驗(yàn)證并模擬登陸知乎功能

    python爬蟲之利用selenium+opencv識(shí)別滑動(dòng)驗(yàn)證并模擬登陸知乎功能

    本文給大家介紹python爬蟲之利用selenium+opencv識(shí)別滑動(dòng)驗(yàn)證并模擬登陸知乎功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • pyqt5-tools安裝失敗的詳細(xì)處理方法

    pyqt5-tools安裝失敗的詳細(xì)處理方法

    最近在工作中遇到一個(gè)問題,python?pyqt5在安裝的時(shí)候居然提示失敗了,無(wú)奈只能找解決的辦法,這篇文章主要給大家介紹了關(guān)于pyqt5-tools安裝失敗的詳細(xì)處理方法,需要的朋友可以參考下
    2022-05-05
  • pandas中數(shù)據(jù)的排序與排名的具體使用

    pandas中數(shù)據(jù)的排序與排名的具體使用

    Pandas對(duì)數(shù)據(jù)進(jìn)行排序和排名是非常常見的操作,本文主要介紹了pandas中數(shù)據(jù)的排序與排名的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Python網(wǎng)頁(yè)解析器使用實(shí)例詳解

    Python網(wǎng)頁(yè)解析器使用實(shí)例詳解

    這篇文章主要介紹了Python網(wǎng)頁(yè)解析器使用實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)將圖片批量轉(zhuǎn)為PDF

    Python實(shí)現(xiàn)將圖片批量轉(zhuǎn)為PDF

    在日常辦公和處理圖片時(shí),我們常常需要將多張圖片合并成一個(gè)PDF文件,所以本文為大家介紹了如何使用Python實(shí)現(xiàn)圖片批量轉(zhuǎn)為PDF,感興趣的可以了解下
    2024-12-12

最新評(píng)論

渝中区| 聊城市| 会东县| 崇阳县| 罗甸县| 罗江县| 石嘴山市| 河南省| 万宁市| 抚松县| 商都县| 曲麻莱县| 邢台市| 大化| 淳安县| 五峰| 土默特左旗| 横山县| 五峰| 伊春市| 丰顺县| 苗栗县| 治多县| 唐海县| 集安市| 长泰县| 民县| 红安县| 桐柏县| 昌邑市| 武宣县| 仙桃市| 福建省| 金阳县| 华安县| 呼伦贝尔市| 上饶县| 宿迁市| 巧家县| 阳东县| 汉川市|