俄罗斯方块范文(精选8篇)
俄罗斯方块 第1篇
俄罗斯方块是一款非常受欢迎的游戏, 这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的, 它的规则简单, 容易上手, 且游戏过程变化无穷, 它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。
Visual Basic (简称VB) 是Microsoft公司成功的程序开发语言新产品之一, 它提供了开发Window应用程序的最迅速, 最简捷的方法。
本文将Visual Basic 6.0作为开发工具, 开发一个基于Windows下的俄罗斯方块游戏, 在设计过程中使用了大量的算法和API函数, 实现了俄罗斯方块游戏的全部功能。
二、设计分析
随机给出不同的形状 (长条形、Z字形、反Z形、田字形、7字形、反7形、T字型) 下落填充给定的区域, 若填满一条便消掉, 记分, 当达到一定的分数时, 过关, 设置十关, 每关方块下落的速度不同, 若在游戏中各形状填满了给定区域, 则为输者。
用户界面中, 显示玩家姓名、级别、得分和消行数。让方块在一定的区域内运动和变形, 这个区域为Picture Box控件, 该区域为长方形, 是一个有10个方块宽, 20个方块高组成的区域, 所以用一个1020的二维数组total来存储固定方块。例如:total (1, 2) =true, 表示在第一行第二列处有个固定的小方块。
本文使用了资源文件RES来保存各种方块的图像。涉及的方块有七种, 分别如下:
每种方块本质上为4个小方块组成的正方形。总共有7种, 比如有“田”字形, “7”字形的等等。每种方块有四种旋转变化, 每种方块只有一个ID。因为对于一种方块来说, 其颜色是固定的。每种方块又可以通过旋转而变化出1到4种形状。
例如:”7”字形的四种旋转变化为:
键盘处理事件:方块下落时, 可通过游戏提供的控制按键对该方块进行变形、加速、向左、向右移动等操作。
显示需求:当不同的方块填满一行时可以消行, 剩余方块向下移动并统计分数。
三、设计与实现
从游戏的基本玩法出发, 各种显示方式的实现通过资源文件RES来保存各种方块的图像, 每个方块有一个ID号, 通过调用ID号来使用。首先通过随机函数生成方块并且在窗体中提前展示给玩家, 然后将展示的方块复制到游戏窗体中进行摆放, 在游戏窗体中玩家可以通过键盘的按键来控制方块的运动, 各种方块运动方式包括:下降时左右移动、翻转, 其中翻转又根据不同的方块有不同的翻转次数。当方块不能再下落定后, 对每一行进行判断, 如果有某行的方块是填满的, 则消除这行的方块, 并且上面的所有方块下移。总程序流程图如图1所示。
如图2所示为设计的游戏的界面, 游戏开始界面中有三个按钮, 点击“开始游戏”按钮, 进入游戏主界面;点击“游戏帮助”按钮, 显示帮助界面;点击“退出游戏”按钮, 退出本游戏。
游戏主界面分为两个部分, 左右对称, 左边的为玩家1, 右边的为玩家2。首先在左半部分, 放入一个Picture Box控件为玩家的游戏区域。再分别放入Frame控件、Picture Box控件和Image控件作为显示下一个要下落的方块。然后加入若干个Label控件用来显示玩家的信息, 分别为玩家的姓名、级别、得分和消行数。
四、总结
整个游戏实现了俄罗斯方块游戏的基本功能以及音效效果。同样游戏还存在很多不足和需要改进的地方, 如:第一, 两个玩家玩游戏时, 没有什么互动的环节。第二, 无法根据个人习惯进行自定义按键。第三, 未能实现多人玩游戏。第四, 当双人玩游戏时, 未能进行成绩的排行。
摘要:俄罗斯方块是一款非常受欢迎的游戏, 它的出现为我们带来了许多的快乐, 并且操作简单, 老少皆宜, 一时间成为了许多PC的必备游戏。本文使用算法和API函数, 利用VB中各种控件来实现此游戏。该游戏既可以单人玩, 也可以双人玩, 并且可以选择游戏级别。在玩游戏的过程中可以选择暂停游戏和继续游戏。
关键词:Visual Basic,游戏,俄罗斯方块,算法
参考文献
[1]邵洁.Visual Basic程序设计[M].南京:东南大学出版社, 2006.15-18.
[2]王晓敏, 李海波, 杨红兵.Visual Basic程序设计[M].北京:中国铁道出版社, 2003.15-18.
[3]王天华, 万缨.Visual Basic程序设计实用教程[M].北京:清华大学出版社, 2006.
[4]洪锦魁.精通Visual Basic 6.0中文版[M].北京、广州、上海:世界图书出版社, 2000.
[5]张海藩.软件工程导论[M].北京:清华大学出版社, 2003.
[6]龚沛曾, 陆慰民, 杨志强.Vsual Basic程序设计教程[M].北京:高等教育出版社出版, 2004.
[7]刘新民, 蔡琼, 白糠生.Vsual Basic 6.0程序设计[M].北京:清华大学出版社出版, 2003.
[8]刘渝妍.利用VB开发俄罗斯方块游戏应用程序[J].重庆工学院学报, 2000.47-49.
[9]唐凯军, 汤惠.80例上手VB6编程[M].山东:山东电子音像出版社, 2002.
高考满分你作文-俄罗斯方块 第2篇
正文:生活照的俄罗斯方块
玩过俄罗斯方块的人都明白这个道理:要想达到游戏的成功之顶,就要学会“取长补短”。游戏如此,生活又何尝不是这样?
长短脚之恋
《吕氏春秋?不广》中记载了一种前腿如鼠,后腿如兔的奇怪动物蛰蹶,长短不一的脚使它举步维艰。但它却经常利用自己的利齿采噬植草给一种叫蛩蛩距虚的动物它没有利齿,却有强壮的四肢,于是山火来时,蛩蛩距虚便把蛰蹶负于背上,共同逃难。
动物的生存繁衍未尝不是一种智慧,为了生存而取长补短是大自然的法则,是生活中心领神会的潜台词,更是获取成功的不二法门。
魏玛城佳话
歌德与席勒的友情是足以照彻欧洲文学史半边天空的传奇。年长成熟的歌德给了席勒安定的呵护,而年轻激越的席勒给了歌德新的创作热情,于是《浮士德》跃出水面,它的光焰穿过历史的黑暗点亮了今天的天空。
倘若没有魏玛城中的相遇、相知、相辅相成,歌德也许仍限于琐杂的政务中,而席勒也许已在困窘的生活面前湮没无闻。无法想象,没有他们,十九世纪的文化星空将会黯淡到何种地步。更无法想象,他们若是走上互相牵绊的歧途毕竟,天才与天才相遇总不乏竞争历史又会是如何面目的 篇章。
结语:异种求和
翻看着生活的札记,顿悟:
无论自然,还是人生,我们无一不在竞争中寻求那和谐的一点:双赢化异中之抵触为和中之互补。《中庸》有言:“和者,天下之大本也。”但我们在累积生活的俄罗斯方块时,难免遇到相互间的积压、碰撞,但我们只要找到长短相补的地方,就一定能筑起共同的新高度。就会如朱熹与张栻一样,“相与博约,又大进焉”。
玫瑰与花刺相遇,各自告别了俗艳与尖刻,成就了傲视群芳的铿锵战将。
乔丹与皮蓬相遇,各自告别了独角戏与狂傲腔,成就了历史上的神话公牛。
“俄罗斯方块”人生 第3篇
人生如戏,如果把这个“戏”解读为“游戏”,你首先会想到哪种游戏?跳马困住对方的象,杀卒削弱对手的右翼,把对手逼进死角……这是象棋,黑子与白子对弈,非赢即输;重复下落的方块,毫无赢的可能,唯一变化的是方块出现和下落的速度……这是俄罗斯方块。这两种游戏到底哪种更像你的人生?
1. Tetris: 俄罗斯方块。
2. perseverance: 耐性;critical thinking: 批判性思考;crucial: 关键性的;tackle: 处理。
3. wire: v. 把……联入。
4. knight: (国际象棋中的)马;bishop: (国际象棋中的)象。
5. pawn: (国际象棋中的)兵,卒。
6. checkmate: 将死。
7. introduce: 引进。
8. versus: 与……相对。
9. 每一局比赛都是零和博弈——总分只有一分,要么打平,要么独吞。zero sum: 零和的,指一方得益与另一方受损相当。
10. 利益无法扩大。
11. utility: 效用。
12. flip phone: 翻盖手机。
13. snapchat: “阅后即焚”,由斯坦福大学两位学生开发的一款照片分享应用,用户将照片发送给好友后,这些照片会根据用户所预先设定的时间按时自动销毁。
14. boredom: 无聊。
15. addicted: 上瘾的。
16. incarnate: 化身的。
17. representation: 代表。
18. opponent: 对手。
19. mindset: 思维模式。
20. hold back: 阻止。
21. 这个游戏的思维模式是内在的意念集中——你在挑战自己,把一连串随机输入正确转变为有序的结构组成。internally: 内在地;manipulate: 操纵,控制;random: 随机的;configuration: 结构,布局。
22. assign: 分配,把……归咎于。
23. infinity: 无穷大。
24. stake: 赌注。
25. public rating: 公众评级。
26. run out of: 用完。
27. fatigue: 疲惫。
28. algorithm: 算法;optimal: 最佳的。
29. simultaneously: 同时地。
30. compromised: 妥协的。
31. prescription: 对策,解决方法。
32. constraint: 限制;dumb luck: 不费多少心思和力气得来的好运。
33. identical: 完全相同的。
34. fool into: 骗(某人)做……。
35. predetermined: 预先确定的。
36. hard-wired:(生理和心理特征)固有的,根深蒂固的;causality: 因果关系。
37. one in a billion: 极稀有的人或事。
38. predictable: 可预见的。
39. 我们的生命是个开放的系统,很多难以察觉的事物会改变我们的观点和看法。any number of: 许多;unobservable: 难以察觉的;outlook: 人生观; perspective: 观点。
40. calculable: 可计算的。
41. tip over:(使)倒翻; resignation: 投降,其动词原形为resign,意为“(象棋中的)投降”。
42. tournament: 锦标赛。
43. millennium: 一千年,复数为millennia。
44. void: 空白。
45. metric: 衡量标准。
46. uncompromising: 不妥协的。
47. set out to: 打算做。
48. persevere at: 锲而不舍(做某事)。
From the age of seven, I played chess constantly and competitively. I played in school, online, at national competitions. Chess taught me patience, perseverance, critical thinking—crucial skills for tackling life’s hard problems and difficult situations.2
Chess wired3 me to think causally at a young age. Move your knight here; you’ll trap his bishop.4 Capture that pawn5; you’ll weaken his right side. Every correct move led me closer to a checkmate6; every false step brought me closer to defeat.Chess also introduced7 the idea of the “other”. Black versus8 white. Our school versus theirs. And every game was zero sum—there was only ever one point to score, either to be shared or taken in its entirety.9 No way to grow the pie.10
nlc202309081831
I played chess seriously until the age of 15, around the time I got my first cell phone. The cell phone was a significant mark of freedom for a teenager, even though it lacked real utility11. I remember it well—a small flip phone12 with a color screen. I carried it everywhere with me as a symbol of my independence. My phone couldn’t access the internet or send a Snapchat13, but I found it could kill boredom14 with its one included game: Tetris. And I became addicted15.
Tetris, to some, is frustration incarnate16. It’s repetitive! It’s impossible to win! It’s driven by luck! But to me, it became the truest representation17 of life there is. In comparison, chess is just a silly war game. I don’t play chess competitively anymore. But to this day, Tetris is the only game on my phone. It sits on the front page of my apps, a constant reminder that life is Tetris, not chess. I’ll make this distinction clear in four simple points. Maybe you’ve been playing the game wrong too.
1. In life, your only opponent18 is yourself.
I grew up looking for opponents—people to fight, people to blame, people to prove wrong. I imagined enemies when there were none because fighting was easy. I treated everything like it was zero-sum when there was so much else to gain. That’s the chess mindset19. And it holds you back20.
In Tetris, you’re only playing against time and the never-ending flow of pieces from top to bottom. The mindset is internally focused—you are challenging yourself to correctly manipulate a random stream of inputs into an orderly configuration.21 There’s no final boss. No blame to assign22.
The real game of life is completely internal. There really are no big, bad enemies who exist to make you suffer. There is no absolute right or wrong move that a certain opponent can punish. And your score can increase to infinity23, if you just push yourself harder. Your life score can increase slowly or quickly, depending on how hard you push yourself.
2. In life, things don’t get harder—they just get faster.
Some games get harder the longer you play, including chess. Positions get more complicated, opponents become more challenging, the stakes24 increase. You have a public rating25, and thus more to lose when you play the same opponents.
Not Tetris. The game remains the same from Piece One until you run out of26 space on the screen. The only thing that changes is the speed. If you played Tetris at the slowest possible speed for the rest of your life, you could possibly never lose. The only enemy would be fatigue27. But the algorithm for beating Tetris is not complicated, and you have plenty of time to move the pieces to their optimal locations.28
nlc202309081831
In Tetris, more often than not, we challenge ourselves. We are not content with simply making one row at a time. We push ourselves to get a Tetris—four rows simultaneously29. It’s the name of the game. Why bother playing if you don’t go for it?
The only way to master life—like Tetris—is to learn to play with the same self-control at the highest speeds.You can’t allow your goals to be compromised30, no matter the pace at which you move. You must control your own mind, your own behaviors, and your own time.
3. In life, you can’t control the board.
As I mentioned earlier, chess is causal. There is a “best move” for any given position. You can force your opponent into a corner. You can see 20 moves into the future, if you’re a supercomputer. Chess comes with a set of prescriptions31 and best practices. That’s because chess is a closed system. There’s no random constraints, no dumb luck.32 The pieces always move the same, and the starting position is always identical33.
Tetris? You only know what the next piece is. You play for the present moment, trying to construct the best possible configuration of pieces, knowing that it is impossible to predict the situation even two pieces from now. You don’t get fooled into34 thinking you can control the future.
I spent much of my life in that chess mindset, trying to find the best possible play or force my way toward a predetermined35 conclusion. I was hard-wired to see causality all around me and to seek control.36 But real life isn’t causal. There is always a distribution of possible events. Things happen that are one in a billion37. There is no direct, predictable38 response to our actions. Our lives are open systems, where any number of unobservable events can change our outlooks and perspectives in moments.39 Even life’s biggest decisions are hardly calculable40—that’s why lots of marriages end in divorce.
4. In life, no one tells you when you’ve won.
In chess, you’ll get to see your opponent tip over his king in resignation.41 You’ll see the final tournament42 scores posted. You’ll feel the satisfaction of victory—unless, one day, you don’t. I remember the day I quit chess. I didn’t get beaten and give up in frustration. In fact, I won a tournament. And afterwards, I felt nothing.
According to the millennia43-old rules of chess, there’s only two ways to lose—get checkmated, or resign. The day I quit chess, I came up with another. If I wasn’t learning, if I wasn’t enjoying the struggles or victories, I had already lost.
nlc202309081831
Meanwhile, Tetris began to fill my gaming void44. I play Tetris every day, and every day I pick up the game knowing that I will lose. How long will I play before I lose? How fast will the pieces go? How much will I score? Those are the metrics45 the game tracks. But I added a way to win—if I play Tetris every day.
I enjoy being uncompromising46 in setting goals for myself. I get great satisfaction from knowing that I can regularly set myself a personal challenge and attack it daily. Whether I accomplish what I set out to47 achieve, only I know. Playing Tetris every day builds my determination, my focus, my will to persevere at48 things I know have no conclusion. And I don’t play to win—I play to play.
We should all be playing life to play. We shouldn’t only see our enemies or seek to control. We must understand that this is simply a matter of perspective. Chess can be a lonely game—but so can Tetris. Both require patience and determination. Both require an open mind. You and you alone get to choose how you play your life. Try to play the right game.
一种基于玩家水平的俄罗斯方块游戏 第4篇
俄罗斯方块是俄罗斯人阿列克谢帕基特诺夫1985年发明的游戏, 至今仍风靡全球, 俄罗斯方块也被公认为是有史以来最畅销的游戏[1]。俄罗斯方块游戏区域又称为游戏板, 标准俄罗斯方块游戏的大小为10行20列, 且有7种不同类型的游戏方块, 每一种方块占据游戏板4个小方格。为了获得更多的分数, 玩家必须尽可能地消去方块。关于俄罗斯方块的玩法以及其它各方面的详细内容, 可以访问Fahey的网站[2]。
当前数字娱乐市场上绝大部分俄罗斯方块游戏都是通过一个随机数生成器产生方块, 这种传统的方块产生方法有以下缺陷:1每种方块产生的次数可能会极其不平均。游戏如果使用这种方法很可能会出现玩家一直在等待某种方块, 或者游戏一直连续产生某种相同方块的情况, 这样会极大降低玩家的游戏体验;2Csikszentmi- halyi[3]在他的心流理论 (Flow Theory) 中定义心流是一种将个人精神力完全投注在某种活动上的感觉, 心流产生时会有高度的兴奋及充实感。Sweetser和Wyeth[4]把心流理论引进游戏设计领域, 提出了GameFlow理论。根据GameFlow理论, 玩家进入GameFlow状态有8个因素, 其中最关键的是玩家技能和游戏难度需要达到一种平衡。 游戏刚开始时, 方块的下落速度是最慢的, 很多熟练或者高手玩家会对游戏难度过小感到极度无聊, 这样的情况同样也会降低玩家的游戏体验。
为解决以上缺陷, 目前有一小部分俄罗斯方块游戏采用包随机生成器 (Bag Randomizer) 的方法产生方块, 文献[5]详细介绍了此种方法。此外TMG版本的俄罗斯方块[6]采用历史记录生成器 (History Roll Randomizer) 的方法产生方块, 具体的方块产生方法可以参考文献[7]。
本文的主要内容是提出了一种新颖的游戏方块产生方法, 这种方法基于俄罗斯方块游戏AI, 且能适应不同水平的玩家。游戏把玩家水平分成7个等级, 根据玩家水平产生相应的方块, 使用这种方法的俄罗斯方块不但避免了传统俄罗斯方块产生方法的缺陷, 而且能使玩家迅速进入游戏状态, 获得更好的游戏体验。
1俄罗斯方块游戏AI核心思想
俄罗斯方块游戏AI的核心思想在于如何摆放每一个方块。本文定义当前方块找到任意一个下落点的行为称作此方块的一个动作, 而方块最终执行的动作称为此方块的决策。在俄罗斯方块游戏AI中, 每一个方块寻找最终下落点的过程都是由此方块所有可能动作的评估值决定的。游戏AI会在当前方块所有可能的动作中选择一个评估值最高的动作当作此方块的决策。但是在很多情况下, 游戏AI很难确定每一个动作具体的评估值, 这时可采取另一种方法来评估这个动作:评估游戏执行完这个动作后的游戏板状态。图1说明了游戏AI对当前方块每个动作的评估过程。游戏AI会执行一种贪心策略, 每一步总是寻找评估值最高的动作作为自己的最终决策。
研究者通常使用俄罗斯方块的游戏特征来评估一个游戏板的好坏。目前基于俄罗斯方块的游戏特征大约有30几种, Christophe Thiery[8]对所有的俄罗斯方块游戏特征进行了总结。研究者经常用到的特征有很多, 例如所有已放置方块的最大高度、当前下落方块的高度、当前动作消去的方块行数等。几乎所有的优化算法都要使用特征和评估函数。
如果用fi表示计算特征值的函数, N表示使用特征的数量, w是使用特征的权值, 则游戏板的评估值S可用以下公式计算:
2基于玩家水平的俄罗斯方块
对于玩家而言, 传统俄罗斯方块游戏的难度主要在于游戏越玩到后面, 方块的下落速度越快, 也就是说, 越少量的思考时间越会给玩家造成决策困难。传统的俄罗斯方块游戏通过控制方块下落的速度来控制整个游戏的难度, 而本文提出了一种基于玩家水平动态调整游戏难度的方法。此外, 目前国内外的研究大多集中于如何优化游戏AI, 没有考虑到游戏和玩家的交互, 而现今数字娱乐市场上的俄罗斯方块游戏大多数还是随机产生方块, 未出现主动控制方块生成的方法。
2.1区分游戏玩家水平
在俄罗斯方块游戏中, 玩家水平和很多因素有关。但不论是每次消去行数的多少, 还是游戏时间的长短, 抑或游戏总共消去的方块行数, 归根结底, 玩家水平的不同可由其不同的游戏决策体现。所以可以根据玩家游戏决策的不同将玩家分类, 游戏根据不同玩家的水平产生符合该水平玩家的方块, 从而达到实时调整游戏难度的目的。
本文采用对玩家的每个决策进行评分的方法来区分不同玩家水平。因为游戏AI会选择评估值最高的动作作为决策, 所以可以将当前方块的所有可能的动作按评估值的大小进行排列, 每个动作对应一个分数, 玩家可以根据作出的决策获得该决策相应的分数, 如果玩家选择评估值越高的动作则得分也越高。本文把玩家水平划分成7个等级, 从1级到7级分别对应的玩家水平也是从低到高。 为了能和玩家的等级保持一致, 本文把当前方块所有动作按评估值排序后也划分成7组, 如果玩家选择评估值最高的组的动作可以获得7分, 其它组的得分依次递减, 最后一组的动作得1分。每次出现一个随机方块时, 游戏AI便根据玩家的决策计算一次玩家得分, 最后再根据玩家的平均得分来区分玩家的水平。玩家的平均得分和玩家的水平等级相对应, 如玩家平均得分为5, 则该玩家水平的等级也为5。
2.2产生下一个方块
当游戏开始时, 首先产生一些随机方块把玩家的水平分类, 接下来产生的方块就不是随机生成的, 而是根据玩家的水平相对应生成。此时生成的每一个方块, 游戏先用7个不同的方块分别评估7个方块下落后游戏板的状态, 然后把每个方块评估的结果最大值按照从小到大排列后放入一个数组中, 这个数组本文叫做评估数组。如一个评估数组A可能为O J L I S T Z , 则A[0]= O, A[1]= J, 以此类推。
由于已知玩家的水平等级, 所以现在可以根据玩家水平产生相应方块。假如当前的评估数组是O J L I S T Z, 如果玩家水平的等级为1, 则下一个生成的方块是Z, 这样游戏AI可以根据玩家水平的不同来访问评估数组元素控制方块的生成, 这样也达到动态控制难度的目的。
3实验验证
3.1平台选择
本文的实验平台采用文献[2]中使用的标准俄罗斯方块游戏, 这个平台的最大优势是游戏能在运行中变更使用算法, 国外很多研究者都使用该实验平台进行研究。本实验采用以下6个游戏特征:1Landing Height;2Eroded piece cells;3 Row transitions;4Column transitions;5Holes;6Cumulative。 每个特征的含义可以参看文献[9]。此外本文没有对6个游戏特征进行权值优化, 直接采用了Dellacherie的评估函数:
采用Dellacherie的评估函数是因为Dellacherie使用这6个特征, 手工设置权值, 消去了650 000行方块, 目前这一结果已经是俄罗斯方块AI领域最好的结果。
3.2实验设计
(1) 本实验分成两组, 两组的实验平台都采用文献[2] 中使用的标准俄罗斯方块游戏, 第一组为对照组, 方块随机产生, 也就是当前数字娱乐市场上最流行的俄罗斯方块产生方法, 第二组的方块由本文提到的基于玩家水平的方法产生。实验目的是比较这两种方块产生方法对玩家体验有何不同。
(2) 进行实验时, 安排20位玩家进行游戏, 每位玩家分别体验两组游戏。因为俄罗斯方块每一局的游戏时间较长, 这里限制每位玩家每组游戏只玩5min, 每位玩家结束两组游戏后立即填写问卷调查。
(3) 玩家问卷调查。问卷调查问题分为主观评价和客观评价两部分。主观部分包括游戏的可玩性和趣味性;客观部分主要参考游戏方块产生的两个重要指标设计, 玩家可以结合自己的游戏体验对两组游戏进行客观的评价打分。
3.3实验结果分析
第二组修改过的实验平台如图2所示。第二组游戏根据玩家水平不同, 每下落一个方块, 计算当前游戏板的评估值 (rating) , 产生符合该玩家水平的下一个方块。
本文共收集到20个测试玩家对标准的俄罗斯方块和本文改进过的俄罗斯方块4个评价项目的评价信息, 即4 20=80个得分数据。具体结果如表1所示。
由表1统计结果可知, 第二组的所有评价得分比第一组都有所提高, 原因在于本文改进的俄罗斯方块克服了传统俄罗斯方块的许多弊端。特别值得注意的是, 第二组的趣味性和第一组比起来有大幅提升, 传统的俄罗斯方块由于过于机械、单调, 造成不好的游戏体验, 而第二组的设计根据GameFlow理论, 考虑了玩家技能和游戏挑战这两个元素, 结果有了大幅度提升。这些数据体现了玩家对本文基于玩家水平的俄罗斯方块的认可, 说明利用本方法能够改进传统的俄罗斯方块, 提升其游戏体验, 同时也证明本文研究内容及研究方法的正确性及意义所在。
注:0:很差, 1:不满意, 2:一般, 3:满意, 4:很好
4结语
本文提出了一种新颖的基于玩家水平的方块产生方法, 并且对这种方法进行了验证。正如实验结果所示, 同传统的俄罗斯方块游戏比较, 基于玩家水平的俄罗斯方块游戏具有更好的趣味性和可玩性, 且生成的每一个方块都符合预期的玩家水平。
本文所做的工作还可以进一步改进, 本文的评估数组是基于每一个方块的最大评估值, 但是只给出单个方块并不能保证玩家能找到该方块评估值最高的动作。接下来可以对每一个方块的每一个动作进行评估, 依照每个动作的评估值进行分组, 这样可以使玩家分类达到更高的精确度。此外, 可以引入GameFlow理论其它6个元素来继续优化传统俄罗斯方块, 提高玩家体验。它最后可以继续研究游戏特征选择, 探讨到底选择哪些游戏特征会使玩家得到最好的游戏体验。
摘要:俄罗斯方块一直是人工智能领域的一个研究热点。根据心流理论改进了传统的俄罗斯方块游戏, 提出了一种新颖的基于玩家水平的方块产生方法。这种方法克服了传统方块产生方法的缺陷, 且游戏的可玩性、趣味性、方块的多样性比传统俄罗斯方块都有显著提升, 能给玩家带来更好的游戏体验。
关键词:俄罗斯方块,心流理论,游戏AI,游戏特征
参考文献
[1]NIKO BOHM, GABRIELLA K OKAI, STEFAN MANDL.An evolutionary approach to tetris[C].The Sixth Metaheuristics International Conference, 2005.
[2]COLIN FAHEY.Tetris website[EB/OL].[2012-07-01].http://colinfahey.com/tetris/tetris.html.
[3]CSIKSZENTMIHALYI.Flow:the psychology of optimal experience[M].New York:HARPER PERENNIAL, MARCH 1991.
[4]PENELOPE SWEETSER, PETA WYETH.GameFlow:a model for evaluating player enjoyment in games[J].ACM Computers in Entertainment, 2005, 3 (3) .
[5]Random Generator[EB/OL].[2009-01-06].http://tetrisconcept.net/wiki/Random_Generator.
[6]TGM_series[EB/OL].[2009-03-09].http://tetrisconcept.net/wiki/TGM_series.
[7]TGM_randomizer[EB/OL].[2008-12-18].http://tetrisconcept.net/wiki/TGM_randomizer
51单片机课程设计 俄罗斯方块 第5篇
俄罗斯方块
学院:工程技术学院
专业:08级电子科学与技术
小组成员:
何冠羲,马志祥,李洋,张世刚,叶彪,郑先安,洪之
目录
摘要
引言
1.程序整体思路
2.8X8LED模块显示原理 3.硬件电路仿真图 4.图形显示 5.消层算法 6.旋转算法 7.实物焊接
8.心得体会
附录 程序代码
摘 要
记得在很小的时候,有一种掌上游戏机,里面有一款游戏叫做俄罗斯方块,那时的我们只是简单的按照游戏规则进行“堆积木”,而其中的原理却很少有人去思考,毕竟当时的我们都还很年幼。
基于单片机课程设计的机会,我们这个小组将使用51单片机和8x8led的组合,来实现比较简单的俄罗斯方块设计。
此次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编,后期是进行实物焊接。
论文描述了俄罗斯方块的主要功能函数的实现,算法分析和实物焊接过程中遇到的问题。
关键词:俄罗斯方块;算法; 8X8led;
引 言
游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在“联众俄罗斯方块”中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。
俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。本文利用单片机进行俄罗斯方块设计,采用51汇编语言进行编程,基于汇编语言的原因是在编写程序的过程中,对于程序的执行会有一个比较直观的表现。
1.程序整体思路
单片机上的程序设计一般是一个大循环结构,对于俄罗斯方块的程序设计,首先产生一个伪随机数,其范围是0-6,然后程序根据此数值所对应的图形模块装入ram的固定区域内,紧接着将此图像写入led所对应的显示缓冲区中,显示程序将缓冲区内的内容显示在led上,如果没有控制键按下,图形将自动向下移动。如果有键按下,程序将根据按下的键来改变图形存储区的值,同时程序将判断图形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清楚显示缓冲的内容,游戏重新开始。2.8x8led显示原理
8x8led显示屏的原理图如下
由于人眼的视觉暂留现象,通过逐行扫描显示的方式来显示要显示的内容,当每一行扫描的时间很小时人眼观察的将是一幅完整的图像。
3. 硬件电路仿真图
.4.图形显示
8x8led一共有64个led,可以从下至上一次对其编号,对于显示类的基本操作是任意点亮一个点,熄灭一个点,任意点亮n(0 我们将ram中从21h单元到28h单元作为led的显示缓冲区,这里面的每一位对应led的一个点,led将实时显示缓冲区的内容,也就是当此缓冲区内容一改变,led上看到的也会做出相应的改变。同时在俄罗斯方块中那些方块被存放在一个类似于一维的数组之中,每一个方块对应四个小方块,根据伪随机数将这四个小方块对应的值装入ram固定的区域内。如果要显示方块只需将这些方块所对应的点写入缓冲区。5.消层算法 设置循环变量数R2=8,即总共至少要扫描8次,每一次循环过程中检测此行是否已满,也就是检测这一行所对应的存储单元是否全为一,如果全为一则将消去此行,即将此行对应的ram清零。同时将此行上面ram的内容按每列依次下移,下移完之后重新将R2=0,又从第一行开始检测。此行不全为零时只需将R2=R2+1。直到R2=9消层过程结束。6.旋转算法 首先要确定一个旋转中心,假如旋转中心的编号是34,将34除以8,商是4存入R1余数是2存入R2,及时用商和余数建立坐标系。此时若以此为旋转中心的图形需要旋转,则将每一个小方块对应编号除以8,商减去R1,余数减去R2,而每一个方块一次将旋转90度,所以有公式x1,y1,x2,y2 x2=-y1,y2= x1 其中x1,y1为旋转之前的坐标,x2,y2为旋转之后的坐标。旋转完之后将x2加上R1将y2加上R2,然后将x2乘以8再加上y2。执行四次此过程旋转结束。7.实物焊接 器件:stc51单片机一块,8x8led显示模块一块,电阻10k10个,开关5个,与门,12m晶振一个,电容3个。 首先按照目的进行进行元器件布局,然后按照电路图里的导线的连接次序将元器件焊在电路板上,焊好之后进行调试。8.心得体会 写程序的过程中,首先应该把程序思路理清,然后再写代码,否则写到一半感觉行不通时是很令人心烦的。还有就是焊接是一个技术活,因为在电子工艺实习之后大家便没有碰过电烙铁,所以焊的过程还是很辛苦的。 附录:程序代码 ORG 0000H AJMP START ORG 0003H AJMP INTERRUPT AA EQU 10000000B BB EQU 11111111B HANG EQU 32H LIE EQU 33H COUNT EQU 34H REMOVEROW EQU 35H STEPS EQU 36H XUNHUAN EQU 37H BIANLIANG EQU 38H GRAPHRAM1 EQU 39H GRAPHRAM2 EQU 40H GRAPHRAM3 EQU 41H GRAPHRAM4 EQU 42H XXX EQU 43H YYY EQU 44H KEY EQU 45H LEDHEAD EQU 21H TEST BIT 100 BITS BIT 99 RIGHT BIT 98 LEFT BIT 97 DOWN BIT 96 HARD BIT 95 TURN BIT 94 KEYDOWN BIT 93 TESTING BIT 92 BOTTOM BIT 91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;程序由此处开始执行;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV TCON,#00000001B;;;;;;;;;;;;;设置外部中断0响应方式为下降沿触发 SETB EX0 SETB EA MOV SP,#60H;;;;;;;;;;;;;;;;;;;;;将堆栈指针SP设置在RAM的高地址处 MOV R7,#6;;;;;;;;;;;;;;;;;;;;;;R7作为存放0-6这7个随机数的变量 MOV P0,#11111111B;;;;;;;;;;;;;;;;;;;;;;将P0口最为输入口 LCALL WRITEGRAPHTORAM CLR TESTING GAMELOOP:;CLR EA LCALL SHOWGRAPH MOV R6,#30 TIMING: LCALL SHOWLEDRAM LCALL DJNZ LCALL JNB ABCD: MOV CJNE LCALL LCALL JMP NEXT1:;JB JMP KEY1: CLR CLR MOV CJNE LCALL JB LCALL LCALL LCALL KEY2: CJNE LCALL JB LCALL LCALL LCALL KEY3: CJNE ;LCALL ;JNB DELAY R6,TIMING DOWNTEST DOWN,NEXT1 A,28H A,#0,GAMEOVER REMOVEBLOCK WRITEGRAPHTORAM GAMELOOP KEYDOWN,KEY1 KEY4 TESTING KEYDOWN A,KEY A,#1,KEY2;1-LEFT LEFTTEST LEFT,KEY4 CLEANGRAPH MOVELEFT GAMELOOP A,#2,KEY3;2-RIGHT RIGHTTEST RIGHT,KEY4 CLEANGRAPH MOVERIGHT GAMELOOP A,#4,KEY4;4-ROTATE ROTATIONTEST TURN,KEY4 LCALL CLEANGRAPH LCALL ROTATION JMP GAMELOOP KEY4: CJNE A,#8,KEY5 SWEAT: LCALL DOWNTEST JB DOWN,GAMELOOP LCALL CLEANGRAPH LCALL MOVEDOWN JMP SWEAT KEY5: LCALL CLEANGRAPH LCALL MOVEDOWN INC R7 CJNE R7,#7,NEXT5 MOV R7,#0 NEXT5: JMP GAMELOOP GAMEOVER: MOV R0,#8 MOV R1,#LEDHEAD CLEAR: LCALL CLEANGRAPH MOV @R1,#0 INC R1 DJNZ R0,CLEAR MOV R0,#4 MOV R1,#GRAPHRAM1 ASDF: MOV A,@R1 ADD A,#16 MOV @R1,A INC R1 DJNZ R0,ASDF JMP GAMELOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向下移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DOWNTEST: PUSH 0 PUSH PUSH PUSH PUSH B PUSH ACC MOV R2,#4 MOV R0,#GRAPHRAM1 DOWN0: MOV A,@R0 SUBB A,#8 MOV B,A MOV R3,#4 CLR C MOV R1,#GRAPHRAM1 DOWN2: CLR C SUBB A,@R1 JZ DOWN1 INC R1 MOV A,B DJNZ R3,DOWN2 LCALL TESTBIT JB BITS,DOWN3 DOWN1: INC R0 DJNZ R2,DOWN0 CLR DOWN JMP HOPE DOWN3: SETB DOWN;DOWN WEI YI BIAO SHI BU NENG WANG CPL P3.4 JMP DOWN4 HOPE: MOV R2,#4 MOV R0,#GRAPHRAM1 YOUQIANG2: MOV R3,#1 CCC2: MOV A,R3 MOV B,A CLR C SUBB A,@R0 JNZ CCC1 SETB DOWN SETB BOTTOM JMP DOWN4 XIA YI DONG CCC1: MOV A,B INC R3 CJNE R3,#9,CCC2 INC R0 DJNZ R2,YOUQIANG2 DOWN4: POP ACC POP B POP POP POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;外部中断0中断处理程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INTERRUPT: PUSH 0 PUSH PUSH ACC INC R7 CJNE R7,#7,INTT MOV R7,#0 INTT: SETB TESTING SETB KEYDOWN MOV A,P0 CPL A MOV KEY,A POP ACC POP POP 0 RETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试能否旋转 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向下移动 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVEDOWN: PUSH 0 PUSH PUSH ACC MOV R0,#GRAPHRAM1 MOV R1,#4 MOVE1: MOV A,@R0 CLR C SUBB A,#8 MOV @R0,A INC R0 DJNZ R1,MOVE1 POP ACC POP POP 0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向左移动 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVELEFT: PUSH 0 PUSH PUSH ACC MOV R0,#GRAPHRAM1 MOV R1,#4 MOVE2: MOV A,@R0 CLR C SUBB A,#1 MOV @R0,A INC R0 DJNZ R1,MOVE2 POP ACC POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向右移动 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVERIGHT: PUSH 0 PUSH PUSH ACC MOV R0,#GRAPHRAM1 MOV R1,#4 MOVE3: MOV A,@R0 CLR C INC A MOV @R0,A INC R0 DJNZ R1,MOVE3 POP ACC POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将图形写入RAM缓存中;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEGRAPHTORAM: PUSH ACC PUSH B PUSH 0 PUSH PUSH PUSH MOV R1,#4 MOV A,R7 MOV B,#4 MUL AB MOV R2,A MOV R0,#GRAPHRAM1 MOV DPTR,#GRAPH WRITEGRAPH: MOV A,R2 MOVC A,@A+DPTR;SUBB A,#16 MOV @R0,A INC R2 INC R0 DJNZ R1,WRITEGRAPH POP POP POP POP 0 POP B POP ACC RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试某一个二进制位是否为1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TESTBIT: PUSH 0 PUSH PUSH B PUSH ACC MOV B,#8 DIV AB MOV R0,A MOV A,B CJNE A,#0,TEST3 MOV A,R0 DEC A JMP TEST4 TEST3: MOV A,R0 TEST4: MOV DPTR,#TAB1 MOV R1,#LEDHEAD ADD A,R1 MOV R1,A MOV A,B MOVC A,@A+DPTR ANL A,@R1 CJNE A,#0,TEST1 CLR BITS JMP TEST2 TEST1: SETB BITS TEST2: POP ACC POP B POP POP 0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向左移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LEFTTEST: PUSH 0 PUSH PUSH PUSH PUSH B PUSH ACC MOV R2,#4 MOV R0,#GRAPHRAM1 LEFT0: MOV A,@R0 CLR C SUBB A,#1 MOV B,A MOV R3,#4;CLR C MOV R1,#GRAPHRAM1 LEFT2: CLR C SUBB A,@R1 JZ LEFT1 INC R1 MOV A,B DJNZ R3,LEFT2 LCALL TESTBIT JB BITS,LEFT3 LEFT1: INC R0 DJNZ R2,LEFT0 CLR LEFT JMP LEFT4 LEFT3: SETB LEFT;DOWN WEI YI BIAO SHI BU NENG WANG CPL P3.4 JMP LEFT5 LEFT4: MOV R2,#4 MOV R0,#GRAPHRAM1 YOUQIANG: MOV R3,#9 MOV A,#1 HHH2: MOV B,A CLR C XIA YI DONG SUBB A,@R0 JNZ HHH1 SETB LEFT JMP LEFT5 HHH1: MOV A,B ADD A,#8 DJNZ R3,HHH2 INC R0 DJNZ R2,YOUQIANG LEFT5: POP ACC POP B POP POP POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向右移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RIGHTTEST: PUSH 0 PUSH PUSH PUSH PUSH B PUSH ACC MOV R2,#4 MOV R0,#GRAPHRAM1 RIGHT0: MOV A,@R0 ADD A,#1 MOV B,A MOV R3,#4;CLR C MOV R1,#GRAPHRAM1 RIGHT2: SUBB A,@R1 JZ RIGHT1 INC R1 MOV A,B DJNZ R3,RIGHT2 LCALL TESTBIT JB BITS,RIGHT3 RIGHT1: INC R0 DJNZ R2,RIGHT0 CLR RIGHT JMP RIGHT4 RIGHT3: SETB RIGHT;DOWN WEI YI BIAO SHI BU NENG WANG CPL P3.4 JMP RIGHT5 RIGHT4: MOV R2,#4 MOV R0,#GRAPHRAM1 YOUQIANG1: MOV R3,#8 MOV A,#8 III2: MOV B,A CLR C SUBB A,@R0 JNZ III1 SETB RIGHT JMP RIGHT5 III1: MOV A,B ADD A,#8 DJNZ R3,III2 INC R0 DJNZ R2,YOUQIANG1 RIGHT5: POP ACC POP B POP POP POP POP 0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;图形旋转 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; XIA YI DONG ROTATION: PUSH 0 PUSH PUSH PUSH PUSH B PUSH ACC MOV A,GRAPHRAM1;A=50 MOV B,#8 DIV AB ;A=6 B= 2 MOV HANG,A ;HANG = 6 MOV LIE,B ;LIE = 2 MOV R3,#4 MOV R0,#GRAPHRAM1 ROTATESTART: MOV A,@R0 MOV B,#8 DIV AB CLR C SUBB A,HANG MOV R1,A MOV A,B CLR C SUBB A,LIE MOV R2,A;;;;;;;;;;;;;;;;;;X2=-Y1 Y2=X1 MOV A,#0 CLR C SUBB A,R2;-Y1 MOV B,R1;X1 MOV R1,A;X2=-Y1 MOV R2,B;Y2=X1 MOV A,R1 ADD A,HANG MOV R1,A MOV A,R2 ADD A,LIE MOV R2,A MOV A,R1 MOV B,#8 MUL AB ADD A,R2 MOV @R0,A INC R0 DJNZ R3,ROTATESTART POP ACC POP B POP POP POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWLEDRAM: PUSH 0 PUSH PUSH B PUSH ACC MOV R0,#LEDHEAD MOV R1,#8 MOV A,#AA SHOW1: MOV P1,A MOV P2,@R0 LCALL DELAY INC R0 RL A DJNZ R1,SHOW1 POP ACC POP B POP POP 0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;软件延时 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY: PUSH PUSH MOV R1,#5 FQFQ: MOV R2,#200 FWFW: DJNZ R2,FWFW DJNZ R1,FQFQ POP POP RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;清楚图形在LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CLEANGRAPH: PUSH ACC PUSH MOV A,#GRAPHRAM1 MOV XUNHUAN,#4 MOV R1,A DADA1: MOV A,@R1;SUBB A,#16 LCALL WRITEPOINT0 INC R1 DJNZ XUNHUAN,DADA1 POP POP ACC RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示图形在LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWGRAPH: PUSH ACC PUSH MOV A,#GRAPHRAM1 MOV XUNHUAN,#4 MOV R1,A DADA2: MOV A,@R1;SUBB A,#16 LCALL WRITEPOINT1 INC R1 DJNZ XUNHUAN,DADA2 POP POP ACC RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;消除已经填满的行 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;REMOVEBLOCK: PUSH 0 PUSH PUSH B PUSH ACC REMOVESTART: MOV R0,#1 MOV R1,#LEDHEAD REMOVE2: MOV A,@R1 CJNE A,#11111111B,REMOVE1 MOV @R1,#00000000B MOV REMOVEROW,R0 LCALL DOWNBLOCK JMP REMOVESTART REMOVE1: INC R0 INC R1 MOV A,R0 CJNE A,#9,REMOVE2 POP ACC POP B POP POP 0 RET DOWNBLOCK: PUSH 0 PUSH PUSH B PUSH ACC MOV R0,#1 DOWN11: MOV A,REMOVEROW MOV B,#8 MUL AB ADD A,R0 LCALL DOWNSTEP LCALL JUSTMOVE INC R0 MOV A,R0 CJNE A,#9,DOWN11 POP ACC POP B POP POP 0 RET DOWNSTEP: PUSH 0 PUSH PUSH B PUSH ACC MOV R0,#0 MOV R1,REMOVEROW STEP2: CLR C SUBB A,#8 LCALL TESTBIT JB BITS,STEP1 INC R0 DJNZ R1,STEP2 STEP1: MOV STEPS,R0 POP ACC POP B POP POP 0 RET JUSTMOVE: PUSH 0 PUSH PUSH PUSH B PUSH ACC MOV R0,A MOV A,STEPS MOV B,#8 MUL AB MOV B,A MOV A,R0 CLR C SUBB A,B MOV R1,A MOV R2,REMOVEROW MOV A,#8 CLR C SUBB A,R2 MOV JUST3: MOV LCALL JB MOV LCALL JMP JUST1: MOV LCALL JUST2: MOV ADD MOV MOV ADD MOV DJNZ MOV DDD: MOV LCALL MOV ADD MOV DJNZ JUSTEND: POP POP POP POP POP RET R2,A A,R0 TESTBIT BITS,JUST1 A,R1 WRITEPOINT0 JUST2 A,R1 WRITEPOINT1 A,R0 A,#8 R0,A A,R1 A,#8 R1,A R2,JUST3 R2,REMOVEROW A,R1 WRITEPOINT0 A,R1 A,#8 R1,A R2,DDD ACC B 2 1 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将某个二进制位写1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT1: PUSH 0 PUSH PUSH PUSH PUSH B PUSH PUSH PUSH CLR MOV SUBB JNC MOV MOV MOV DIV MOV MOV CJNE MOV DEC JMP WRITE11: MOV WRITE12: ADD MOV MOV MOV MOV MOV MOVC ORL MOV END1: POP POP POP POP POP ACC DPH DPL C R0,A A,#65 END1 A,R0 R1,#LEDHEAD B,#8 AB R0,A A,B A,#0,WRITE11 A,R0 A WRITE12 A,R0 A,R1 R1,A A,@R1 R2,A DPTR,#TAB1 A,B A,@A+DPTR A,R2 @R1,A DPL DPH ACC B 3 POP POP POP 0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将某个二进制位写0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT0: PUSH 0 PUSH PUSH PUSH B PUSH ACC PUSH DPH PUSH DPL MOV R0,A CLR C SUBB A,#65 JNC END2 MOV A,R0 MOV R1,#LEDHEAD MOV B,#8 DIV AB MOV R0,A MOV A,B CJNE A,#0,WRITE01 MOV A,R0 DEC A JMP WRITE02 WRITE01: MOV A,R0 WRITE02: ADD A,R1 MOV R1,A MOV A,@R1 MOV R2,A MOV DPTR,#TAB2 MOV A,B MOVC A,@A+DPTR ANL A,R2 MOV @R1,A END2: POP DPL POP DPH POP ACC POP B POP POP POP 0 RET GRAPH: DB 69,60,61,62,69,68,61,62,69,70,60,61,69,70,61,62,69,77,61,62,69,77,61,60,69,69,61,77 TAB1: DB 00000001B,10000000B,01000000B,00100000B,00010000B,00001000B,00000100B,00000010B TAB2: DB 11111110B,01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B 1987年6月,时任美国总统的里根致信时任苏共总书记的戈尔巴乔夫,希望他推倒东西方之间的高墙与阻碍。有趣的是,里根致信的这一天恰好是俄罗斯方块发售三周年的纪念日。这种历史的巧合赋予了俄罗斯方块政治的隐喻性。众所周知,风靡世界的俄罗斯方块是通过将落下的方块组合排列成一行进行消除得分的游戏,那一行行消失的方块,在后来人的眼里如同那一座座曾经高耸在东西边界又在一瞬间轰然倒塌的柏林墙。俄罗斯方块诞生于苏联的电脑工作室,苏联又是因为急剧的制度改革而倒下,与游戏中快速转换图形来消除自己的方块何其类似。里根本人也是一位俄罗斯方块爱好者,这一微妙的历史巧合更被人津津乐道。 1984年,前苏联科学家阿列克谢·帕基特诺夫本着教育的目的发明了俄罗斯方块这一游戏。当时大部分计算机还停留在DOS阶段,俄罗斯方块可谓是有据可考的最早的电脑游戏之一。俄罗斯方块这个游戏正如诞生它的国家一般,所有的内容在一个不可打破的边框里进行。这个游戏没有故事性,也不会有结局,玩家只能通过对四个正四边形构成的几何图形进行转换排列,形成完整的一行然后消除得分。这其中,几何图形还不能接触到最上端的边框,否则即宣告游戏失败。 和方块不能超出游戏边框的处境相似,诞生之初,俄罗斯方块始终没有走出苏联这个国家。有关负责人将俄罗斯方块视为国家财产,而不是阿列克谢·帕基特诺夫个人的发明。既然是国家资产,那么阿列克谢·帕基特诺夫自然也就无法问津俄罗斯方块的去向如何。不过之后,有关负责人将俄罗斯方块授权给各大电脑公司,很快就得到意外的反响,俄罗斯方块一下子席卷了西方国家的大部分个人电脑。曾经西方国家对于苏联的一切都非常敏感,对来源苏联的产物都带着天然的怀疑态度,但是俄罗斯方块却打破了这种隔阂,征服了西方的个人电脑。因为游戏的风靡,在它的诞生地苏联还产生了漫长的知识产权纠纷。 不过,真正将俄罗斯方块推向高峰的是日本游戏厂商任天堂。任天堂在他们的掌机游戏Game Boy上发售了俄罗斯方块。GB版的俄罗斯方块在日本乃至欧美都受到热烈的追捧,且由于其较好携带的优点,使得Game Boy成为俄罗斯方块最为显著和标志性的搭载平台。 红色帝国一直幻想征服假想敌美国,受制于国际形势一直没能成功,但是俄罗斯方块却轻易地征服美军部队。在第一次海湾战争里,掌机版的俄罗斯方块成为美军士兵最喜欢的游戏。我国90年代也曾经大量仿制GB版的俄罗斯方块,市场反应相当热切。但凡回顾90年代的童年,恐怕不能遗漏一块巴掌大的黑白荧屏仅靠几个简单按钮操作的俄罗斯方块。 铁幕中诞生的俄罗斯方块,不仅走出了铁幕,还征服了资本主义国家和社会主义国家,这恐怕是游戏最初的发明者阿列克谢·帕基特诺夫料想不到的。 由教育工具变成风行游戏 俄罗斯方块诞生的最初目的是用于教育。因为研究者发现俄罗斯方块的游戏特点可以集中儿童的注意力。另外,采用颜色不同的方块进行排列,对患有弱视的儿童有一定的治疗效果。 在走出铁幕后,俄罗斯方块不再局限于教育层面,而成为一种风靡流行的游戏。因为很多电脑厂商都拿到俄罗斯方块授权的缘故,他们对俄罗斯方块也进行了一定的改良。 在苏联本土,为了改变俄罗斯方块不存在结局的弱点,游戏开发人员特意设计了隐藏画面。只要游戏者们按照一定的排列方式排列方块,原本只有方块的画面就会消失,取而代之的是跳着俄罗斯传统舞蹈哥萨克舞的画面,随后则出现以俄罗斯传统建筑为背景燃放烟花的景象。 而在日本,任天堂给俄罗斯方块开发出新的模式。比如一开始就在边框底部设立一行无法消除的特殊方块,这些方块的颜色有别于落下的方块。玩家必须保证接触到特殊方块的那一行完全消除,如果做不到,则无法消除的那一行会落到特殊方块下面。如果玩家不能一直消除接触特殊方块的方块,那么到最后,特殊方块会一直到最上端的边框,然后宣告游戏结束。 另一种模式也与此类似,每个落下来的方块都带有一个无法消除的特殊方块,这就造成总有一行无法消除的局面。等到累积的无法消除的方块到达顶端边框,也宣告了游戏的结束。 在之后的俄罗斯方块游戏的发展中,因为越来越强调落下的方块的速度,玩家必须越发提高自己的反应能力和处理能力。这也就带来了俄罗斯方块对抗性的特点。在两人俄罗斯方块游戏中,两个玩家在规定时间比拼谁消除的行数最多,得分最高。如果是不限时的比赛,则成为漫长的脑力与耐力的消耗战。有趣的是,一些资深俄罗斯方块玩家提到,当自己完全跟上落下方块速度的时候,大脑已经不再思考,而是身体本能地作出反应。 愚蠢游戏绑架社会 当我们谈及俄罗斯方块的世界纪录时,总是惊讶于玩家们的反应速度。一些玩家甚至开玩笑说,俄罗斯方块让他们的大脑变成了无感情的计算机处理器,只是高效率地计算着如何排列方块。 若是以今天的眼光来看,俄罗斯方块的风靡的确让人震惊。在80年代FC游戏已经取得一定发展的时期,俄罗斯方块这种简单的“教育用”游戏得到全世界爱好者的追捧让人感到迷惑。诚然,因为一些历史的巧合,俄罗斯方块被赋予了相当多的时代含义。 为什么玩家会沉浸于这种机械性的重复性的排列组合呢?心理学家认为俄罗斯方块的风靡一定程度上也佐证了蔡加尼克效应。所谓的蔡加尼克效应,是由20世纪20年代苏联心理学家B.B.蔡加尼克提出,他认为人始终有一种天生的办事的欲望推动力,能够牢牢记住自己没有完成的事情,但对完成了的事情马上就会忘记。 在俄罗斯方块变化的七种几何图形里,只有一种能够单独排成一行,其余都是由两行的方块组成,这就造成玩家消除一行,就必然出现另外一行没有被消除的局面。因为这种残缺感,玩家始终不能满足自己将事情完成的欲望动机,所以会一直排列下去,在短暂的满足与随之而来的不满里来回。正是这种来回,让玩家一直沉浸于组合俄罗斯方块中。 社会学家则将俄罗斯方块称为愚蠢游戏的先河。所谓的愚蠢游戏,便是在重复无意义无结局的游戏里沉溺。同类的游戏还有“疯狂的小鸟”“植物大战僵尸”。社会学家认为愚蠢游戏反映了社会的现实,一方面是高速发展节奏越来越快的现代文明社会,一方面是被现代文明社会改造成机械部件按部就班的社会人。作为其主要代表,上班族成为愚蠢游戏的典型潜在用户。他们在地铁里玩着重复无意义的愚蠢游戏消磨时间,然后进入公司又成为公司的部件机械运转。公司这一现代文明的体制成为游戏的边框,社会人成为游戏玩家,而工作则化为俄罗斯方块,无论怎样转换或者排列俄罗斯方块,玩家都跳不出游戏边框。《纽约时报》曾撰文指出,这些愚蠢游戏正如社会现实。 由俄罗斯方块所延伸出来的这一社会现象,被社会学家认为是现代文明体制的悲哀。 进入博物馆的工业文明成果 俄罗斯方块代表电脑技术发展的一个时代,自然它也属于人类的文明成果之一。在2012年,纽约当代艺术博物馆宣布将包括俄罗斯方块在内的14款早期电脑游戏纳入博物馆馆藏。此次收录的14款游戏,于2013年3月正式安置于博物馆的菲利普·约翰逊画廊。俄罗斯方块已经被认可为现代工业文明的艺术成果之一。博物馆认为,电子游戏是艺术品,也是设计方法,俄罗斯方块被认为是著名的互动设计的创作典范。如今在手机平台功能越来越多的情况下,这一经久不衰的电脑游戏,经过现代美术的再包装,又重新回到了诸多爱好者们的手机上。 信息隐藏是指通信双方在有第三方的监视下, 将秘密信息以一种不可见的方式传输,常被应用于军事领域等一些重要场合。 信息隐藏技术一直是信息安全领域的重要组成部分,在过去的20 年内,信息隐藏技术得到极大的发展。 首先是隐藏域的扩大, 从刚开始的空域、频域, 到近些年新提出的加密域[1]等, 它们都是将载体做信号变换处理, 然后将秘密信息嵌入到变换后的载体中, 第三方无法轻易判断出载体是否携带秘密信息;其次是隐藏算法的增加,最开始提出的是图像空域LSB算法[2],该算法嵌入容量大且易实现,使用极为广泛, 但是容易被卡方检验等统计分析方法判断出是否携带有秘密信息;DE算法[3]是最常见的可逆隐藏算法, 但是由于嵌入容量较小,鲁棒性较差,受到压缩、变形等攻击后不能无损的恢复, 实际情况中依旧不被广泛使用; 最后是隐藏载体的增多,从被研究最早同时也是最彻底的图像载体[4]和音频载体, 到Power Point文件[5]和TCP帧[6]等载体中都可以实现信息隐藏。 在游戏中隐藏信息以实现隐秘通信引起一些国内外学者的注意, 他们利用游戏的各种特点, 在不改变游戏规则的前提下, 同样实现信息隐藏。 吴军等[7]提出一种基于 《七巧板 》游戏的图像信息伪装算法,将机密数字图像和载体图像分成适当的小块,按一定的条件寻找匹配关系, 然后将描述匹配关系的参数经编码后隐藏在载体图像之中,到接收方提取出描述匹配关系的参数,然后利用这些匹配关系恢复出机密图像。 Hernandez-Castro等[8]提出在游戏中实现信息隐藏的框架, 并将其应用于《 围棋 》 游戏中; Lee等[9]提出在 《 迷宫 》 游戏中的隐藏方法, 将信息隐藏在解密该迷宫的路径中, 只有知道这种方法的人才可以获取到秘密信息。 但是,它们的嵌入容量都受到游戏自身大小的限制;Zhan-He[10]等在 《俄罗斯方块 》 游戏中实现信息隐藏, 将游戏中7 种不同的板块抽象为数字0~6,采用了基于七进制而非广泛应用的二进制编码秘密信息。 本文同样提出一种基于 《 俄罗斯方块 》 游戏的信息隐藏方法, 与文献[ 10] 不同的是, 本文的方案适用于二进制编码表示的信息, 且在嵌入容量方面优于文献[10]。 1 关于 《 俄罗斯方块 》 游戏 《 俄罗斯方块 》 是由俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 该游戏由4 个小方块组成的不同形状的板块陆续从屏幕上方落下来,板块可以旋转和调整位置,使它们在屏幕底部拼出完整的一条或几条,这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。 没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。 2 本文方案 本文的核心思想是: 在不改变游戏规则的前提下,将秘密信息加载到游戏中板块的下落过程中,从而实现信息隐藏。 2 . 1 隐写原理 《 俄罗斯方块 》 游戏中共有7 种不同的板块, 分别用ti( i ∈ [ 0 , 6 ] ∩ Z ) 表示, 如图1 所示。 其中每个板块可以携带3 bit信息I={i0i1i2| i0, i1, i2∈{ 0 , 1 } } , ik( k = 0 , 1 , 2 ) 的取值分别如下: ( 1 ) i0的取值:t0板块的落下不携带任何信息, 其余6种板块ti( i = 1 , 2 , 3 , 4 , 5 , 6 ) 根据形态变化的数量分为两个板块组,其中,表示有两种形态变化的组为M0= { t1, t2,t3} , 表示有4 种形态变化的组为M1= { t4, t5, t6} 。 如果本次落下的板块ti属于M0, i0= 0 ; 否则, 如果本次落下的板块ti属于M1, 则i0= 1 。 (2)i1的取值:不同的板块组有不同的形态变化,如图1所示,其中t0板块没有变化,M0中的板块有两种形态的变化,分别用a、b表示;M1中的板块有4种形态的变化,分别用a、b、c、d表示。每个板块ti的形态变化都是从a形态开始,顺时针旋转n×90°(n∈[0,3]∩Z)后得到。假设每个板块初始落下的形态用v=0表示,每经过一次旋转v+1(mod2),i1的值为该板块最终落到屏幕底部时的v值。例如,设某板块落下的初始形态为t4.b,最终形态为t4.a,期间需要顺时针旋转3×90°,其形态与v值如表1所示。 推倒铁幕的俄罗斯方块 第6篇
互动式《俄罗斯方块》游戏安全隐写 第7篇
( 3 ) i2的取值: 每个板块都是从游戏区域的中间落下。 d为板块最终落到屏幕底部的位置相对于初始位置的距离,如果d%2(%为取余运算) =1, 则i2= 1 , 否则如果d % 2 =0 , i2= 0 。 如图2 、 图3 所示, 板块最终落到屏幕底部的位置相对于初始位置的距离d=1,d%2=0,则此时i2= 0 。
综上所述, 一个板块的从游戏区域的顶部落到区域底部可以携带3 bit秘密信息,规则如表2 所示。
2 . 2 隐秘通信方案
一个完整的隐秘通信系统必须包括表示信息传输的开始及结束的标识,这部分将介绍它们,并就基于2.1的算法提供一个完整的方案。
该方案可以用元组表示:Ω={P,W,R,I,G}。 P表示游戏双方,P ={Sender,Receiver};W是第三方攻击者,Wendy , 他有能力破解该通信系统; R表示规则的集合,包括传输信息的开始规则、板块下落携带信息规则以及信息传输的完成规则等;I是秘密信息,I的内容不能被W获取到; G表示该 《 俄罗斯方块 》 游戏。
该隐秘通信的方案如下:
( 1 ) Sender和Receiver之间共享一对公钥和私钥,Sender通过RSA非对称加密算法, 将随机种子Rs加密,Rs的作用是生成伪随机序列K(Ki∈{0,1}),i∈0,1,2,… ,M ) , Sender利用该序列以按位异或的方式加密欲传输的秘密信息I(Ii∈{0,1}),i∈0,1,2,… ,M), 得到C,C是Sender在游戏中实际传输的信息。 C = ci= Iiki( i =0 ,1 ,2 ,… , M ) 。
( 2 ) Sender将加密后的Rs( 长度为L , 且Receiver已提前知悉) 与M bit信息按如下方式组合:Rs+ C , 并将其分为(M +L)/3 组, 分别用T1, T1, … , Tk(k ∈[1 , ( M + L ) / 3 ]) 表示。 对于每组Tk, 第一个比特的值VTk( VTk= 0 or 1 ) 决定该携带该组信息的板块ti∈M0还是ti∈M1, Sender重新编程实现 《俄罗斯方块 》游戏,特点如下:
(1)游戏G接收到Sender开始传输信息的信号之前,G中板块落下规则与普通游戏相同。
(2)G接收到Sender开始传输信息的信号后, 根据VTk选择下落板块ti∈M0或ti∈M1, 并从它们中随机选择某个板块ti落下。
(3)G接收到Sender完成信息传输的信号之后,G将板块下落规则恢复成正常游戏的规则。 Sender将重新编程后的游戏上传到在线游戏网站中。
(3)Sender邀请Receiver参与在线 《 俄罗斯方块 》 游戏,模式为双人竞赛模式。
( 4 ) 当Sender第一次消去完整的横条时, 表示下一次落下的板块中携带有信息。
( 5 ) Receiver收到Sender开始传输信息的信号后, 开始记录Sender端每一个板块的下落、旋转和移动等相关信息。
( 6 ) 当Sender将某个板块快速地落到屏幕最底层, 表示他已经完成Rs+ C的传输。 Receiver收到此信号后, 停止记录板块的信息, 并根据2.1 所述原理, 得到与Sender相同的种子Rs和加密后的信息C, 生成与Sender相同的伪随机序列K,解密后得到秘密信息I:
(7) 如果信息传输完成时,Sender或Receiver还未完成游戏, 则继续完成游戏即可, 此后的游戏并不影响信息传输;若Sender的游戏已经结束,但信息还未完成传输,Sender要重新开始下一局游戏, 重复步骤( 3 ) ~ ( 6 ) , 直到所有的信息传输完成。
注意:为提高方案的安全性,在携带信息的板块中,每7 个至少有一个t0板块。 同时,要保证每局游戏的Rs均不同。
3 安全性分析
信息隐藏技术最重要的指标是其安全性。 信息隐藏的安全性分为两类[11]:
第一类:信息隐藏技术是S1 安全的,是指攻击者W没有合理的理由证明经过传输信息的通讯信息S中隐藏有秘密信息I。
第二类:信息隐藏技术是S2 安全的,是指攻击者W无法破坏经过传输信道的通信信息S中隐藏的所有秘密信息I。
理论:的概率,当,则该方案是S1安全的。
证明:为板块ti落下的概率,a为的组数,且每7个板块中有且只有一个t0板块。
因为普通的 《 俄罗斯方块 》 游戏中, 每个板块出现的概率, 与隐藏信息后的游戏中板块出现的概率分布相似, 所以二者之间的相对,因此它是S1 安全的,即攻击者Wendy是无法通过分析判断出该游戏是否携带秘密信息。 由此可知,该通信系统的安全性取决于Sender加密I产生的C,C中0 和1 的数量越接近,安全性越高。
4 实验
从 《 俄罗斯方块 》 官方网站中选择3 种不同种类的游戏, 每种游戏落下的板块均总数超过10 000, 分别记录7 种板块出现的次数,并计算其频率。 同时,选取不同大小的3 组比特序列, 分别用本文提到的算法和文献[ 10 ] 的算法传输, 记录3 局游戏中每个板块出现的频率,如图4 所示。
从图中可以看出,普通 《俄罗斯方块 》 游戏的板块频率出现在[0.135,015] 内, 接近1/7 ( 约为0.143), 而本文提到的算法中板块的频率同样浮动在1/7 上下, 由此可证明该算法是S1 安全的。
在上述实验的同时, 同时记录下文献[10] 的算法与本文提到的算法中的核心板块的数量,如表3 所示。
由表中数据可知, 本算法在嵌入容量方面高于文献[10]。
5 结论
本文提出了一种新颖的安全隐写方法,在《俄罗斯方块》游戏中隐藏信息,首先依据板块的变化数量,将板块分类,然后通过板块的移动、旋转等方式,在板块的落下过程中携带信息,每个板块都可以携带3 bit的信息。本文从理论和实验方面,分别证明了本算法可达到S1安全,同时分析证明了本方案在嵌入容量方面得到提升。由于本文的方案在嵌入容量方面依赖于游戏本身的大小,所以接下来的研究重点是改进该方案,增大嵌入容量以及在其他游戏载体中嵌入秘密信息,实现隐秘通信。
参考文献
[1]ZHANG X.Reversible data hiding in encrypted image[J].Signal Processing Letters,IEEE,2011,18(4):255-258.
[2]刘粉林.数字图像隐写分析[M].北京:机械工业出版社,2010.
[3]TIAN J.Reversible data embedding using a difference expansion[J].IEEE Trans.Circuits Syst.Video Techn.,2003,13(8):890-896.
[4]陈够喜,伍玉良,张鹏程,等.二值图像中的安全隐写[J].小型微型计算机系统,2012,33(7):1625-1628.
[5]YANG W C,CHEN L H.A steganographic method via various animations in Power Point files[J].Multimedia Tools and Applications,2013,74(3):1003-1019.
[6]WENDEZL S,ZANDER S,FECHNER B,et al.Patternbased survey and categorization of network covert channel techniques[J].ACM Computing Surveys(CSUR),2015,47(3):50.
[7]吴军,吴秋新.一种基于七巧板游戏的数字图像信息伪装方法[J].计算机应用,2004,24(6):125-128.
[8]HERNANDEZ-CASTRO J C,BLASCO-LOPEZ I,ESTEVEZTAPIADOR J M,et al.Steganography in games:A general methodology and its application to the game of Go[J].Computers&Security,2006,25(1):64-71.
[9]LEE H L,LEE C F,CHEN L H.A perfect maze based steganographic method[J].Journal of Systems and Software,2010,83(12):2528-2535.
[10]OU Z H,CHEN L H.A steganographic method based on tetris games[J].Information Sciences,2014,276:343-353.
俄罗斯方块和企业经营启示录 第8篇
第一个感想12层到13层,质变和量变的关系
我的大脑不是很发达,不过小脑还算发达,因此这俄罗斯方块游戏我在短时间内玩到了一个很高的级别。当顺利突破15速度和12高度(最高级别15速度和15高度)之后,发现想再突破15速度和13高度这一级别简直难如登天,即使有时开头很/顷,可最后还是死掉。由此想到第一个企业经营感想:企业的发展是一种量变和质变的过程,你可以很顺利地从1高度玩到12高度,但到了13高度时,就不是简单的一个高度单位的问题,而是一个坎的问题。1到12是一个量变的过程,而12到13却是一个质变的概念。哲学原理中,质变须在大量的量变累积基础上,在一个外力的作用下方能产生裂变,这个量变的过程我们可以理解为企业在资金、管理、技术等各方面基础工作的积累,而外力则是企业发展的机遇。
在中外的企业发展史上,我们发现很多的企业在顺利发展到一定程度时,往往面临着再一次突破的困难。这就跟俄罗斯方块一样,前面的一路打下来都挺顺,为什么到这一关这么难,仅仅只是增加一层高度而已?但这一层的增加却不是前面的量变概念,而是质变的概念了.不仅需要各方面都达到一个很成熟的高度,还需要有一个好的发展机遇(也就是游戏中开始时随机发出的方块是否刚好符合需要)。因此企业在发展到一定规模的时候,如出现突破困难的时候,一定要静下心来仔细分析这个阶段是否是企业发展过程中的质变还是量变过程中的暂时困难,一旦是前者,企业必须能正确地认识这个问题,沉下心来,从资金、管理、技术等各方面继续完善和提高,以保证量变的足够性。只有当资金、管理、技术等各方面都提高到足够的高度时,才有能量完成质变这一瞬间的裂变过程,否则机会来了也无法去完成。
咱们中国有很多企业尚不能充分认识这个量变和质变的哲学关系,在发展到一定的规模时,往往出现冒进的苗头;如前几年的巨人、三株等企业,企业的规模迅速扩张到一定的程度,而与之对应的管理、技术、资金等各环节的量变工作却没有跟上去。于是,当巨人的大楼建到一半资金链断掉而无相关融资能力时,当三株的中毒事件发生却没有相应的公关处理能力时,这些企业立马轰然倒下,令人扼腕不已。
正确地认识和处理量变和质变的哲学关系,对于一个发展到一定规模还想再上一层楼的企业来说至关重要,如不能正确地认识和处理好这一层的关系,就极有可能经验主义判断和指导企业发展,出现冒进、快进等错误,为企业的发展埋下隐患。游戏OVER后还可以再来,企业OVER后要东山再起可就是难如登天了。
第二个感想长条是机遇更是风险
俄罗斯方块游戏里,1层消掉的分数是1分,4层一起消掉的分数是16分,4层一起消掉需要一根长条来完成,因此很多玩家往往先建好其他部分,单留下一个长条的位置等待长条的出现。
但长条给玩家带来几倍的分数同时,也往往成为游戏OVER的主要原因,游戏中因长条原因而结束的概率是最高的,这跟企业经营中的风险投资颇为相象。当一个企业投资一个高风险和高回报并存的项目时,如能成功,则企业的发展往往一日千里,如失败,往往一撅不振甚至就此消亡。
而在一个游戏里,设置长条的位置一旦超过两个,则死亡的概率几乎可以上升两到三倍,而成功的概率同样下降好几倍,因此长条的数量增长对于成功和失败的影响并非是一倍一的概念,而是几何倍增的概念。在企业的经营过程中,对于风险项目的投资也是如此,投资一个,成功和失败的概率差不多一比一;投资两个,成功和失败的概率比就变成了一比四的概率;数量越多,这个分母的值越大,而分子却仍然保持为一,因此成功的概率就越来越小。
玩家对于长条的控制能力在于其自身的能力,有些玩家的小脑不是很发达,那就选择一分一分来累积,有些玩家小脑很发达,那就经常选择长条。企业也是如此,自身的实力、资源等方面都很充足,不妨选择长条;自身的能力差点,那还是老老实实,一步一步来,别看着眼红。
而在设置长条数量的时候,则万不可过于心急。目前多元化经营在中国的企业里很盛行,许多有点规模的企业都在想着发展多元化经营。但一个企业的资源是有限的,不可能什么行业都来,一旦多元化的步伐迈得过大,往往出现资金链过长,人才、技术资源匮乏等问题,结果不但多元化做不成,主业也因抽掉大量的资源而运转困难。照顾一篮的鸡蛋比较容易,但同时照顾很多篮的鸡蛋就比较麻烦了。
第三个感想最容易死在最容易的地方
这个话听起来有点问题,但事实往往确如此。玩过俄罗斯方块的人都知道,在游戏比较难的时候往往集中精力,不敢有丝毫懈怠,出错的概率比较小。而当困难解决后,形势一片大好的时候,思想就出现懈怠,一个不经意间的失误就断送掉所有基业,令人后悔不已。
我在玩13层的时候,好几次把层;次消到只有一两层,在刚松一口气的当口,失误往往就来了。
企业的经营也是如此,困难当头,逼着企业集中精神来应付,懈怠的可能性几乎没有;而当困难解决之后,或是形势一片大好的时候,懈怠的环境就形成了,危险也在平静中滋生。这个时候就需要企业的自我认识来调控了,少来点歌功颂德,多来点危机教育,并从实际经营中不断给自己设定更高难度的目标,使企业时刻处在一个危机的环境中,把懈怠的环境给去掉,这样企业就没有懈怠的机会了。
说起来容易,但真正要做到居安思危是一件非常困难的事情。企业要做到居安思危,其中关键的因素在于企业的领导层首先要有这种意识,只有领导层有了这种意识,那么企业风光外表下的危机就逃不出他们的眼睛,领导层也会通过各种形式把这种危机意识传递给下属,从而使整个企业保持一种危机状态。
连锁搬运站创业新起点
随着城市化的发展,室内装饰越来越讲究,大量的装饰材料需要人工搬运。据市场调查,我国每年有15.6亿元的搬运市场,并且以每年12%的速度递增,现在全国都是靠人工背、扛。
搬运的价格一般是二楼0.5元,往上每层每件(袋、箱)加0.5元/人次,以6层100平方米为例,仅水泥、沙子、地砖就有200多袋(箱),如人工搬运,5个人得累死累活干一天,需搬运费500多元,而用手提式搬运机,两个人只需用1小时就可吊完。一台手提式搬运机,投资不多,几天就可以收回成本。
手提式搬运机体积小(一人自行车可携带),重量轻(自重45公斤)、起重大(一次可吊300公斤、500公斤)、使用方便(220V电源,1.3千瓦)、效率高(六层楼二人操作,一小时可起吊150袋水泥)、吊运品种多(水泥、沙子、瓷砖、石材、木工板、木板、龙骨、水磨石、钢材、油毡、大玻璃、混凝土等),手提式搬运机最大优点就是起吊家装材料时,别的机器无法替代,而在小型建筑工程,楼顶防水工程,防护网、广告牌安装,车间仓库的货物搬运,农民地窖存放水果,屋顶晒粮,农村建平房,小楼房打现浇混凝土等行业以它特有的优势能够代替现有机械吊运或工人搬运,因此也是大型建筑队的新补充。
投资效益分析: