俄罗斯方块(2)

  import?pygame

  from?pygame?import?locals

  import?random

  pygame.init()

  score=0

  grid_size=20

  grid_num_width=15

  grid_num_height=25

  FPS=30

  count=0

  screen=pygame.display.set_mode((460,500))

  pygame.display.set_caption("俄罗斯方块")

  clock=pygame.time.Clock()

  bacground=pygame.image.load("bg.png")

  font=pygame.font.Font("STKAITI.TTF",60)

  O=[[(0,0),(0,1),(1,0),(1,1)]]

  I=[[(0,-1),(0,0),(0,1),(0,2)],[(-1,0),(0,0),(1,0),(2,0)]]

  Z=[[(0,-1),(0,0),(1,0),(1,1)],[(-1,0),(0,0),(0,-1),(1,-1)]]

  S=[[(-1,0),(0,0),(0,1),(1,1)],[(1,-1),(1,0),(0,0),(0,1)]]

  T=[[(0,-1),(0,0),(0,1),(-1,0)],[(-1,0),(0,0),(1,0),(0,1)],[(0,-1),(0,0),(0,1),(1,0)],[(-1,0),(0,0),(1,0),(0,-1)]]

  J=[[(-1,0),(0,0),(1,0),(1,-1)],[(0,-1),(0,0),(0,1),(-1,-1)],[(-1,0),(0,0),(1,0),(-1,1)],[(0,-1),(0,0),(0,1),(1,1)]]

  L=[[(-1,0),(0,0),(1,0),(1,1)],[(0,-1),(0,0),(0,1),(1,-1)],[(-1,0),(0,0),(1,0),(-1,-1)],[(0,-1),(0,0),(0,1),(-1,1)]]

  shape_list=[I,J,L,O,S,T,Z]

  cube_colors=[(204,153,153),(102,102,153),(153,0,102),(255,204,0),(204,0,51),(255,0,51),(0,102,153),(153,0,51),(204,255,102),(255,153,0)]

  center=[2,8]

  shape=random.choice(shape_list)

  index=random.randint(0,len(shape)-1)

  current_shape=shape[index]

  color=random.choice(cube_colors)

  def?check(center):

  for?cube?in?current_shape:

  cube=(cube[0]+center[0],cube[1]+center[1])

  if?cube[0]<1?or?cube[1]<?1?or?cube[0]?>?grid_num_height?or?cube[1]?>?grid_num_width:

  return?False

  while?True:

  for?event?in?pygame.event.get():

  if?event.type==locals.QUIT:

  exit()

  if?event.type==locals.KEYDOWN:

  if?event.key==locals.K_RIGHT:

  center[1]=center[1]+1

  if?check(center)==False:

  center[1]=center[1]-1

  elif?event.key==locals.K_LEFT:

  center[1]=center[1]-1

  if?check(center)==False:

  center[1]=center[1]+1

  elif?event.key==locals.K_DOWN:

  center[0]=center[0]+1

  if?check(center)==False:

  center[0]=center[0]-1

  elif?event.key==locals.K_UP:

  old_index=index

  index?+=1

  if?index?>=?len(shape):

  index=0

  current_shape=shape[index]

  if?check(center)==False:

  index=old_index

  current_shape=shape[index]

  count+=1

  if?count?%?FPS?==?0:

  center[0]=center[0]+1

  if?check(center)==False:

  center[0]=center[0]-1

  screen.blit(bacground,(0,0))

  current_pos=[]

  for?cube?in?current_shape:

  pos=(cube[0]+center[0],cube[1]+center[1])

  current_pos.append(pos)

  for?cube?in?current_pos:

  pygame.draw.rect(screen,color,(cube[1]*20-20,cube[0]*20-20,20,20),0)

  pygame.draw.rect(screen,(255,255,255),(cube[1]*20-20,cube[0]*20-20,20,20),1)

  my_font=pygame.font.Font("STKAITI.TTF",18)

  score_text=font.render(str(score),True,(0,0,0))

  screen.blit(score_text,(350,70))

  pygame.display.update()

  clock.tick(FPS)