Commit 7b5f06b2 by BellCodeEditor

save project

parent 8e94db4d
Showing with 53 additions and 18 deletions
import pygame import pygame
import pygame import pygame
from pygame import locals from pygame import locals
import random
pygame.init() # 初始化 pygame.init() # 初始化
score = 0 score = 0
grid_size = 20 # 格子大小 grid_size = 20 # 格子大小
...@@ -15,37 +15,72 @@ clock = pygame.time.Clock() # pygame时钟,控制游戏速度(帧数) ...@@ -15,37 +15,72 @@ clock = pygame.time.Clock() # pygame时钟,控制游戏速度(帧数)
# 载入素材 # 载入素材
background = pygame.image.load('bg.png') background = pygame.image.load('bg.png')
font = pygame.font.Font('STKAITI.TTF', 60) # 字体 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] # 7种类型俄罗斯方块
# 一些RGB颜色
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] center=[2,8]
curr_shape=[(0,-1),(0,0),(0,1),(0,2)] 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: while True:
for event in pygame.event.get():#遍历各种事件 for event in pygame.event.get():#遍历各种事件
if event.type == locals.QUIT: if event.type == locals.QUIT:
exit()#点击窗口上的x就退出 exit()#点击窗口上的x就退出
if event.type==locals.KEYDOWN: if event.type==locals.KEYDOWN:
if event.key ==locals.K_RIGHT: if event.key ==locals.K_RIGHT:
if center[1]<15: center[1]=center[1]+1
center[1]=center[1]+1 if check(center)==False:
elif event.key ==locals.K_LEFT:
if center[1]>1:
center[1]=center[1]-1 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: elif event.key ==locals.K_DOWN:
if center[0]<25: center[0]=center[0]+1
center[0]=center[0]+1 if check(center)==False:
center[0]=center[0]-1
# 将背景图画上去 # 将背景图画上去
screen.blit(background,(0,0))#绘制(blit)背景 screen.blit(background,(0,0))#绘制(blit)背景
curr_pos=[] curr_pos=[]
for cube in curr_shape: for cube in current_shape:
bb=(cube[0]+center[0],cube[1]+center[1]) bb=(cube[0]+center[0],cube[1]+center[1])
curr_pos.append(bb) curr_pos.append(bb)
for cube in curr_pos: for cube in curr_pos:
pygame.draw.rect(screen,(255,0,0), pygame.draw.rect(screen,color,(cube[1]*20-20,cube[0]*20-20,20,20),0)
(cube[1]*20-20,center[0]*20-20, pygame.draw.rect(screen,(255,255,255),(cube[1]*20-20,cube[0]*20-20,20,20),1)
20,20),
0)#在(140,20)画一个20*20的红色实心方块
pygame.draw.rect(screen,(255,255,255),
(cube[1]*20-20,center[0]*20-20,
20,20),
1)#在(140,20)画一个20*20的白色空心方块(线条为1)
# 得分(350,70) # 得分(350,70)
score_text=font.render(str(score),True,(0,0,0))#设置得分参数 score_text=font.render(str(score),True,(0,0,0))#设置得分参数
screen.blit(score_text,(350,70))#绘制得分 screen.blit(score_text,(350,70))#绘制得分
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment