《C语言编写俄罗斯方块论文》由会员分享,可在线阅读,更多相关《C语言编写俄罗斯方块论文(42页珍藏版)》请在金锄头文库上搜索。
1、俄罗斯方块 学 号: 班 级: 姓 名: 指导教师: 完成日期:2012年5月目 录1.引言11.1开发工具11.1.1 C是中级预言11.1.2 C是结构化语言11.1.3 C语言功能齐全11.1.4 C语言可移植性好12 游戏设计22.1游戏设计要求22.1.1. 设计题目:俄罗斯方块游戏22.1.2. 设计内容:22.1.3. 功能模块划分:22.2 游戏设计思想2游戏界面:22.2.2 设计思路22.3:游戏功能3:开始部分32.3.2.运行部分33.实验总结:43.1 开发背景与需求分析43.2 系统功能介绍44. 核心代码:8总结21参考文献:22基于C语言的俄罗斯方块游戏摘要:俄
2、罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。关键词:C语言;心得体会;影响1.引言随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界.人们不在拘泥于一小块天地.加班,出差成了现代人不可避免的公务.而此时一款可以随时随地娱乐的游戏成了必需品.在手机和电脑成为人们日用品的社会,一款能在其上能便捷运行的游戏成为买家的参考点.现在我们所要设计的这一款基于C语言的游戏贪吃蛇,就是满足以上要求而设计出来的,希望能给玩家带来娱乐.贪
3、吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人.这一款游戏紧紧地抓住了人们的心理,虽然简单,却起乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具.1.1开发工具C/C+程序设计学习与试验系统该系统继承了Turbo C2.0/C+3.0、GCC、Visua C+6.0这四种常见的编译器,可以很好满足目前主流的C语言教材的实验需求。C语言具有下列特点:1.1.1 C是中级预言它把高级语言的基本结构和语句与低级语言的实用性结合起来,C语言可以像汇编语言一样对位、字节和地址进行操作,通常还是称C为高级语言。1.1
4、.2 C是结构化语言结构化语言的特点是程序的各个部分除了必要地数据交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用,维护及调试。1.1.3 C语言功能齐全C语言具有多种数据类型,并引入了指针概念,可使程序效率更高;C语言也具有强大的图形功能;具有较强的计算功能、逻辑判断功能。1.1.4 C语言可移植性好与汇编语言相比,C语言程序适用范围大,可用于各种操作系统和各种型号的计算机。2 游戏设计2.1游戏设计要求2.1.1. 设计题目:俄罗斯方块游戏. 设计内容:一组由4个小型正方形组成的规则图形,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。通过设计者预先
5、设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。如果未被消除的方块堆放的高度超过场地所规定的最大高度则游戏结束。. 功能模块划分:系统功能模块2.2 游戏设计思想2.2.1游戏界面:方块堆积。遇整则消。 设计思路 1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位。2.、一组由4个小型正方形组成的规则图形,英文称
6、为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。I:一次最多消除四层 J(左右):最多消除三层,或消除二层 L:最多消除三层,或消除二层 O:消除一至二层 S(左右):最多二层,容易造成孔洞 Z (左右):最多二层,容易造成孔洞 T:最多二层 (1)部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。 方块会从区域上方开始缓慢继续落下。 (2)玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。 (3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的
7、方块出现在区域上方开始落下。 (4)当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。 (5)当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。 (6)一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估现在要如何进行。由于游戏能不断进行下去对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度。 3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来
8、换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。 4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是20或者玩家所能见到的高度),则游戏结束。 具体到每一款不同的游戏,其中的细节规则都可能有千差万别,但是以上的基本规则是相同的。2.3:游戏功能:开始部分游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。.运行部分 俄罗斯
9、方块的要求为:不同形状组合的方块从界面上方落下。通过键盘上的四个光标控制方块下落时的形状转换和下落方向。方块堆积在一起,将区域占满时则会消除以增加游戏分数。整个游戏过程分为三个步骤:1、 按游戏界面的开始按钮或者F2键来开始游戏,自己使用右边的窗口,对手使用左边的窗口2、 键盘操作:系统缺省设置使用右边的窗口,用光标操作,左移一格;右移一格;旋转方块; 方块丢下(方块下落到底),End健可以一格格的下落,用户还可以自定义习惯的按键来操作游戏。 3、 计分牌显示的内容:“分数”为双方本局的分数,计分标准为下落一个块10分,一次消一行100分、2行200分、3行400分、4行800分。等级”为双方
10、的游戏设置等级,当分数达到一定的值,等级就会提升、速度加快。“行数”第一行为双方消的行数,第二行是送给对方的行数。“比分”为双方赢的局数。:结束部分:游戏结束时,显示“GAME OVER”3.实验总结: 3.1 开发背景与需求分析随着网络技术的发展,人们的生活越来越离不开网络,网络给人们带来了各种各样的信息和更多更新的娱乐。据统计。每天上网的人群中75%的人用来丰富自己的生活。其中游戏最为常见和普遍。所以,这次课程设计我想实现一个小游戏:俄罗斯方块。需求分析1) 游戏面板(画布)GameCanvas类,完成游戏显示;2) 方块绘画drawUnit类,方块下落过程中的各种形态;3) 主界面实现游
11、戏的开始,退出,暂停,提高级数,降低级数功能及图像界面排版;4) 通过键盘按键实现游戏,并且可以调节游戏速度。3.2 系统功能介绍 俄罗斯方块是一个非常复杂但比较有趣并且耐玩的游戏,相信很多人对俄罗斯方块并不陌生,如下图所示,游戏中共有七种方块,每种方块都有四个方格组成。 这七种方块可以旋转90度、180度、270度,因此每种方块有四种状态,七种方块总有28种状态,这28种状态的方块随机产生,自由下落,落下时可由玩家通过键盘上的上、下、左、右控制键来控制方块的反转、移动和加速下落。如果下落时,方块填满某一行则这一行消失,同时给玩家加分,若由存在空格的方块填满整个窗口,则游戏结束。图1-1 初始
12、状态图1-2 开始游戏图1-3 消除一行图1-4 消除两行图1-5 消除四行图1-6 游戏结束4. 核心代码: import java.awt.*;import java.awt.event.*;/俄罗斯方块类 public class computer extends Frame public static boolean isPlay = false; public static int level = 1, score = 0; public static TextField scoreField, levelField; public static MyTimer timer; Gam
13、eCanvas gameScr;/声明一个属于画布类得变量 public static void main(String argus) computer ers = new computer(俄罗斯方块游戏 V1.0 Author:Vincent);/运用构造方法为框架名 WindowListener win_listener = new WinListener();/定义一个窗口监听事件对象 ers.addWindowListener(win_listener);/为框架添加该监听器 computer(String title)/ 俄罗斯方块类的构造方法 super(title);/调用父类
14、得构造方法 setSize(600, 480);/设置框架的尺寸 setLayout(new GridLayout(1, 2);/设置框架的布局流 gameScr = new GameCanvas(); gameScr.addKeyListener(gameScr);/为该对象注册键盘点击监听器 timer = new MyTimer(gameScr); timer.setDaemon(true); timer.start(); timer.suspend(); add(gameScr); Panel rightScr = new Panel(); rightScr.setLayout(new GridLayout(2, 1, 0, 30); rightScr.setSize(120, 500); add(rightScr); / 右边信息