俄罗斯方块(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)
上一篇:第一款游戏就是“史上最佳”,《传说之下》原来是这么诞生的
下一篇:为吃永劫WOW桶拼了?美女Cos胡桃花式求救,观众:倒是先给VX啊
最近更新游戏资讯
- 秋瓷炫老公什么星座(秋瓷炫血型星座)
- 法国电影中的女性符号和觉醒
- 惊人的秘密:颜色政治背后的渗透与分化
- 让BB接受家庭伦理教育洗礼
- 语言礼仪十篇
- 美军欲打造AI战机部队 面临严重伦理问题
- 医学伦理学:医学伦理学的主要观点和基本理论
- 豆瓣9.0分以上|50本好书推荐
- 达尔文的故事赏析八篇
- 港台国学类学术会议信息(四十)
- 东野圭吾本格推理极致之作《回廊亭杀人事件》开票5折抢
- 辩论赛包含哪些技巧?
- 【铸牢中华民族共同体意识
- 徽州醉春丨水墨画里的徽州-婺源篁岭-江岭- 新安江- 西递- 呈坎丨六天五夜
- 心理治疗总论 【医学心理学与精神医学版】
- 苏德超教授的新论文:道德绑架为何难以避免
- 企业社会责任综述十篇
- 政务礼仪的作用(五篇)
- 韩素希出道最大尺度 泄朴海俊指导秘诀 咬牙拍完《夫妇》只有2感想
- 《封神三部曲》:为什么要重述这个神话?
- 输血和喝血真的能帮助女性和老人保持年轻吗?
- 集齐九部《星球大战》,教你如何把家庭伦理拍成太空歌剧
- 这十部顶级英美剧,是当之无愧的业界巅峰,每一部都值得通宵去看
- 邪王宠妻之金牌医妃
- 【博览】《科奖在线》:“破四唯、立新标”典型案例官宣,项目/人才/成果未来可能这