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

python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊游戲

 更新時(shí)間:2022年01月16日 07:27:08   作者:大學(xué)生編程地  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊游戲的具體代碼,供大家參考,具體內(nèi)容如下

import pygame,sys,random,time

all_block = [[[0,0],[0,-1],[0,1],[0,2]],
? ? ? ? [[0,0],[0,1],[1,1],[1,0]],
? ? ? ? [[0,0],[0,-1],[-1,0],[-1,1]],?
? ? ? ? [[0,0],[0,1],[-1,-1],[-1,0]], ?
? ? ? ? [[0,0],[0,1],[1,0],[0,-1]],?
? ? ? ? [[0,0],[1,0],[-1,0],[1,-1]],
? ? ? ? [[0,0],[1,0],[-1,0],[1,1]]]?
background = [[0 for column in range(0,10)] for row in range(0,22)]
background[0] = [1 for column in range(0,10)]

select_block = list(random.choice(all_block))
block_initial_position = [21,5]?
times = 0
score = [0] ?
gameover = []?
press = False

pygame.init()
screen = pygame.display.set_mode((250,500))
title = pygame.display.set_caption("俄羅斯方塊")

#下落、位置、數(shù)組檢測(cè)、得分、屏幕信息
def block_move_down():
? ? y_drop=block_initial_position[0]?
? ? x_move=block_initial_position[1]
? ? y_drop-=1?

? ? for row,column in select_block:
? ? ? ? row+=y_drop
? ? ? ? column+=x_move

? ? ? ? if background[row][column]==1:
? ? ? ? ? ? break?
? ? else:
? ? ? ? block_initial_position.clear()
? ? ? ? block_initial_position.extend([y_drop,x_move])
? ? ? ? return

? ? y_drop,x_move=block_initial_position

? ? for row,column in select_block:
? ? ? ? background[y_drop+row][x_move+column]=1

? ? complete_row=[]?

? ? for row in range(1,21):
? ? ? ? if 0 not in background[row]:
? ? ? ? ? ? complete_row.append(row)

? ? complete_row.sort(reverse=True)

? ? for row in complete_row:
? ? ? ? background.pop(row)
? ? ? ? background.append([0 for column in range(0,10)])

? ? score[0]+=len(complete_row)
? ? pygame.display.set_caption(str(score[0])+'分')

? ? select_block.clear() ?
? ? select_block.extend(list(random.choice(all_block)))?
? ? block_initial_position.clear() ?
? ? block_initial_position.extend([20,5])
? ? y_drop,x_move=block_initial_position

? ? for row,column in select_block:
? ? ? ? row+=y_drop
? ? ? ? column+=x_move
? ? ? ? if background[row][column]:
? ? ? ? ? ? gameover.append(1)

#方塊設(shè)置、變化、背景改變
def new_draw():
? ? y_drop,x_move=block_initial_position
? ? for row,column in select_block:
? ? ? ? row+=y_drop
? ? ? ? column+=x_move?
? ? ? ? pygame.draw.rect(screen,(255,165,0),(column*25,500-row*25,23,23))

? ? for row in range(0,20):
? ? ? ? for column in range(0,10):
? ? ? ? ? ? bottom_block=background[row][column]
? ? ? ? ? ? if bottom_block:
? ? ? ? ? ? ? ? pygame.draw.rect(screen,(0,0,255),(column*25,500-row*25,23,23))

#方塊的移動(dòng),防止出界,碰撞
def move_left_right(n):
? ? y_drop,x_move=block_initial_position?
? ? x_move+=n
? ? for row,column in select_block:
? ? ? ? row+=y_drop
? ? ? ? column+=x_move
? ? ? ? if column<0 or column>9 or background[row][column]:
? ? ? ? ? ? break
? ? else:
? ? ? ? block_initial_position.clear()
? ? ? ? block_initial_position.extend([y_drop,x_move])


#旋轉(zhuǎn),位置都進(jìn)行變化
def rotate():
? ? y_drop,x_move=block_initial_position
? ? rotating_position=[(-column,row)for row,column in select_block]

? ? for row,column in rotating_position:
? ? ? ? row+=y_drop
? ? ? ? column+=x_move
? ? ? ? if column<0 or column>9 or background[row][column]:
? ? ? ? ? ? break
? ? else:
? ? ? ? select_block.clear()
? ? ? ? select_block.extend(rotating_position)

while True:
? ? screen.fill((255,255,255))
? ? for event in pygame.event.get():
? ? ? ? if event.type==pygame.QUIT:
? ? ? ? ? ? sys.exit()
? ? ? ? elif event.type==pygame.KEYDOWN and event.key==pygame.K_LEFT:
? ? ? ? ? ? move_left_right(-1)
? ? ? ? elif event.type==pygame.KEYDOWN and event.key==pygame.K_RIGHT:
? ? ? ? ? ? move_left_right(1)
? ? ? ? elif event.type==pygame.KEYDOWN and event.key==pygame.K_UP:
? ? ? ? ? ? rotate()
? ? ? ? elif event.type==pygame.KEYDOWN and event.key==pygame.K_DOWN:
? ? ? ? ? ? press=True
? ? ? ? elif event.type==pygame.KEYUP and event.key==pygame.K_DOWN:
? ? ? ? ? ? press=False

? ? if press:
? ? ? ? times+=10

? ? if times>=50:
? ? ? ? block_move_down()
? ? ? ? times=0
? ? else:
? ? ? ? times+=1

? ? if gameover:
? ? ? ? sys.exit()

? ? new_draw()
? ? pygame.time.Clock().tick(200)
? ? pygame.display.flip()

效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決Python中回文數(shù)和質(zhì)數(shù)的問(wèn)題

    解決Python中回文數(shù)和質(zhì)數(shù)的問(wèn)題

    今天小編就為大家分享一篇解決Python中回文數(shù)和質(zhì)數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python獲取當(dāng)前時(shí)間日期的方法總結(jié)

    Python獲取當(dāng)前時(shí)間日期的方法總結(jié)

    在Python編程中,獲取當(dāng)前的日期和時(shí)間是一個(gè)常見(jiàn)的需求,它在許多應(yīng)用中都有重要作用,本文為大家詳細(xì)整理了一些Python中的常用方法,希望對(duì)大家有所幫助
    2024-01-01
  • 基于Django統(tǒng)計(jì)博客文章閱讀量

    基于Django統(tǒng)計(jì)博客文章閱讀量

    這篇文章主要介紹了基于Django統(tǒng)計(jì)博客文章閱讀量,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài)的問(wèn)題小結(jié)

    python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài)的問(wèn)題小結(jié)

    這篇文章主要介紹了python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài),由于工具是pyqt寫(xiě)的所以牽扯到用python鏈接linux的問(wèn)題,這里記錄一下一些碰到的問(wèn)題,需要的朋友可以參考下
    2022-11-11
  • Python將主機(jī)名轉(zhuǎn)換為IP地址的方法

    Python將主機(jī)名轉(zhuǎn)換為IP地址的方法

    今天小編就為大家分享一篇Python將主機(jī)名轉(zhuǎn)換為IP地址的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python中def()函數(shù)的實(shí)戰(zhàn)練習(xí)題

    Python中def()函數(shù)的實(shí)戰(zhàn)練習(xí)題

    def是define的縮寫(xiě),用來(lái)自定義函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中def()函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 利用python查看官方文檔

    利用python查看官方文檔

    這篇文章主要介紹了利用python查看官方文檔,我們?cè)趯W(xué)習(xí)和工作中,總是會(huì)遇到一些問(wèn)題,或許官方文檔能解決這一問(wèn)題,下面我們就來(lái)看看python如何查看官方文檔吧
    2022-01-01
  • python內(nèi)置數(shù)據(jù)類(lèi)型之列表操作

    python內(nèi)置數(shù)據(jù)類(lèi)型之列表操作

    數(shù)據(jù)類(lèi)型是一種值的集合以及定義在這種值上的一組操作。這篇文章主要介紹了python內(nèi)置數(shù)據(jù)類(lèi)型之列表的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 詳解如何在PyCharm控制臺(tái)中輸出彩色文字和背景

    詳解如何在PyCharm控制臺(tái)中輸出彩色文字和背景

    這篇文章主要介紹了詳解如何在PyCharm控制臺(tái)中輸出彩色文字和背景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python:批量統(tǒng)計(jì)xml中各類(lèi)目標(biāo)的數(shù)量案例

    python:批量統(tǒng)計(jì)xml中各類(lèi)目標(biāo)的數(shù)量案例

    這篇文章主要介紹了python:批量統(tǒng)計(jì)xml中各類(lèi)目標(biāo)的數(shù)量案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03

最新評(píng)論

聂荣县| 镇坪县| 潮州市| 阜城县| 建阳市| 泸水县| 凌源市| 霍州市| 凉城县| 乳山市| 久治县| 庆安县| 巴林右旗| 会理县| 鄂伦春自治旗| 双流县| 宜宾市| 根河市| 婺源县| 沁源县| 东海县| 舟山市| 荣昌县| 红桥区| 汉源县| 左权县| 临沂市| 佛坪县| 长宁区| 云霄县| 平顶山市| 连平县| 巴林左旗| 金堂县| 东宁县| 金湖县| 秀山| 江川县| 仁怀市| 成都市| 东至县|