俄罗斯方块游戏规则属于哪种类型的游戏

类似俄罗斯方块的游戏简介
俄罗斯方块可以说是一款比较经典的游戏了,也是很多人的童年回忆了。小时候在游戏机上面体验到的快乐确实是不可言喻的了,而在游戏发展迅速的如今,还有哪些游戏都带有着俄罗斯方块的元素呢?还有哪些类似俄罗斯方块的游戏呢?感兴趣的玩家们可以一起来了解一下。《俄罗斯方块游戏》下载
Tetris Party Deluxe
1、如果您未安装91盒子,请选择“游戏高速下载”。2、安装好91盒子客户端后,请重启浏览器,点击“高速下载”按钮盒子将自动下载游戏。
俄罗斯方块游戏
配置要求操作系统Win Xp/Win 7/Win Vista运行环境&=DirectX 9.0CPUIntel Core2 Duo E4600 @ 2.40Hz / AMD Athlon 64 X2 Dual Core 5000+内存2 GB显卡GeForce 8800 GT / Radeon HD 3870硬盘4 GB这是一个包含六种不同玩法的俄罗斯方块游戏,除了标准的俄罗斯方块玩法外,还有进阶及适合小孩的玩法,游戏有两种模式,一个是正常模式,一个则是简单模式,你还可以用自己的音效文件来玩游戏喔!
俄罗斯方块游戏游戏背景
俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。日,英国心理学家发现,减肥者通过玩俄罗斯方块,可以降低对富含脂肪的食物和零食的心理需求;尝试戒烟者的烟瘾也能得到遏制。
俄罗斯方块游戏游戏内容
原本是前苏联科学家阿列克谢·帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。Game Boy版的俄罗斯方块在日本卖出424万套,是Game Boy史上卖最好的游戏。海湾战争时,也是前线美军最常拿消磨时间的游戏之一。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。俄罗斯方块曾经造成的轰动与带来的经济价值,可以说是世界游戏史上的一个奇迹。它看似简单却又变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得“茶不思饭不想”的那个俄罗斯方块时代。俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。
俄罗斯方块游戏名字起源
谁知道这么优秀的娱乐工具,出自哪位神人之手呢?顾名思义,俄罗斯方块自然是俄罗斯人发明的。这位伟人叫做阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。俄罗斯方块俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。
俄罗斯方块游戏游戏规则
1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位。 七喜安卓网2、一组由4个小型正方形组成的规则图形,英文称为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。I:一次最多消除四层J(左右):最多消除三层,或消除二层L:最多消除三层,或消除二层O:消除一至二层S(左右):最多二层,容易造成孔洞Z (左右):最多二层,容易造成孔洞T:最多二层(1)部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。方块会从区域上方开始缓慢继续落下。(2)玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。(3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。(4)当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。(5)当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。(6)一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估要如何进行。由于游戏能不断进行下去对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度。3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是20或者玩家所能见到的高度),则游戏结束。具体到每一款不同的游戏,其中的细节规则都可能有千差万别,但是以上的基本规则是相同的。
俄罗斯方块游戏操作方法
1、按游戏界面的"开始"按钮或者F2键来开始游戏,自己使用右边的窗口,对手使用左边的窗口。俄罗斯方块2、键盘操作:系统缺省设置使用右边的窗口,用光标操作,"←"左移一格;"→"右移一格;"↑"旋转方块;↓ 方块丢下(方块下落到底),"End"健可以一格格的下落,用户还可以自定义习惯的按键来操作游戏。3、计分牌显示的内容:[2]“分数”为双方本局的分数,计分标准为下落一个块10分,一次消一行100分、2行200分、3行400分、4行800分。“等级”为双方的游戏设置等级,当分数达到一定的值,等级就会提升、速度加快。“行数”第一行为双方消的行数,第二行是送给对方的行数。“比分”为双方赢的局数。
其他版本下载
俄罗斯方块游戏游戏截图
高速下载器通道:
其他下载地址:
一、下载软件务必使用迅雷7,下载前建议查看配置要求、游戏说明和网友评论,下载后请点击游戏安装教学视频在线学习。
二、游戏安装运行的时候出现缺少dll、内存不能读、配置不正确等,请下载对应的。注意:资源可能被360等杀毒软件提示,部分报毒与补丁有关。但软件不会危及电脑,请用户放心下载。
游戏类别:益智解谜
游戏大小:
游戏类别:动作冒险
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:街机格斗
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
免费并开源的俄罗斯方..
...on64X2D..
最经典的俄罗斯方块游..
游戏类别:动作冒险
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
游戏类别:益智解谜
游戏大小:
专业的单机游戏下载网站 91 () 打造不一样的 单机游戏下载基地热门搜索:
当前位置:&&&&&&俄罗斯方块各方块功能介绍
俄罗斯方块各方块功能介绍
时间:作者:小皮小编来源:小皮网
  俄罗斯方块中的方块是由一些小的正方块组合起来的各种形状进行堆砌的,每个方块有不同的特点。那么俄罗斯方块有什么方块呢,今天简单整理了一篇俄罗斯方块方块大全,简单介绍了一下各方块的特点。
  正常的一个方块是由四个小正方形组成的,英文名字称为Tetromino,中文称为方块。分别以Z、L、I、O、T这5个字母的形状来命名。
  I:一次最多消除四层
  L(左右):最多消除三层,或消除二层
  O:消除一至二层
  Z (左右):最多二层,容易造成孔洞
  T:最多二层
评论(0条评论)
类&&&型:益智休闲
评&&&分:分
Copyright 2008- 小皮游戏网 All Rights Reserved.闽ICP备号-1
厦门小皮网络有限公司
联系电话:
文网文[8号君,已阅读到文档的结尾了呢~~
俄罗斯方块游戏设计,俄罗斯方块,经典俄罗斯方块,俄罗斯方块游戏代码,俄罗斯方块设计,下载俄罗斯方块游戏,俄罗斯方块设计思路,俄罗斯方块游戏大全,俄罗斯方块游戏背景,俄罗斯方块小游戏,俄罗斯方块经典版
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
俄罗斯方块游戏设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口1714人阅读
游戏编程(1)
俄罗斯方块是由多种类型的方块与游戏边界背景组成,根据面向对象的方法,把整个程序分隔成两部分--游戏主体、形状两个对象。
其中游戏主体处理的事情包括:
绘制游戏界面与边界。容纳方块与形状并绘制。控制器:监听键盘事件,并将之转换成对形状对象的控制,如变形、左移、右移、下移以及直接落地操作。游戏规则控制:包括形状对象的生成,形状对象每次下落的时间间隔,边界检测(形状对象不能移除游戏边界之外)。
形状对象处理的事情:
根据指定的方块排列坐标,生成对应数量的方块以及各方块的坐标信息。处理对象移动或变形操作对各方块坐标的影响,并使得游戏主体可以根据这些坐标正确绘制方块信息。
确定了程序的分割及功能逻辑划分下面要就要进行编码了。
形状对象:Shape
var Shape = function(x, y, gc){//形状/方块对象,提供方块初始位置
Shape.prototype = {
init : function(boxes, centerIndex){//初始化方块内容(提供方块各格子与初始位置的偏移量, 以及变型时中心位置(或传入false等于不可变型))
var me = this, gc = me.
me.boxes = boxes.slice();
this.turnAble =
if(centerIndex === false){
this.turnAble =
this.centerIndex = (typeof centerIndex == 'undefined') ? 1 : centerI
if(this.centerIndex &= boxes.length){
this.centerIndex = boxes.length &= 2 ? 1 : 0;
var x = me.x, y = me.y;
me.nodes = [];
for(var i = 0; i & me.boxes. i++){
var node = {x : x + me.boxes[i].x, y : y + me.boxes[i].y, dom : gc.createBox()};
me.nodes.push(node);
putIn : function($p){
for(var i = 0; i & this.nodes. i++){
$p.appendChild(this.nodes[i].dom);
turn : function(flag){//逆时针旋转, flag = true时顺时针旋转
var me = this, nodes = me.nodes, gc = me.gc, centerBox = 1;
if(me.turnAble){
var cx = nodes[centerBox].x, cy = nodes[centerBox].y;
for(var i = 0; i & nodes. i++){
var rx = nodes[i].x - cx, ry = nodes[i].y -
rx = !!flag ? rx : -
ry = !!flag ? -ry :
nodes[i].x = cx +
nodes[i].y = cy +
var crossInfo = me.detectCross();
if(crossInfo){
me.move(-crossInfo.x, -crossInfo.y, true);
detectCross : function(){//检测是否跃出当前游戏网格(旋转后可能会有此问题), 返回超出范围的最大值,x轴和y轴
var me = this, nodes = me.nodes, gc = me.
var crossX = 0, crossY = 0;
function absMax(a1, a2){return Math.abs(a1) & Math.abs(a2) ? a1 : a2;}
for(var i = 0; i & nodes. i++){
var node = nodes[i];
var absX = 0, absY = 0;
absX = node.x & gc.w && node.x &= 0 ? 0 : node.x % (gc.w - 1);
absY = node.y &= 0 && node.y & gc.h ? 0 : node.y % (gc.h - 1);
crossX = absMax(absX, crossX);
crossY = absMax(absY, crossY);
return crossX != 0 || crossY != 0 ? {x : crossX, y : crossY} :
moveAble : function(x, y){
var me = this, nodes = me.nodes, gc = me.gc, maxX = gc.w, maxY = gc.h;
var flag =
for(var i = 0; i & nodes. i++){
var node = nodes[i], index =
if(nodes[index].x + x &= maxX || nodes[index].y + y &= maxY){
if(nodes[index].x + x & 0 || nodes[index].y + y & 0){
move : function(x, y, force){
var me = this, nodes = me.nodes, gc = me.gc, maxX = gc.w, maxY = gc.h;
var flag = !!force || me.moveAble(x, y);
var len = nodes.
for(var i = 0; i & nodes. i++){
nodes[i].x +=
nodes[i].y +=
toRight : function(){
return this.move(1, 0);
toLeft : function(){
return this.move(-1, 0);
toUp : function(){
return this.move(0, -1);
toDown : function(){
return this.move(0, 1);
};上面是形状对象的定义,可以看到形状对象定义了turn、move、toRight、toLeft、toUp、toDown以及detectCross等基本方法。其中detectCross方法是用于检测变型后各个方块的坐标是否还在游戏边界内,并返回最大的超出距离信息,供重置方块坐标。
方块编辑完了后就是要写Game游戏主体对象了。
Game:游戏主体对象
var extend = function(source){
var argLen = arguments.
for(var i = 1; i & argL i++){
var arg = arguments[i];
for(var i in arg){
source[i] = arg[i];
var Game = function(w, h, frame, score){//游戏世界对象
me.holder = new Array(w * h);
me.container = me.$c =
me.score =
me.scoreCount = 0;
var scoreCount = 0;
me.getScoreCount = function(){
return scoreC
me.setScoreCount = function(record){
scoreCount =
var box = me.createBox();
me.container.appendChild(box);
me.boxWidth = box.clientWidth + 2;//2为边框宽度
me.boxHeight = box.clientHeight + 2;//2为边框宽度
var bw = me.boxWidth, bh = me.boxH
me.container.removeChild(box);
extend(me.container.style, {width : w * bw + 'px', height : h * bh + 'px', position : 'relative', display : 'block'});//设置容器高度
me.eventListener = me.createEveltListener();
var level = 1;
me.setLevel = function(level2){
if(level2){
me.speed = 1000 / level2;
level = level2;
me.getLevel = function(){
me.setLevel(level);
Game.prototype = {
restore : function(){
var me = this, w = me.w, h = me.h;
me.pause();
me.holder = new Array(w * h);
me.curShape =
me.speed = 1000;
me.scoreCount = 0;
var children = me.container.
for(var i = 0; i & children. i++){
me.container.removeChild(children[i]);
createBox : function(){//创建格子元素
var box = doc.createElement('div');
box.className = 'box bg-yellow';
//box.setAttribute('className', 'box bg-yellow');
//box.setAttribute('class', 'box bg-yellow');
drawShape : function(shape){//绘制方块的位置
var me = this, bw = me.boxWidth, bh = me.boxH
for(var i = 0, nodes = shape. i & nodes. i++){
extend(nodes[i].dom.style, {left : nodes[i].x * bw + 'px', top : nodes[i].y * bh + 'px'});
refreshDisplay : function(){//绘制/刷新已有方块的位置
var me = this, holder = me.holder, bw = me.boxWidth, bh = me.boxH
var len = holder.
var w = me.w, h = me.h;
var index = 0;
for(var row = 0; row & row++){//此处不使用除法运算,由于除法运算精度会导致行数计算错误.
for(var col = 0; col & col++){
var $dom = holder[index];
if($dom && $dom.nodeType){
extend($dom.style, {left : col * bw + 'px', top : row * bh + 'px'});
detectShapeImpact : function(shape){//检测方块是否与世界冲突(碰撞检测)
var me = this, holder = me.holder,
w = me.w, h = me.h, nodes = shape.
var flag =
for(var index = 0; index & shape.nodes. index++){
var node = shape.nodes[index];
var nx = node.x, ny = node.y;
var i = ny * w +
if(holder[i] && holder[i].nodeType){//与现有方块冲突
boxesSupport : [
{boxes : [{x:0,y:0},{x:0,y:1},{x:0,y:2},{x:0,y:3}], centerIndex : 1},
{boxes : [{x:0,y:0},{x:0,y:1},{x:1,y:1},{x:1,y:2}], centerIndex : 1},
{boxes : [{x:0,y:0},{x:0,y:1},{x:-1,y:1},{x:-1,y:2}], centerIndex : 1},
{boxes : [{x:0,y:0},{x:0,y:1},{x:0,y:2},{x:1,y:2}], centerIndex : 2},
{boxes : [{x:0,y:0},{x:1,y:0},{x:1,y:1},{x:1,y:2}], centerIndex : 1},
{boxes : [{x:0,y:0},{x:0,y:1},{x:0,y:2},{x:1,y:1}], centerIndex : 2},
{boxes : [{x:0,y:0},{x:1,y:0},{x:0,y:1},{x:1,y:1}], centerIndex : false},
{boxes : [{x:0,y:0}], centerIndex : false}
randomShape : function(){
var me = this, len = me.boxesSupport.length, x = Math.round(me.w / 2), y = 0,
rand = Math.floor(Math.random() * len);
var shape = new Shape(x, y, me);
shape.init(me.boxesSupport[rand].boxes, me.boxesSupport[rand].centerIndex);
shape.putIn(me.container);
createEveltListener : function(){
return function(event){
var shape = me.curS
if(!shape){
var mi =//MoveInfo移动信息
var isTurn =
var ev = event || win.event, key = ev.keyCode || ev.which || ev.charC
switch(key){
mi = {x:-1, y:0};
mi = {x:1, y:0};
mi = {x:0, y:1};
//shape.toUp();
shape.turn();
//console.log('Unknow operate with code ' + event.keyCode);
if(mi){//移动操作
if(shape.moveAble(mi.x, mi.y)){
shape.move(mi.x, mi.y);
var flag = me.detectShapeImpact(shape);//检测碰撞信息
shape.move(-mi.x, -mi.y);//还原用于检测碰撞的位置信息.
if(mi.y & 0){//有碰撞,且为向下移动
me.mergeShape(shape);
}else if(mi.y & 0){//向下,写不能移动
me.mergeShape(shape);
if(isTurn){//旋转操作(变型操作)
var flag = me.detectShapeImpact(shape);//检测碰撞信息
shape.turn(true);//旋转回去
me.drawShape(shape);
eventListener : function(event){
mergeShape : function(shape){
var me = this, holder = me.holder,
w = me.w, h = me.h, nodes = shape.
var flag =
for(var index = 0; index & shape.nodes. index++){
var node = shape.nodes[index];
var nx = node.x, ny = node.y;
var i = ny * w +
holder[i] = node.
me.clearLine();
me.refreshDisplay();
me.curShape = me.randomShape();
var flag = me.detectShapeImpact(me.curShape);//检测碰撞信息
me.drawShape(me.curShape);
me.pause();
alert('游戏结束!');
clearLine : function(){
//清除满行的方块,并移动其上层下来
var me = this, holder = me.holder,
w = me.w, h = me.h, len = holder.
var clearLineCount = 0;
for(var i = 0; i & i++){
var lineFullFlag =
for(var j = 0; j & j++){
if(!holder[i * w + j]){
lineFullFlag =
if(lineFullFlag){//当前行被填满
clearLineCount++;
for(var col = 0; col & col++){//删除元素
me.container.removeChild(holder[i * w + col]);
var oldHolder = holder, tmpH
tmpHolder = holder.slice(0, i * w);//复制前段
tmpHolder = tmpHolder.concat(holder.slice((i+1) * w));//复制后段
tmpHolder = new Array(w).concat(tmpHolder);//填充全段
holder = tmpH//变量交互
me.holder =//维护全局变量
//console.log('Clear line (' + clearLineCount + ');');
if(clearLineCount & 0){
me.scoreCount += Math.pow(2, clearLineCount);
if(me.score){
me.score.innerHTML = me.scoreC
start : function(){
if(!me.started){
me.started =
if(!me.curShape){
me.curShape = me.randomShape();
me.drawShape(me.curShape);
//document.addEventListener('keydown', me.eventListener);
document.onkeydown = me.eventL
var roundFunc = function(){
//下移方块
me.eventListener({keyCode:40});
me.runInterval = setInterval(roundFunc, me.speed);
pause : function(){
me.started =
win.clearInterval(me.runInterval);
document.onkeydown =
//document.removeEventListener('keydown', me.eventListener);
HTML代码以及运行代码
&meta charset=&UTF-8& content=&text/charset=utf-8&&
&title&俄罗斯方块&/title&
&style type=&text/css& rel=&stylesheet&&
.box{width:18 height:18 border:1 display: position:}
.bg-red{background-color:}
.bg-blue{background-color:}
.bg-yellow{background-color:}
.bg-gray{background-color:}
.frame{border: 1 position: display: background-color:}
.score{border: 1 display: background-color: width:200 height:36 font-size: 18 line-height: 36 margin-top:5}
.wrap{display:}
.hide{display:}
.hide2{visibility:}
&script type=&text/javascript& src=&js/tetris.js&&&/script&
&div class=&wrap&&
&div class=&frame& id=&frame&&
&div class=&score& id=&score&&&/div&
&script type=&text/javascript&&
(function(win, doc){
g = new Game(15, 20, document.getElementById('frame'), document.getElementById('score'));
g.start();
})(window, document);
程序源代码下载
程序源代码下载地址:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:29034次
排名:千里之外
原创:11篇
评论:15条
(1)(2)(1)(1)(1)(1)(1)(1)(2)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 俄罗斯方块游戏规则 的文章

 

随机推荐