Giới thiệu sản phẩm
import pygameimport randomcolors = [(0,0,0), (120,37,179), (100,179,179), (80,34,22), (80,134,22), (180,34,22), (100,34,122) ]class Figure: x = 0 y = 0 figures = [[[1,5,9,13],[4,5,6,7]], [[1,2,5,9],[0,4,5,6],[1,5,9,8],[4,5,6,10]], [[1,2,6,10],[5,6,7,9],[2,6,10,11],[3,5,6,7]], [[1,4,5,6],[1,4,5,9],[4,5,6,9],[1,5,6,9]], [[1,2,5,6]], [[0,1,5,6],[8,4,5,1]], [[0,1,2,5,8,9,10],[0,4,8,5,2,6,10]], ] def __init__(self,x,y): self.x = x self.y = y self.type = 5 self.color = random.randint(1,len(colors)-1) self.rotation = 0 def image(self): return self.figures[self.type][self.rotation] def rotate(self): self.rotation = (self.rotation+1)%len(self.figures[self.type])class Tetris: level = 2 score = 0 state = 'start' field = [] height = 0 width = 0 x = 100 y = 60 zoom = 20 figure = None def __init__(self,height,width): self.height = height self.width = width for i in range(height): new_line = [] for j in range(width): new_line.append(0) self.field.append(new_line) def new_figure(self): self.figure = Figure(3,0) def intersects(self): intersection = False for i in range(4): for j in range(4): if i*4+j in self.figure.image(): if i + self.figure.y > self.height - 1 or \ j + self.figure.x > self.width - 1 or \ j + self.figure.x < 0 or \ self.field[i + self.figure.y][j + self.figure.x] > 0: intersection = True return intersection def break_lines(self): lines = 0 for i in range(1,self.height): zerros = 0 for j in range(self.width): if self.field[i][j] == 0: zerros += 1 if zerros == 0: lines += 1 for i1 in range(i,1,-1): for j in range(self.width): self.field[i1][j] = self.field[i1-1][j] self.score += lines**2 def go_space(self): while not self.intersects(): self.figure.y += 1 self.figure.y -= 1 self.freeze() def go_down(self): self.figure.y += 1 if self.intersects(): self.figure.y -= 1 self.freeze() def freeze(self): for i in range(4): for j in range(4): if i*4 + j in self.figure.image(): self.field[i + self.figure.y][j + self.figure.x] = self.figure.color self.break_lines() self.new_figure() if self.intersects(): self.state = 'gameover'
Hình ảnh sản phẩm
Hãy bình luận để nhặt 100 thóc nhé
Sản phẩm cùng tác giả
Sản phẩm liên quan
Không có sản phẩm nào
Đăng nhập để tham gia bình luận