python实现简单俄罗斯方块游戏

本文实例为大家分享了python实现简单俄罗斯方块游戏的具体代码,供大家参考,具体内容如下

import pygame,sys,random,timeall_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 = 0score = [0]gameover = [] press = Falsepygame.init()screen = pygame.display.set_mode((250,500))title = pygame.display.set_caption("俄罗斯方块")#下落、位置、数组检测、得分、屏幕信息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_dropcolumn+=x_moveif background[row][column]==1:break else:block_initial_position.clear()block_initial_position.extend([y_drop,x_move])returny_drop,x_move=block_initial_positionfor row,column in select_block:background[y_drop+row][x_move+column]=1complete_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_positionfor row,column in select_block:row+=y_dropcolumn+=x_moveif background[row][column]:gameover.append(1)#方块设置、变化、背景改变def new_draw():y_drop,x_move=block_initial_positionfor row,column in select_block:row+=y_dropcolumn+=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))#方块的移动,防止出界,碰撞def move_left_right(n):y_drop,x_move=block_initial_position x_move+=nfor row,column in select_block:row+=y_dropcolumn+=x_moveif column<0 or column>9 or background[row][column]:breakelse:block_initial_position.clear()block_initial_position.extend([y_drop,x_move])#旋转,位置都进行变化def rotate():y_drop,x_move=block_initial_positionrotating_position=[(-column,row)for row,column in select_block]for row,column in rotating_position:row+=y_dropcolumn+=x_moveif column<0 or column>9 or background[row][column]:breakelse: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=Trueelif event.type==pygame.KEYUP and event.key==pygame.K_DOWN:press=Falseif press:times+=10if times>=50:block_move_down()times=0else:times+=1if gameover:sys.exit()new_draw()pygame.time.Clock().tick(200)pygame.display.flip()

效果:
【python实现简单俄罗斯方块游戏】python实现简单俄罗斯方块游戏
文章图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读