俄罗斯方块高清版,方块怎么移动

方块游戏|移动方块游戏|消方块游戏|叠方块游戏|打方块游戏|手机方块游戏|APK8手机方块游戏大全
手机方块游戏大全
(更新日期:)
说到方块,小编立即联想到小时候的一个猜字游戏“四四方方一座城,里面住着十万兵,另有八万去打仗,还有两万守着城。”方块对我们来说是非常简单的一个造型,但是安卓游戏里面运用方块来制造游戏的厂商甚多,就像猜字游戏描述的那样,四四方方的造型里面,其实有很多故事发生,叠放块游戏、打方块游戏、消方块游戏、移动方块游戏等等,在手机游戏世界里,手机方块游戏已经成长为一支独立的分支,未来还会有更多关于方块的手机游戏出现,统统都归入到本期手机方块游戏大全里面来吧。当前位置:
>>>如图所示是“俄罗斯方块”游戏的一个画面,若使左上角的图案经过平..
如图所示是“俄罗斯方块”游戏的一个画面,若使左上角的图案经过平移插入到下面的空白A处,先向______平移______格,再向______平移______格.你有什么方法使它能插入另一个空白B处吗?若有,请说明.
题型:解答题难度:中档来源:不详
若使左上角的图案经过平移插入到下面的空白A处,先向右平移1格,再向下平移3格.能使它能插入另一个空白B处,理由:将此图案绕凹处阴影部分的顶点顺时针旋转90°,再向右平移4格,最后向下平移3格得出即可.
马上分享给同学
据魔方格专家权威分析,试题“如图所示是“俄罗斯方块”游戏的一个画面,若使左上角的图案经过平..”主要考查你对&&平移,图形旋转&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
平移图形旋转
定义:将一个图形沿某个方向移动一定的距离,这样的图形运动称为平移。平移是图形变换的一种基本形式。平移不改变图形的形状和大小,平移可以不是水平的。 平移基本性质:经过平移,对应线段平行(或共线)且相等,对应角相等,对应点所连接的线段平行且相等;平移变换不改变图形的形状、大小和方向(平移前后的两个图形是全等形)。(1)图形平移前后的形状和大小没有变化,只是位置发生变化;(2)图形平移后,对应点连成的线段平行(或在同一直线上)且相等(3)多次连续平移相当于一次平移。(4)偶数次对称后的图形等于平移后的图形。(5)平移是由方向和距离决定的。这种将图形上的所有点都按照某个方向作相同距离的位置移动,叫做图形的平移运动,简称为平移平移的条件:确定一个平移运动的条件是平移的方向和距离。
平移的三个要点1 原来的图形的形状和大小和平移后的图形是全等的。2 平移的方向。(东南西北,上下左右,东偏南n度,东偏北n度,西偏南n度,西偏北n度)3 平移的距离。(长度,如7厘米,8毫米等)
平移作用:1.通过简单的平移可以构造精美的图形。也就是花边,通常用于装饰,过程就是复制-平移-粘贴。2.平移长于平行线有关,平移可以将一个角,一条线段,一个图形平移到另一个位置,是分散的条件集中到一个图形上,使问题得到解决。平移作图的步骤:(1)找出能表示图形的关键点;(2)确定平移的方向和距离;(3)按平移的方向和距离确定关键点平移后的对应点;(4)按原图的顺序,连结各对应点。 定义:在平面内,将一个图形绕一点按某个方向转动一个角度,这样的运动叫做图形的旋转。这个定点叫做旋转中心,转动的角度叫做旋转角。图形的旋转是图形上的每一点在平面上绕着某个固定点旋转固定角度的位置移动,其中对应点到旋转中心的距离相等,对应线段的长度、对应角的大小相等,旋转前后图形的大小和形状没有改变。图形旋转性质:(1)对应点到旋转中心的距离相等。(2)对应点与旋转中心所连线段的夹角等于旋转角。旋转对称中心把一个图形绕着一个点旋转一定的角度后,与原来的图形相吻合,这种图形叫做 旋转对称图形,这个定点叫做 旋转对称中心,旋转的角度叫做 旋转角。(旋转角大于0°小于360°)
发现相似题
与“如图所示是“俄罗斯方块”游戏的一个画面,若使左上角的图案经过平..”考查相似的试题有:
367949301029390373387052371296909220俄罗斯方块,方块怎么移动?【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:563,640贴子:
俄罗斯方块,方块怎么移动?收藏
大一,学C语言2个月了,老师还慢腾腾的讲到指针,现在在基地的老师叫我们新生在两周之内编出俄罗斯方块,然后可以进里面去培训。有一点点的小思路了,但要把思路转成代码,还是不知从何下手 。而且怎么移动方块和消行呢?还有计时?求指点。
二级c语言全网优先更新,海量热门小说免费看,现在二级c语言免费中,还送20元代金券!
小的只会单片机C语言:::方块的移动,有没有管图形坐标的函数你们,或者是显示图形的时候有坐标的参数,计时,有没有指令周期你们?~~~搞不懂搞不懂撒
你怎么写的?
什么学校啊 讲那么快。。
建议学windows编程 就可以做小游戏了
我也在看这些书
移动 做个定时器,每发送一个TIMER更改下坐标,再重新绘制一遍位图。做游戏要学会贴图,很重要。
去看看我的帖子吧。。。叫手把手教你贪吃蛇。。。一个道理
貌似当初我们也是一开始就撸这货。。我第一个版本是只能下落不能移动和消行的。。当初的思路么。。刷屏!
计算下落位置再清屏,光标复位,再把画面输出一次,计时用time.h里的函数就可以了
据说这个用java更简单。。。。
自学编程,零基础怎么学习?如何系统,科学地学习编程,成为一名程序员...
额 给你个函数kbhit()
在旧的坐标上擦除图形,在新的坐标上显示图形。建议去图书馆结束看看人家的实例
楼主你应该先说明你的开发环境还有可以使用的图形库 如果没有图形库估计这里没有几个人能帮的了
登录百度帐号推荐应用《俄罗斯方块》诞生30周年 移动版下载量4.25亿次
16:43:37&&游侠原创:和平月&&浏览量:加载中...&&
【游侠导读】转眼之间,《俄罗斯方块》已经要迎来它的三十岁纪念日了,曾经给我们童年带来无尽欢乐的经典,即便到现在也有无数追捧者,4.25亿次,数字说明了一切。
  《俄罗斯方块(Tetris)》在移动平台的累计付费下载量已经达到了4.25亿次。发布这条消息的是Henk Rogers,上世纪八十年代末,他从这款永恒的经典游戏的发明人Alexey Pajitnov手中购得了发行权,之后把游戏带到了任天堂游戏机上。
  在费城科技周期间,Rogers对媒体说道:&我们已经有了4.25亿次的移动付费下载量。这仅仅是在移动通讯设备上。原来的Game Boy上的发售量是3500万次,把各种零售版算在类,之前的总发行量应该在7000万份左右。&应该说,移动版大大提升了《俄罗斯方块》单一版本的销量记录。就像这位《俄罗斯方块》公司总裁所强调的,这个数字超过了&过去14年&的销量总和。
  Rogers还强调,这4.25亿还不包括免费版,他说:&我们现在有《俄罗斯方块:闪电战》。EA取得了移动版的版权,他们已经决定开发一款类似《宝石迷阵:闪电风暴》的免费制游戏。那更是在这4.25亿次之外的事了。&
  《俄罗斯方块》是日问世的,今年正好是它30岁的生日。这款游戏至今仍是史上最受欢迎、最成功且最有生命力的电子游戏之一。
  近期,育碧宣布与《俄罗斯方块》公司合作,他们将把这个经典游戏带到PS4和Xbox One上。
提示:支持键盘“← →”键翻页
<div class="new_ds" id="No_
扫描关注游侠网
热门资讯排行
精品手机游戏
热门游戏专题
赛车竞速RAC(英文)
动作游戏ACT(英文)
角色扮演RPG(中文)
小游戏在线玩博客分类:
Bug已经Fix~~
注释已经补充
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Terris extends JFrame implements Runnable, KeyListener {
private short isPlaying=0/*是否游戏,声明*/,xOffSet = 3/*当前方块的横坐标*/, yOffSet = 0/*当前方块的纵坐标*/, blockType = (short) Math.round(Math.random() * 6)/*随即初始方块类型*/, blockRotation = 0/*初始方块旋转角度*/, blockColor = (short) Math.round(Math.random() * 5)/*随即初始方块颜色*/;
private short matrix[][] = new short[21][10];/*整个画布21*10的矩阵*/
private short block[][][][] = {{{{ 0, 1, 0, 0 },{ 0, 1, 0, 0 },{ 0, 1, 0, 0 },{ 0, 1, 0, 0 }},/* l */{{ 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 0, 0, 0, 0 },{ 0, 0, 0, 0 } } },/*-*/{{ { 0, 0, 0, 0 }, { 1, 1, 0, 0 }, { 0, 1, 1, 0 },{ 0, 0, 0, 0 } },/* z */{ { 0, 0, 0, 0 }, { 0, 0, 1, 0 }, { 0, 1, 1, 0 },{ 0, 1, 0, 0 } } },/* z| */{{ { 0, 0, 0, 0 }, { 0, 1, 1, 0 }, { 1, 1, 0, 0 },{ 0, 0, 0, 0 } },/* xz */{ { 0, 1, 0, 0 }, { 0, 1, 1, 0 }, { 0, 0, 1, 0 },{ 0, 0, 0, 0 } } },/* xz| */{ { { 0, 0, 0, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 0, 0, 0 } } },/** []*/{{ { 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 0, 0, 0 }, { 1, 1, 1, 0 }, { 0, 0, 1, 0 },{ 0, 0, 0, 0 } },{ { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 1, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 1, 0, 0, 0 }, { 1, 1, 1, 0 }, { 0, 0, 0, 0 },{ 0, 0, 0, 0 } } },/* f */{{ { 1, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 0, 1, 0 }, { 1, 1, 1, 0 }, { 0, 0, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 1, 0 },{ 0, 0, 0, 0 } },{ { 0, 0, 0, 0 }, { 1, 1, 1, 0 }, { 1, 0, 0, 0 },{ 0, 0, 0, 0 } } },/* xf */ {{ { 0, 1, 0, 0 }, { 1, 1, 1, 0 }, { 0, 0, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 1, 0, 0 }, { 0, 1, 1, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 0, 0, 0 }, { 1, 1, 1, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, 1, 0, 0 }, { 1, 1, 0, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } } } };/* t *//*保存所有方块的4维矩阵,分别是:方块类型、方块旋转、方块x坐标、方块y坐标*/
private Image[] images = {new ImageIcon("D:/Java/eclipse/workspace/Terris/src/img/Red.gif").getImage(),new ImageIcon("D:/Java/eclipse/workspace/Terris/src/img/Blue.gif").getImage(),new ImageIcon(("D:/Java/eclipse/workspace/Terris/src/img/Pink.gif")).getImage(),new ImageIcon(("D:/Java/eclipse/workspace/Terris/src/img/BBlue.gif")).getImage(),new ImageIcon(("D:/Java/eclipse/workspace/Terris/src/img/Orange.gif")).getImage(),new ImageIcon(("D:/Java/eclipse/workspace/Terris/src/img/Green.gif")).getImage(),new ImageIcon("D:/Java/eclipse/workspace/Terris/src/img/Red.gif").getImage()};/*各种颜色方块图片*/
public Terris() {
setSize(160, 335);/*窗口大小*/
setVisible(true);/*可视*/
createBufferStrategy(2);/*对当前窗口创建双缓冲*/
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*设置关闭按钮事件*/
addKeyListener(this);/*添加按键响应*/
public void paint(Graphics g) {
Graphics tg = this.getBufferStrategy().getDrawGraphics();/*获取后台缓冲画布*/
tg.fillRect(5, 30, 150, 340);/*涂黑背景*/
for (int i = 0; i & 21; i++)
for (int j = 0; j & 10; j++) {
if (matrix[i][j] != 0)
tg.drawImage(images[matrix[i][j]], j * 15 + 5, i * 15 + 15,null);/*根据后台背景的矩阵绘制已经固定的各方块*/
if (i & 4 && j & 4&& block[blockType][blockRotation][i][j] != 0)
tg.drawImage(images[blockColor + 1],((j + xOffSet) * 15) + 5,((i + yOffSet) * 15) + 15, null);/*绘制当前能控制的方块*/
this.getBufferStrategy().show();/*切换后台画布到前台显示*/
public static void main(String[] args) {
new Thread(new Terris()).start();//初始化界面并创建启动游戏线程
public void run() {
while (isPlaying==0)/*当游戏正在进行 不断下落*/
if (check(0, 0, 0, 1))/*最后一个参数1 是下落 表示下落一格 其他参数见下面的注释*/
yOffSet += 1;/*如果能下落 y坐标+1*/
else {/*如不能下落 说明到底了*/
if (yOffSet == 0) {/*如果当前是第一个方块 游戏结束*/
isPlaying = 1;
/*不再循环*/
freezeAndNew();/*将当前控制的方块合并到背景矩阵中 并初始化新的方块*/
repaint();/*重绘画布*/
Thread.sleep(600);/*线程sleep 可以修改作为难度*/
} catch (InterruptedException e) {/*无用*/
private boolean check(int left, int right, int up, int down) {/*判断方块是否可以左右移动、下落、旋转 都合并到一个方法中了 四个参数分别代表要判断左移、右移、旋转、下落 如果对应方向有动作 则传入1 没有动作传入0 在判断时直接计算参数值即可 而不考虑传入的具体值是1还是0*/
for (int i = 0; i & 4; i++)
for (int j = 0; j & 4; j++)
if (((xOffSet + j - left + right & 0 || xOffSet + j - left+ right &= 10) && block[blockType][((blockRotation + up) &= block[blockType].length ? 0: (blockRotation + up))][i][j] != 0)|| ((yOffSet + i + down &= 21) && block[blockType][((blockRotation + up) &= block[blockType].length ? 0: (blockRotation + up))][i][j] != 0)|| (block[blockType][((blockRotation + up) &= block[blockType].length ? 0: (blockRotation + up))][i][j] != 0 && matrix[yOffSet+ i + down][xOffSet + j - left + right] != 0))
private synchronized void
freezeAndNew() {/*方块到底 固定到背景矩阵 并初始化新方块*/
boolean[] clear = new boolean[]{false,false,false,false};/*是否可以消行的数组 每个方块4*4 只需判断方块所在的4行即可*/
for (int i = 0; i & 4; i++){
for (int j = 0; j & 4; j++)
if (block[blockType][blockRotation][i][j] != 0)/*循环将方块的1赋值到背景的矩阵中 方块4*4中的0 没有方块的地方不复制*/
matrix[i + yOffSet][j + xOffSet] = (short) (blockColor + 1);/*根据当前方块颜色复制到背景 可修改为灰色*/
clear[i]=i + yOffSet&=matrix.length?false:(matrix[i + yOffSet][0]!=0&&matrix[i + yOffSet][1]!=0&&matrix[i + yOffSet][2]!=0&&matrix[i + yOffSet][3]!=0&&matrix[i + yOffSet][4]!=0&&matrix[i + yOffSet][5]!=0&&matrix[i + yOffSet][6]!=0&&matrix[i + yOffSet][7]!=0&&matrix[i + yOffSet][8]!=0&&matrix[i + yOffSet][9]!=0);/*一次判断一行0~9个方块是否有值 有值 复制到消行数组为true*/
for(int i=0;i&clear.i++)
if(clear[i])/*如果消行*/
for(int j=yOffSet+i;j&0;j--)
System.arraycopy(matrix[j-1],0,matrix[j],0,10);/*循环从当前行依次把上面一行复制下来 下落效果*/
yOffSet = blockRotation = 0;/*消行结束 下面几行是初始化新方块 xy方块类型 旋转 颜色*/
xOffSet = 3;
blockType = (short) Math.round(Math.random() * 6);
blockRotation = (short) Math.round((Math.random() * (block[blockType].length - 1)));
blockColor = (short) Math.round(Math.random() * 5);
public void keyPressed(KeyEvent e) {// 38-上 40-下 37-左 39-右
if ((e.getKeyCode() == 65 || e.getKeyCode() == 37) && check(1, 0, 0, 0)&&isPlaying==0) {// left/*左移 传入判断方块是否能移动的方法 第一个参数传1 其他传0*/
xOffSet--;/*能左移 x减1*/
} else if ((e.getKeyCode() == 68 || e.getKeyCode() == 39)&& check(0, 1, 0, 0)&&isPlaying==0) {// right/*类似上面 右移第二个参数传1 其他0*/
xOffSet++;/*能右移 x加1*/
} else if ((e.getKeyCode() == 87 || e.getKeyCode() == 38)&& check(0, 0, 1, 0)&&isPlaying==0) {// up
blockRotation = (short) ((blockRotation + 1) &= block[blockType].length ? 0: (blockRotation + 1));/*能旋转 根据当前方块类型进行旋转 如果到最后一个角度 回到0 继续旋转*/
} else if ((e.getKeyCode() == 83 || e.getKeyCode() == 40)&& check(0, 0, 0, 1)&&isPlaying==0) {// down
yOffSet += 1;/*能下落 y加1*/
} else if((e.getKeyCode() == 83 || e.getKeyCode() == 40)&& isPlaying==0)
freezeAndNew();/*不能下落 固定 并消行 新方块*/
repaint();/*移动事件触发重绘*/
public void keyReleased(KeyEvent arg0) {/*无用*/
public void keyTyped(KeyEvent arg0) {/*无用*/
//作者:/blog/595321
转载请注明出处
论坛回复 /
(27 / 20820)
哈哈 见笑了 目的不是写俄罗斯 是看只用100行代码能写出什么东西 挑战一下 图片是15*15 这个可是最高境界了,100行代码想写多少东西,我觉得你可以用python试试,兴许一个DBS都可以写出来。哈哈,不过见识了,写的很漂亮,哈哈
vividemon 写道研究了一下午……,给楼主提个简化的地方第65,66行可以稍微简化一下
for(int j=yOffSet+i;j&0;j--)
System.arraycopy(matrix[j-1],0,matrix[j],0,10); 变成
System.arraycopy(matrix, 0, matrix, 1, yOffSet+i);
还有我上面说的bug 还是没找到原因,时有时无的。我用的Linux下的jdk ,不会跟平台有关吧…… 呵呵 多谢提醒啊.. arraycopy还能这么用啊 还有地方可以简化 估计还能缩个5行左右 这个bug我也没研究明白原因 可能是双缓冲的地方 研究下 这个问题解决了就没有bug了应该 代码加上注释的话会更好些, 注释是习惯,读者可一目了然啊!
研究了一下午……,给楼主提个简化的地方第65,66行可以稍微简化一下
for(int j=yOffSet+i;j&0;j--)
System.arraycopy(matrix[j-1],0,matrix[j],0,10); 变成
System.arraycopy(matrix, 0, matrix, 1, yOffSet+i);
还有我上面说的bug 还是没找到原因,时有时无的。我用的Linux下的jdk ,不会跟平台有关吧…… 呵呵 多谢提醒啊.. arraycopy还能这么用啊 还有地方可以简化 估计还能缩个5行左右 这个bug我也没研究明白原因 可能是双缓冲的地方 研究下 这个问题解决了就没有bug了应该
n年前学编程1个月的时候就写了俄罗斯方块。没bug。楼主不错,快赶上我学编程1个月的功力了,哈哈。。。哈哈 见笑了 目的不是写俄罗斯 是看只用100行代码能写出什么东西 挑战一下 图片是15*15
& 上一页 1
wangshu3000
浏览: 96412 次
来自: 大连
datawarehouse 写道ngix 淘宝是基于这个开发了 ...
ngix 淘宝是基于这个开发了一个自己的webserver吧。 ...
我运行报错,,楼主能解答一下G,对swing不熟。
raphi ...
楼主写出例子了么?物理碰撞部分可能跟你说的差不多渲染部分可以搜 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 俄罗斯方块 的文章

 

随机推荐