俄罗斯方块(1)

栏目:游戏资讯  时间:2022-11-10
手机版

  import?pygame

  import?random

  from?pygame?import?locals

  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()

  background?=?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)]]

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

  cube_color=[(204,133,153),(102,102,153),(204,133,153),(153,0,102),(225,204,0),(204,0,51),(255,0,51),(0,102,153),(153,0,51),(255,153,0)]

  center?=?[2,8]

  shape=random.choice(shapel)

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

  currentp?=?shape[index]

  color=random.choice(cube_color)

  def?check(center):

  for?cube?in?currentp:

  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

  currentp=shape[index]

  if?check(center)==False:

  index=old_index

  currentp=shape[index]

  count+=1

  if?count?%?FPS==0:

  center[0]=center[0]+1

  if?check(center)==False:

  center[0]=center[0]-1

  screen.blit(background,(0,0))

  currentps=[]

  for?cube?in?currentp:

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

  currentps.append(pos)

  for?cube?in?currentps:

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

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

  my_fout=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)#刷新画面

上一篇:我的世界1.12.2安卓手机版 1.12.2 安卓版游戏不容错过[无下载]好玩的
下一篇:《王者荣耀》,七年之痒了吗?