




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(设计)题目:基于c程序的俄罗斯方块游戏设计 学院: 物理与电子科学学院 班级: 09级电子四班 姓名: 陈 飞 指导教师: 梁国栋 职称: 助教 完成日期: 2013 年 5 月 31 日基于c程序的俄罗斯方块游戏设计摘要:俄罗斯方块是上世纪70年代设计出, 是一个风靡全球的小简易液晶小游戏,虽然已经老旧,但是作为学习c语言还是可以作为一个很好的范例。俄罗斯方块中使用的方块是有四个小正方形小黑色块组成,建立一个结构体将方块存放在这个机构体中。如今技术的发展,可以为色块提供其他色彩,也可以增加色块的立体感,加大了游戏的美观性。游戏的使用着可以通过上下左右等键对方块移动进行控制。 俄罗斯方块通常有七种类型的方块,需要使用c程编写函数控制它的生成移动已经消除。玩游戏的人可以通过点击电脑键盘的控制键来控制方块的的移动已经变形,经过一定的摆放,程序判断是否消除以及执行消除。俄罗斯方块要做出简单的图形,使用vc+与easyx软件进行编译。文中将说明软件的使用。文中使用的c语言需要在windows 7旗舰版下实现。关键词:俄罗斯方块 ;easyx; c语言目 录1 前言12 初步设想12.1 概述12.2 俄罗斯方块的历史与前景12.2系统设计流程图33游戏的运行环境33.1硬件环境33.2软件环境33.3 关于easyx的介绍44 游戏的具体设计44.1方块的设计44.2游戏界面的初始化64.3游戏界面加入背景图片74.4 游戏加入背景音乐74.5 方块的初始化84.6 对方块的移动动态设计控制94.7 满行处理105测试运行115.1游戏代码输入到vc中115.2游戏结束时弹出来的对话框125.3绘图框中的游戏界面12图513结束语14参考文献15致谢151 前言 在这个科技发展迅猛的时代,电子类产品已经深入到我们每个人的生活当中,成为我们日常生活中不可缺少的一部分。俄罗斯方块游戏的出现可以说是游戏历史上的一件大事情,曾经创造的经济价值是不可估量的。该游戏曾经被全世界人们所追捧,我们中国人也不另外。小时候黑白机中游戏俄罗斯方块可以说是必不可少的。如今,俄罗斯方块仍然没有离开我们的实现,qq游戏等诸多游戏平台以及网站都提供了俄罗斯方块的改良版,譬如双人游戏,积分游戏等。每每看到俄罗斯方块游戏都会勾起我们童年的一些回忆,可以说,俄罗斯方块已不再单单是一款游戏,它已经是我们回忆的一部分,深深的烙在我们心中。 俄罗斯方块游戏方块随着计算机技术已经电子技术的发展而不断进步,而且在俄罗斯方块游戏基础上也推出了各种游戏,比如说玛丽医生,相信这款小游戏也得到很多人的青睐。俄罗斯方块游戏操作简单,它的原理其实就是运动的方块自上而下下落,在底部堆叠组合,并按规则消除。对于很多人而言,游戏的设计是高深莫测的,具有很高的专业技术难度。俄罗斯方块作为一个比较老但是很具有代表性的游戏,对于一些新手如我这样的人来说,不失为一个学习的好游戏,而且,如今信息交流发达,可提供借鉴的材料也很多。本论文使用vc+6.0以及easyx对俄罗斯方块游戏代码进行编写,提供了一个学习c的机会,以便以后学习并开放更好的游戏或者应用软件。该简易俄罗斯方块游戏是在当下用户最多的windows操作系统下运行,拥有常见俄罗斯方块的基本功能,游戏玩家可通过键盘控制游戏区域中的活动方块进行操作。设计的方块是随机出现的,并且拥有一定的色彩,提高了游戏的观赏性和可玩性。游戏方块在下落到底板后堆叠,满一行就消去这一行。值得注意的是本论文中加入了背景图片跟音乐,使这个游戏更具有趣味性。2 初步设想2.1 概述 综合自己在大学四年期间学习过的c语言知识,并通过自己查阅各种资料,设计俄罗斯方块游戏。通过设计游戏的过程,让自己明白游戏开发的过程,为将来走向社会打好基础。从游戏的设计到完成,提高自己的c语言编译能力。2.2 俄罗斯方块的历史与前景 俄罗斯方块顾名思义,这个小游戏一定跟俄罗斯有关。在1984年的时候,一个俄罗斯的小程序员受到了拼图游戏的启发,经过一段不为人知的研究,编写了俄罗斯方块游戏,他的名字叫阿列克谢帕吉特诺夫。这个游戏在发明以后到现在,一直有很多人热爱。据说,俄罗斯方块游戏至少有10亿人玩过,这个数据是不完全统计。我认为,单单就中国这个拥有13亿劳苦大众的市场来说,这个游戏影响的不止一代人,而是好几代人。我相信俄罗斯方块游戏是有史以来,迄今为止使用人数最多的游戏,也是最火的游戏,30多年来,俄罗斯方块游戏一直都存在在我们的事业中,你在qq游戏平台,以及别的平台,还有各个网页平台都能搜索到俄罗斯方块游戏,现代人给了俄罗斯方块更多的定义,可以有双人游戏,甚至还有了积分游戏,玩家可以通过游戏累加积分得到不同的更好的道具以增加游戏的趣味性。在俄罗斯方块刚刚被作者创造出来的时候,因为俄罗斯还是一个社会主义国家,而且还处在冷战时期,游戏的开发已经都有一定的局限性,在当时的俄罗斯并没有推广开来,更没有形成一个产业。人们只是使用电脑复制游戏来玩,仅仅作为一个娱乐的小程序,并没有想到将来造成的经济影响。直到后来几年一个英国的软件公司的制造商到匈牙利拜访时看到有人玩彩色的俄罗斯方块游戏,这个商人以敏锐的经济眼光看到了这个游戏的发展前景,于是,他便到俄罗斯找到游戏的创始人商谈游戏的开发问题。再后来的几年,各大软件制造商开始了疯抢游戏的分销权。也是因为这种竞争,俄罗斯方块传到世界各地,当然也有中国这个大市场。从此,俄罗斯方块游戏影响了中国几代人。 虽然俄罗斯方块的发展经历了30年,但是,依然没有减退她的光辉。在现代电子技术的发展下,俄罗斯方块出现了3d模式,据说2013年还出现了决战俄罗斯 。2.2系统设计流程图图13游戏的运行环境3.1硬件环境 本论文中的代码实在windows 7 旗舰版下运行的,内存为2g,配置有键盘鼠标显示器,程序运行的最低硬件要求有待考究。3.2软件环境 本论文中的编写使用了visual c+6.0,eaysx2013最新版。 easyx为vc+6.0提供了图形库graphics.h,为游戏的设计提供了便利条件。在游戏设计不再单单的创建file文件这么简单,步骤如下: 1.点击file,点击projects,创建win32 console application,定义工程名。注意不能加后缀。确定以后工程创建完毕。 2.点击左侧界面内的工作区,点击已经创建好的工程,打开source files。 3.点击file,创建c+source file,填写文件名,注意文件名不能加.c后缀。图23.3 关于easyx的介绍 在大一期间学习c语言是用到了vc,vc有较好的编辑和调试能力,但是却没有turbo c的绘图能力,而且turbo c这个软件没有更新,过于老旧,连最基本的复制粘贴这种功能都没有。基于这种这种原因,还是用vc设计俄罗斯方块游戏,利用easyx提供的图形库设计俄罗斯方块游戏。 在easyx官网下载最新版压缩包,通过解压找到setup.hta文件,点击这个文件,再点安装库。安装过程中会自动检测到电脑已装的vc,将库文件和头文件分别放入到vc对应的include和lib文件夹中。也可以手动操作,将文件复制到对应文件夹中,这样就可以删掉easyx。 安装完毕后,输入范例程序运行,检查软件必要的环境是不是正确。4 游戏的具体设计4.1方块的设计 首先是要设计游戏的方块,方块是有4*4即16个小色快构成的,0就是没有色块,1就是有色块。按照既定的规律,方块有7钟,分别有z型,反z型,t型,7型,反7型,1型,口型,以下代码为定义结构体boxs,boxs结构体中7个元素就是上述提到到7个类型。boxs7 =/* 口 * 口 * 口 口口口口 * 口 */ 0x0f00, 0x4444, 0x0f00, 0x4444, blue,/* * 口口 * 口口 */0x0660, 0x0660, 0x0660, 0x0660, red,/* * 口 口口口 口口 口 * 口 口 口 口口口 * 口口 口 */0x4460, 0x02e0, 0x0622, 0x0740, yellow,/* * 口 口口 口口口 * 口 口 口 口 * 口口 口口口 口 */0x2260, 0x0e20, 0x0644, 0x0470, magenta,/* * 口 口口 * 口口 口口 * 口 */0x0c60, 0x2640, 0x0c60, 0x2640,green ,/* * 口 * 口口 口口 * 口 口口 */0x0360, 0x4620, 0x0360, 0x4620, cyan,/ * 口 口 口 * 口口口 口口 口口口 口口 * 口 口 口 */0x4e00, 0x4c40, 0x0e40, 0x4640, brown;4.2游戏界面的初始化 initgraph(640, 480)绘图的坐标体系范围是x640像素,y480像素。坐标体默认x轴右为正方向,y轴是以下为正方向,这个是值得注意的,度量单位是象素。坐标原点可以通过 setorigin() 函数修改游戏左下侧设置了游戏的操作说明,使用wasd操作方向。/ 设置坐标原点setorigin(220, 20);/ 绘制游戏区边界rectangle(0, 0, wid* size, hei * size);rectangle(wid + 1) * size , 0, (wid + 5) * size, 5 * size);/ 显示操作说明setfont(14, 0, _t(宋体);outtextxy(20, 330, _t(操作说明);outtextxy(20, 350, _t(上:旋转);outtextxy(20, 370, _t(左:左移);outtextxy(20, 390, _t(右:右移);outtextxy(20, 410, _t(下:下移);outtextxy(20, 430, _t(空格:沉底);outtextxy(20, 450, _t(esc:退出);4.3游戏界面加入背景图片 为了增加游戏的美观度,我为游戏背景增加了图片,图标路径用双斜杠。/ 主函数void main()/ 使用640*480色素的绘图框初始化initgraph(640, 480);/ 找到图片,将图片引用到绘图框loadimage(null,d:msdev98myprojectspictur514ff62248d5b962df15471a.jpg);/ 按任意键退出getch();closegraph();4.4 游戏加入背景音乐为了增加游戏的娱乐性,我为游戏添加了背景音乐,音乐使用童年经典的叮当猫。加音乐的部分多使用了一个库文件,导入winmm.lib库,告诉编译器要用到得winmm.lib库 ,这样就可以使用windows的多媒体,并找到音乐开始播放。此处的音乐文件要放到程序新建的工程文件夹中,即project中,pragma可以搜索工程文件夹找到音乐文件,并利用windows多媒体的播放器将找到的音乐播放。#include #include #pragma comment(lib,winmm.lib)void main()initgraph(640, 480);/ 找到工程文件夹中的音乐mcisendstring(_t(open 叮当猫.mp3 alias mymusic), null, 0, null);outtextxy(0, 0, _t(俄罗斯方块游戏);_getch();/使用windows的播放器播放音乐mcisendstring(_t(play mymusic), null, 0, null);_getch();closegraph();4.5 方块的初始化 初始化俄罗斯方块,编写代码将方块表示在游戏中。用到了bar跟bar3d这两个函数,这两个函数同属于图形库。这两个函数是easyx新增的函数,是具有三围立体效果,大大的提高了游戏的可观赏性。一下仅介绍bar3d()的用法,该函数用于画有边框填充矩形。函数中有depth这个参数,矩形深度,使方块具有立体感。void bar3d( int left, 矩形左坐标x int top, 矩形上坐标y int right, 矩形右坐标x int bottom, 矩形下坐标y int depth, 矩形的深度 bool topflag 当该值为false时,不画顶部);具体代码如下void drawboxs(boxsinfo _boxs, draw _draw)word b = g_boxs_boxs.id.dir_boxs.dir;int x, y;int color = black;switch(_draw)case show: color = g_boxs_boxs.id.color; break;case hide: color = black;break;case fix:byte r = getrvalue(g_boxs_boxs.id.color) * 3 / 4;byte g = getgvalue(g_boxs_boxs.id.color) * 3 / 4;byte b = getbvalue(g_boxs_boxs.id.color) * 3 / 4;color = rgb(r, g, b);break;setfillcolor(color);for(int i=0; i16; i+)if (b & 0x8000)x = _block.x + i % 4;y = _block.y - i / 4;if (y hei)if (_draw != hide)bar3d(x * size + 2, (hei - y - 1) * size + 2, (x + 1) * size - 4, (hei - y) * size - 4, 3, true);elsebar(x * size, (hei- y - 1) * size, (x + 1) * size - 1, (hei - y) * size - 1);b = max(g_curboxs.y - 3, 0); y-)i = 0;for(x = 0; x wid; x+)if (g_worldxy = 1)i+;if (i = wid)brow = true;rowg_curboxs.y - y = 1;setfillcolor(white);setfillstyle(diagcross2_fill);bar(0, (hei - y - 1) * size + size / 2 - 2, wid* size - 1, (hei - y - 1) * size + size / 2 + 2);setfillstyle(solid_fill);5测试运行5.1游戏代码输入到vc中将代码按照先建立工程再建立文件的顺序,输入代码。编译正确后运行。图3 编译运行正确后0错误,0警告。5.2游戏结束时弹出来的对话框图45.3绘图框中的游戏界面图5图6结束语本文介绍了俄罗斯方块这款风靡世界的游戏的设计思路及其编程实现。重点介绍各功能模块的设计原理和数据结构的实现。通过本论文程序的编写和开发,进一步的提高了我的基本编程能力和游戏开发技巧,使我熟悉了c语言图形模式下的编程。深入的理解了程序中有关结构体、数组及绘图等方面的知识。通过本程序的训练,使我对c语言有了一个更深刻的了解。本文的程序设计借鉴了参考书籍和互联网上相关程序的设计思想,在此对相关网站的源代码提供者表示衷心的感谢。由于时间、经验及水平的原因,论文中难免有不足之处。许多问题往往都不是只有一种解决方法,本游戏的开发也是如此,可以对此程序进行优化和功能完善或者使用不同方法来实现某些功能,以达到学以致用的目的参考文献1苏小红.c语言大学实用教程m.北京:电子工业出版社,19882荣软科.visualc+游戏设计m.北京:北京科海电子出版社,19933严蔚敏,吴伟民.数据结构(c语言版)m.北京:清华大学出版社,19904仇芒仙,张丽华.c语言程序设计案例教程m.北京:清华大学出版社,1997 5姜灵芝,余健.c语言课程设计案例精编m.北京:清华大学出版社,20066stanley b. lippman.barbara c+primer中文版m.(美)北京:人民邮电出版社,20097谭浩强.c+程序设计m.北京:清华大学出版社,20078黄维通.visualc+面向对象与可视化程序设计m.北京:清华大学出版社,19899张敏.c程序与算法思想m.北京:高等教育出版社,201010周纯杰,刘正林.标准c语言程序设计及应用m.北京:华中科技大学,2005致谢在大学的四年转眼就要结束了,经过了一段时间的努力,我的俄罗斯方块游戏(c语言)这篇论文终于完成了。对这次论文的编写使我受益非浅,我深刻的认识到理论和实践相结合的重要性,除了自身的努力之外,与各位老师、同学和朋友的关心、帮助和鼓励是分不开的,尤其是我的指导老师梁国栋,从游戏的设计、编写到程序的修改再到毕业论文定稿,梁老师一直悉心地指导我,使我受益非浅。the design of tetris based on c languagetetris is a popular around the world to design a small simple lcd game, although already old, but as a learning c language or can be used as a good example. tetris box is composed of four small square black patches, the establishment of a structure
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63522-37:2025 EN-FR Electrical relays - Tests and measurements - Part 37: Terminal temperature rise at rated load
- 幼儿中班《面包汽车》主题课件
- 2024年基础医学试题库(附答案解析)
- 《创业心得交流张华》课件
- 社会工作在孤残儿童收养中的作用考核试卷
- 《神奇的视觉图形之旅》课件
- 海洋旅游发展趋势考核试卷
- 船舶拆除项目环境保护措施与实施考核试卷
- 消费机器人市场竞争策略研究考核试卷
- 证券市场跨境监管合作与协调考核试卷
- 康复治疗技术-言语康复
- 闯关迷宫课件教学课件
- 年处理4万吨丙酮-水连续精馏塔设计
- 年终分红方案-员工利润分红方案
- 劳务挂靠合同范本(2篇)
- 商务会议花卉布置合同
- 构美-空间形态设计学习通超星期末考试答案章节答案2024年
- 踝泵运动健康宣教课件
- 数易姓名学完整版本
- 校园小品《我的未来不是梦》剧本
- 智慧火电厂综合安防解决方案
评论
0/150
提交评论