最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 俄罗斯方块改进2016年4月20日设计题目学号专业班级学生姓名指导

    《2022年C语言课程设计报告俄罗斯方块改进版.pdf》会员共享,可在线阅读,更多相关《2022年C语言课程设计报告俄罗斯方块改进版.pdf(16页珍藏版)》请在 Deli Library 上搜索 – 一个共享文档和赚钱的网站。

    1、课程设计俄罗斯方块改进2016年4月20日设计题学号专业班级学生姓名教师素质信息- – – 欢迎下载- – – – – – – – – – 欢迎下载名师归纳- – – – – – – – – 第 1 页,共 16 页 – – – – – – – – – – 目录 1. 课程设计目的。 错误!未定义书签。 2. 特征分析。 错误!未定义书签。 3. 编程实现。 错误!未定义书签。通用程序设计结构。 错误!未定义书签。用户界面设计。 错误!未定义书签。重要数据的数据结构设计。 错误!未定义书签。功能设计。 错误

    2、!未定义书签。 4. 运行效果。 错误!未定义书签。 5. 源码说明。 错误!未定义书签。 6. 参考资料。 错误!未定义书签。质量信息- – – 欢迎下载- – – – – – – – – – – 欢迎下载名师入会- – – – – – – – – -第2页,共16页- – – – – – – – – 俄罗斯积木改进1.课程设计题根据百度百科,俄罗斯方块是俄罗斯人Alexei Pajitnov于1984年6月发明的一款休闲游戏。游戏的基本规则是移动、旋转和放置自动输出的各种积木。游戏形成一个完整的线或线并消除得分。请求支持

    3、通过键盘操作和7种不同类型的方块旋转变换c语言输出有色方块,界面显示下一个方块的提示和当前玩家的分数。随着游戏的进行,关卡越高,游戏难度越大,即方块的下落速度越快,对应的关卡,关卡越高,消除一排获得的分数越高,提供玩家有不同的选择。 2. 功能分析俄罗斯方块游戏需要解决的问题包括:按任意键启动游戏、随机生成方块并自动下移并使用Esc键退出游戏。使用按键改变积木使用按键和按键左右移动积木使用按键加速积木并向下移动使用空格键暂停积木正确判断全线和消除线,得分,和关卡 将游戏块设置成不同的形状 要点: *游戏面包数据结构:二维数组 * 7种形状块的数据结构:结构中保存了每个形状块的坐标精品数据- – – 欢迎下载- –

    4、 – – – – – – – – – 欢迎下载名师总结 – – – – – – – – – -第 3 页,共 16 页 – – – – – – – – – 3.程序设计与实现过程 整个程序设计结构首先初始化进入图形模式,进入欢迎界面,玩家可以按任意键进入主菜单界面,按 键进入游戏界面,然后设置一个新的时钟中断。启动游戏后,进入程序的核心部分,对过程中的各种事件和功能进行处理和实现。在此过程中,判断游戏是否结束,如果没有,则重新开始游戏,否则结束游戏。具体如下:(1)游戏块预览功能。在游戏过程中,当一个游戏块出现在游戏板中时,下一个游戏块必须出现在游戏块预览区,有利于游戏的进行

    5、在家控制比赛的策略。由于本游戏有19个不同的游戏块,随机生成的游戏块需要在游戏块预览区展示。 (2)游戏方块控制功能。通过对各种条件的判断,游戏方块可以左右移动,快下,自由落体,旋转,以及线满时消除线的功能。俄罗斯方块游戏初始化图形模式(欢迎界面) 进入菜单选项 开始新游戏 游戏帮助 游戏说明 退出游戏 游戏排名精品信息- – – 欢迎下载- – – – – – – – – – – 欢迎下载名师感应- – – – – – – – -Page 4 of 16 – – – – – – – – – – 是否是游戏执行的主流程图(3)游戏显示更新函数。判断键值时,有一个左移VK_L

    6、EFT,右移VK_RIGHT,下移VK_DOWN,变换旋转VK_UP,退出VK_ESC键值判断。当游戏块左右移动、下落、旋转时,清除前一个游戏块,并用新坐标重新绘制游戏块。当整条线被消除时,游戏板的当前状态被重新绘制。 (4)游戏速度分数更新功能。玩家在游戏过程中,需要根据某个游戏开始游戏,游戏方块控制功能,游戏方块预览功能,游戏显示更新功能,速度分数更新功能, 游戏结束退出功能, 游戏结束恢复功能 原时钟中断 关闭图形模式 返回菜单

    7、- – – – – – – – – 玩家计算游戏分数的游戏规则。例如,消除一行会增加 10 分。当游戏分数达到一定数量时,玩家需要升级。每升一级,游戏方块的下落速度就会增加,游戏难度也会增加。 (5)游戏帮助函数。玩家进入游戏后,会有游戏操作的友好提示。主要函数:void main() InitializeGraph(); SetTimer(newtimer); /*设置一个新的时钟中断*/ while(1) StartGame(); ProcessInGame(); if(GameOver() break; bOver = FALSE; KillTimer(); clos

    8、egraph();界面设计分为两部分: *左侧是游戏面板 *右侧有下个形状提示框、速度框和计分框精品信息三部分- – – 欢迎下载 – – – – – – – – – – 欢迎下载名师归纳- – – – – – – – – 第6页,共16页 – – – – – – – – – – 数据结构重要数据的设计1)定义块形状:定义如下结构来表示每个形状:struct block int arrXY8;诠释 nColor; int nNext; /*保存一定形状信息的结构体*/ Struct SHAPE shapesMAX_BOX=mouthmouthmouthMouth,mouth,mouth,mouth,mouth

    9、端口 0 x88, 0 xc0, CYAN, 1, 0 xe8, 0 x0, CYAN, 2, 0 xc4, 0 x40, CYAN, 3, 0 x2e, 0 x0, CYAN, 0, 0 x44, 0 xc0, MAGENTA, 5, 0 x8e, 0 x0, MAGENTA, 6, 0 xc8, 0 x80, MAGENTA, 7,精品 – – – 欢迎下载- – – – – – – – – – – 欢迎来到下载名师总结- – – – – – – – -Page 7 of 16- – – – – – – – – – 0 xe2, 0 x0 , MA

    10、绅士, 4, 0 x8c, 0 x40, 黄色, 9, 0 x6c, 0 x0, 黄色, 8, 0 x8c, 0 x6c, 0 x0, 黄色, 8, 0 x4c, 0 x80, 棕色, 11, 0 xc6, 0 x0, 棕色, 10, 0 x4e, 0 x0, 白色, 13, 0 x8c, 0 x80, 白色, 14, 0 xe4, 0 x0, 白色, 15, 0 x4c, 0 x40, WHITE, 12, Kou Ko Ko Ko Ko Ko Ko Ko Ko Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou Kou寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇寇可下载- – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 欢迎下载名师总结- – – –

    11、 – – – – – -第 8 页,共 16 页 – – – – – – – – – – – 0 x88, 0 x88, RED, 17, 0 xf0, 0 x0, RED, 16,嘴嘴嘴 0 xcc, 0 x0, BLUE, 18) , 2) 定义游戏主界面:一个宽度为1的游戏板0、高度为20(1) 数据结构:全局数组Gameboard1222c语言输出有色方块,1表示已有方格,0表示该位置为空,在10*20的基础上增加2行2列,方便判断形状是否到达边缘或移动时的底部。坐标系原本是640*480。在这个游戏中,16个像素被定义为正方形的边长,所以坐标系变成了40*30(640/16=40

    12、,480/10=30)。 (2)玩家在玩游戏的时候,需要初始化游戏界面。这段代码由main()函数调用,主要工作如下:循环line()函数绘制当前游戏板.调用nScore()函数显示初始等级,初始等级为0.调用npeed()函数显示初始速度(级别),初始速度为1。* *注:x,y为坐标左上角* * m,n分别对应Vertical_boxs,Horizo​​ntal_boxs * * 分别表示垂直和水平方向的方格数(以方格为单位) * BOARD_LEFT_X,BOARD_LEFT_Y * 函数设计 1. 本程序由main函数和一个函数:这个程序总共由2个组成

    13、4 个函数。 2.函数交互关系见下图 – – – – – – – – No KillLine(int)IsLineFull(int)DrawSquare(int,int)IsConflict(int,int,int)DrawBlock(int,int,int, int)KillLine(int)IsGameOver()HandleDown (int,int*x, int *y)HandleUp(int *,int *x, int

    14、 *y)HandleRight(int,int *x, int *y)HandleLeft(int ,int *x, int *y) 游戏介绍 help() 初始化模式进入欢迎世界 win( ) main Menu menu()InitializeGameboard() 开始游戏 处理游戏中的各种事件 ProcessInGame() 初始化图形模式InitializeGraph(设置新的时钟中断 SetTimer(* (void)(*IntProc) (void) 游戏是否结束 GameOver ()interrupt()恢复原来的时钟中断 KillTimer()关闭图形模型并返回主菜单菜单()退出程序

    15、 – – – 欢迎下载- – – – – – – – – – 欢迎下载名师总结 – – – – – – – – -第10页,共16页- – – – – – – – – – 四、函数使用函数原型函数函数函数处理描述void中断newtimer(void)新时钟中断处理函数调用(*oldtimer)()函数语句句柄,定时器自动加1 void setTimer(void interrupt(*IntProc)(void)指向原时钟中断处理进程入口的中断处理函数(handle) void KillTimer()恢复原时钟中断处理进程,调用setvect()恢复

    16、原来的时钟中断过程void InitializeGraph()初始化图模式1、调用initgraph()切换到图模式2、如果初始化时出错,会返回错误密码 void InitializeGameboard() 初始化游戏面板和下一个形状提示框、计分框和难度框1、调用bar() rectangle()等库函数绘制函数绘制游戏界面2、调用outtextxy()函数质量信息- – – 欢迎下载- – – – – – – – – – – 欢迎下载名师上岗- – – – – – – – – 第11页,共16页- – – – – – – – – – 显示文本 void DrawS

    17、quare(int x, int y) 在坐标 (x,y) 处绘制块调用库函数 bar() 绘制块 void DrawBlock(int BlockIndex, int sx, int sy ,int color) 在坐标 (sx, sy ) 处用颜色 color 绘制形状 调用 DrawSqueare() 函数绘制形状 int IsConflict(int BlockIndex, int x, int y) 判断该形状是否存在于坐标 (x, y ) 没有冲突返回0,如果有冲突返回1void HandleLeft(int BlockIndex, int *x, int *y) 左箭头键按下时的处理函数调用IsConflic(

    18、) 函数判断形状是否可以向左移动,void HandleRight(int BlockIndex, int *x, int *y) 右箭头键按下时的处理函数调用IsConflic () 函数判断形状是否可以右移, void HandleUp(int *BlockIndex, int *x, int *y) 当向上箭头键(旋转键)按下时,处理函数调用IsConflic()函数判断形状是否可以旋转, int HandleDown(int BlockIndex, int * x, int 按下方向键或者自由落体回0,如果不能下落则回细数据– – 欢迎下载- – – – – – – – – – 欢迎下一个

    19、知名师归纳- – – – – – – – – Page 12 of 16 – – – – – – – – – – *y) 被处理函数返回到 1 时下降,并做相应处理 int IsLineFull(int y) 判断y行是否已经填满返回1,否则返回0void KillLine(int y) 消除第y行 函数用于处理删除的情况一条完整的线。 y 指定哪一行是满的,将消除的行设置为背景色 int KillLines(int y) 消除第y行和第y行上方的填充行,返回要消除的行数 int IsGameOver() 判断是否游戏结束并在游戏结束时返回1,否则在

    处返回0int GameOver()

    20、界面输出游戏结束的信息,根据用户的按键选择决定是否退出游戏退出游戏并返回1,否则返回to 0void StartGame() 游戏开始时1、绘制界面需要微调信息- – – 欢迎下载- – – – – – – – – – 欢迎下载名师总结- – – – – – – – – – Page 13 of 16 – – – – – – – – – 调用该函数使用函数InitializeGameboard()2,然后初始化游戏板的各个方格和初始值一些全局变量。 void ProcessInGame()的核心函数主要用于处理游戏中的各种事件(比如按下各种按钮)调用HandleUpO和Han

    21、dleDown()、HandleLeft()、HandleRight()等事件处理函数void main()主进程函数main函数入口,整个游戏的主控部分4.运行效果5. 详细源码#include #include #include 质量信息- – – 欢迎下载- – – – – – – – – – – 欢迎下载名师总结- – – – – – – – -第 14 页,共 16 页 – – – – – – – – – #include 参考文献 C 程序设计第四版 作者:谭浩强 清华大学出版社 C 语言程序设计 刘国成科学出版社 从问题到程序 邱宗彦 北京大学出版社 计算机辅助课程 刘瑞庭 南开大学出版社

    22、C语言编程基础课程- – 欢迎下载名师归纳- – – – – – – – – -第15页,共16页 – – – – – – – – – – 设计专题俄罗斯方块提高成绩课程设计 主要内容设计 一、游戏UI设计 绘制​​草图来设计游戏UI的大小和方向。通过合理设置游戏UI界面,将带来更加愉悦的游戏体验,给游戏玩家留下深刻的印象。初始UI渲染完成后,是程序结构更重要的一步,也就是算法的合理选择,一个程序的好坏不能仅仅由它的UI来决定

    23、是对算法是否合理、程序资源分配是否优化的评价。本程序采用数组和UI界面相结合的方式来判断游戏规则。由于使用了TC编译平台。无法提供丰富的预定义功能。因此,除了一些头文件之外的所有函数都是稍后编写的。如此一来,相比于易用的VC+编译平台,更具有实用的操作能力。更有意义。但同时牺牲了开发效率。 UI后期游戏中的绘图是基于数组中值的变化。设计好 UI 和算法之后。进入最后调试阶段。在调试阶段,通过程序的调试,发现了很多严重的问题。经过无数次的修改,最终的方案还是比较接近预期的设计效果。由于设计能力有限,部分游戏功能没有体现出来,设计师表示遗憾。在以后的学习中会不断改进,谢谢。教师点评签名:20年,月,日,精品- – – 欢迎下载- – – – – – – – – – – 欢迎下载名师入职- – – – – – – – -第16页,共16页- – – – – – – – – –

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 俄罗斯方块改进2016年4月20日设计题目学号专业班级学生姓名指导

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论