简易版俄罗斯方块源码

import pygame,sys,random,time

block_initial_position,score,times,gameover,press,all_block,background=[20,5],[0],0,[],False,[[[0,0],[0,-1],[0,1],[0,2]],[[0,0],[0,1],[-1,1],[-1,0]],[[0,0],[0,-1],[-1,0],[-1,1]],[[0,0],[0,1],[-1,-1],[-1,0]],[[0,0],[0,1],[1,0],[0,-1]],[[0,0],[1,0],[-1,0],[1,-1]],[[0,0],[1,0],[-1,0],[1,1]]],[[0 for column in range(0,10)]for row in range(0,22)]

background[0],select_block=[1 for column in range(0,10)],list(random.choice(all_block))

def move(n):

if n==100:

for row,column in select_block:

pygame.draw.rect(screen,(255,165,0),((column+block_initial_position[1])*40,800-(row+block_initial_position[0])*40,38,38))

for row in range(0,20):

for column in range(0,10):

if background[row][column]:pygame.draw.rect(screen,(0,0,255),(column*40,800-row*40,38,38))

y_drop,x_move=block_initial_position

if n==1 or n==-1:

x_move+=n

for row,column in select_block:

if (column+x_move)<0 or (column+x_move)>9 or background[row+y_drop][column+x_move]:break

else:block_initial_position.clear(),block_initial_position.extend([y_drop,x_move])

if n==0:

rotating_position=[(-column,row)for row,column in select_block]

for row,column in rotating_position:

if (column+x_move)<0 or (column+x_move)>9 or background[row+y_drop][column+x_move]:break

else:select_block.clear(),select_block.extend(rotating_position)

if n==10:

y_drop-=1

for row,column in select_block:

if background[row+y_drop][column+x_move]==1:break

else:

block_initial_position.clear()

block_initial_position.extend([y_drop,x_move])

return

for row,column in select_block:background[block_initial_position[0]+row][block_initial_position[1]+column]=1

complete_row=[]

for row in range(1,21):

if 0 not in background[row]:complete_row.append(row)

complete_row.sort(reverse=True)

for row in complete_row:

background.pop(row)

background.append([0 for column in range(0,10)])

score[0]+=len(complete_row)

pygame.display.set_caption('Tetris,Score:'+str(score[0])+' Robin5')

select_block.clear(),select_block.extend(list(random.choice(all_block)))

block_initial_position.clear(),block_initial_position.extend([20,4])

for row,column in select_block:

if background[row+block_initial_position[0]][column+block_initial_position[1]]:gameover.append(1)

pygame.init()

screen=pygame.display.set_mode((400,800)) #set_mode((400,800)) 修改数值可以修改窗口大小 但第7行和第10行要做相应的改动

while True:

screen.fill((255,255,255))

for event in pygame.event.get():

if event.type==pygame.QUIT:sys.exit()

elif event.type==pygame.KEYDOWN and event.key==pygame.K_LEFT:move(-1)

elif event.type==pygame.KEYDOWN and event.key==pygame.K_RIGHT:move(1)

elif event.type==pygame.KEYDOWN and event.key==pygame.K_UP:move(0)

elif event.type==pygame.KEYDOWN and event.key==pygame.K_DOWN:press=True

elif event.type==pygame.KEYUP and event.key==pygame.K_DOWN:press=False

if press:times+=10

if times>=50:

move(10)

times=0

else:times+=1

if gameover:sys.exit()

move(100)

pygame.time.Clock().tick(200) #tick(200)修改数字可以修改游戏的整体速率

pygame.display.flip()

#记分系统在窗口标题上

需要用到的python包:

pygame,sys,random,time

效果图如下:

python俄罗斯方块实训报告_Python_简易版俄罗斯方块相关推荐

  1. python项目实训报告简介_python实验报告5

    安徽工程大学 Python程序设计 实验报告 班级  物流191   姓名王凡学号3190505102 成绩 日期     2020.4.29     指导老师修宇 [实验名称]综合运用三种基本结构进 ...

  2. python俄罗斯方块实训报告_用 Python 写个俄罗斯方块

    俄罗斯方块是俄罗斯人发明的一款休闲类的小游戏,这款小游戏可以说是很多人童年的主打电子游戏了,本文我们使用 Python 来实现这款小游戏. 游戏的基本规则是:移动.旋转和摆放游戏自动输出的各种方块,使 ...

  3. python俄罗斯方块实训报告_Python 俄罗斯方块游戏

    附源码: from Tkinter import * from tkMessageBox import * import random import time # 俄罗斯方块界面的高度 HEIGHT ...

  4. python实训报告万能模板_(完整word版)实训报告万能模板

    实训报告万能模板 "纸上得来终觉浅,绝知此事要躬行 ! "在这短短的时间里,让 我深深的感觉到自己在实际应用中所学专业知识的匮乏. 让我真真领 悟到"学无止境" ...

  5. python飞机大战实训报告200_飞机大战实训报告.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp行业资料&nbsp>&nbsp航空/航天 飞机大战实训报告.doc22页 本文档一共被下载: ...

  6. python实训报告5000字_测量实训报告范文5000字

    测量实训报告范文 纸上得来终觉浅, 绝知此事要躬行, 书本上知识只有在实践中才能被 检验,方知不足,实践是检验真理的唯一标准,在这次实习中,让我 学到了许多,也认识到自身的不足! 首先, 实习的过程让 ...

  7. eovs实训报告总结心得_实训心得10篇完美版

    <实训心得> 实训心得(一) : 透过这两周的实训,我们学会了手持编程器的编程方法,编入.写出.删除 及修改都会了. 在以后学习过程中期望大家多多提点 . 我和倪泽旭主要负责程序设 计和调 ...

  8. 计算机网络第六版课程总结,计算机网络课程实训报告总结 | 翠格格

    计算机网络课程实训报告总结 计算机网络课程实训已经结束几天了.实训期间,让我学到了很多东西,不仅仅使我在理论上对网络有了全新的认识,在实践本事上也得到了提高,真正地做到了学以致用,更学到了很多做人的道 ...

  9. 银行管理系统c语言实训作业,计122申诗雨C语言银行系统实训报告

    <计122申诗雨C语言银行系统实训报告>由会员分享,可在线阅读,更多相关<计122申诗雨C语言银行系统实训报告(7页珍藏版)>请在人人文库网上搜索. 1.河北建筑工程学院信息工 ...

最新文章

  1. 文件标识符必须为双精度类型的整数值标量_【翻译】VTK官方文档 - vtk文件格式
  2. iKair:放弃硬件制造,切入上游去“送水”的逻辑
  3. php url 删除参数错误,为什么在通过改型2按id删除数据时会出现IllegalArgumentException错误?以及如何修复它...
  4. A new start!
  5. 3分钟实现iOS语言本地化/国际化(图文详解)
  6. c语言中编程中跳格的写法是,c语言中现代写法,用C语言编程中,一般的格式是怎样的?...
  7. jquery 之for 循环
  8. 【渝粤题库】广东开放大学 招投标与合同管理 形成性考核
  9. atan java_Java Math atan() 使用方法及示例
  10. iOS9获取手机序列号serialNumber(UDID)
  11. 越美丽的东西我越不可碰 | 天蝎座如何在黑暗中找到那束光
  12. 微信公众号java开发沉淀(五)推送群发消息
  13. 全自动软化水设备:全自动软化水设备选型要点说明
  14. 渐近线(泪滴)能改善信号质量吗?
  15. 注册AWS账号创建EC2免费套餐详细教程
  16. (NDIS5.0)协议驱动Ndisprot源码解读
  17. Re01:NerLTR-DTA: drug–target binding affinity prediction based on neighbor relationship and learning
  18. 公交查询系统c语言数据结构,公交路线查询系统(基于数据结构和C语言)
  19. 基于SSM框架的文章管理系统(增加留言回复功能)
  20. 在Android Studio中添加mp3音频文件

热门文章

  1. c语言 bmp白底黑字,用c语言把bmp格式的彩色图片转换成黑白的
  2. HTML语言怎么晋升,学会提问,对你的职场晋升有很大的帮助
  3. 迅雷2014校园招聘笔试题
  4. Flask实战第41天:发送短信验证码
  5. Oracle导入导出数据
  6. [转]MyBatis中resultType与resultMap区别
  7. sql server总结二
  8. 自学it18大数据笔记-第三阶段Scala-day06——会持续更新……
  9. iOS ----------怎么修改xcode默认打开方式
  10. git学习4:分支管理