python俄罗斯方块实训报告_Python_简易版俄罗斯方块
简易版俄罗斯方块源码
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_简易版俄罗斯方块相关推荐
- python项目实训报告简介_python实验报告5
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名王凡学号3190505102 成绩 日期 2020.4.29 指导老师修宇 [实验名称]综合运用三种基本结构进 ...
- python俄罗斯方块实训报告_用 Python 写个俄罗斯方块
俄罗斯方块是俄罗斯人发明的一款休闲类的小游戏,这款小游戏可以说是很多人童年的主打电子游戏了,本文我们使用 Python 来实现这款小游戏. 游戏的基本规则是:移动.旋转和摆放游戏自动输出的各种方块,使 ...
- python俄罗斯方块实训报告_Python 俄罗斯方块游戏
附源码: from Tkinter import * from tkMessageBox import * import random import time # 俄罗斯方块界面的高度 HEIGHT ...
- python实训报告万能模板_(完整word版)实训报告万能模板
实训报告万能模板 "纸上得来终觉浅,绝知此事要躬行 ! "在这短短的时间里,让 我深深的感觉到自己在实际应用中所学专业知识的匮乏. 让我真真领 悟到"学无止境" ...
- python飞机大战实训报告200_飞机大战实训报告.doc
您所在位置:网站首页 > 海量文档  > 行业资料 > 航空/航天 飞机大战实训报告.doc22页 本文档一共被下载: ...
- python实训报告5000字_测量实训报告范文5000字
测量实训报告范文 纸上得来终觉浅, 绝知此事要躬行, 书本上知识只有在实践中才能被 检验,方知不足,实践是检验真理的唯一标准,在这次实习中,让我 学到了许多,也认识到自身的不足! 首先, 实习的过程让 ...
- eovs实训报告总结心得_实训心得10篇完美版
<实训心得> 实训心得(一) : 透过这两周的实训,我们学会了手持编程器的编程方法,编入.写出.删除 及修改都会了. 在以后学习过程中期望大家多多提点 . 我和倪泽旭主要负责程序设 计和调 ...
- 计算机网络第六版课程总结,计算机网络课程实训报告总结 | 翠格格
计算机网络课程实训报告总结 计算机网络课程实训已经结束几天了.实训期间,让我学到了很多东西,不仅仅使我在理论上对网络有了全新的认识,在实践本事上也得到了提高,真正地做到了学以致用,更学到了很多做人的道 ...
- 银行管理系统c语言实训作业,计122申诗雨C语言银行系统实训报告
<计122申诗雨C语言银行系统实训报告>由会员分享,可在线阅读,更多相关<计122申诗雨C语言银行系统实训报告(7页珍藏版)>请在人人文库网上搜索. 1.河北建筑工程学院信息工 ...
最新文章
- 文件标识符必须为双精度类型的整数值标量_【翻译】VTK官方文档 - vtk文件格式
- iKair:放弃硬件制造,切入上游去“送水”的逻辑
- php url 删除参数错误,为什么在通过改型2按id删除数据时会出现IllegalArgumentException错误?以及如何修复它...
- A new start!
- 3分钟实现iOS语言本地化/国际化(图文详解)
- c语言中编程中跳格的写法是,c语言中现代写法,用C语言编程中,一般的格式是怎样的?...
- jquery 之for 循环
- 【渝粤题库】广东开放大学 招投标与合同管理 形成性考核
- atan java_Java Math atan() 使用方法及示例
- iOS9获取手机序列号serialNumber(UDID)
- 越美丽的东西我越不可碰 | 天蝎座如何在黑暗中找到那束光
- 微信公众号java开发沉淀(五)推送群发消息
- 全自动软化水设备:全自动软化水设备选型要点说明
- 渐近线(泪滴)能改善信号质量吗?
- 注册AWS账号创建EC2免费套餐详细教程
- (NDIS5.0)协议驱动Ndisprot源码解读
- Re01:NerLTR-DTA: drug–target binding affinity prediction based on neighbor relationship and learning
- 公交查询系统c语言数据结构,公交路线查询系统(基于数据结构和C语言)
- 基于SSM框架的文章管理系统(增加留言回复功能)
- 在Android Studio中添加mp3音频文件