收藏 分销(赏)

C语言游戏开发设计项目说明指导书.doc

上传人:二*** 文档编号:4515129 上传时间:2024-09-26 格式:DOC 页数:14 大小:109KB
下载 相关 举报
C语言游戏开发设计项目说明指导书.doc_第1页
第1页 / 共14页
本文档共14页,全文阅读请下载到手机保存,查看更方便
资源描述
2048游戏项目需求分析 一、项目概述 2 二、需求分析 2 1.游戏开发趋势和特色 2 2.游戏操作需求 2 3.开发环境 3 三、概要设计 3 四、程序步骤图 4 五、具体设计 5 3.颜色以下: 5 4.光标位置等格式控制 6 5.终端控制 7 六、游戏运行说明 10 1.游戏运行步骤图 10 七、扩展说明 10 1.扩展功效框图 10 一、项目概述 2048是一款简单小巧益智类游戏,挑战您智力极限,借鉴1024和小3传奇游戏开发而成,难度相对有所下降,是一款让您根本停不下来游戏。 游戏规则:滑动屏幕或方向键来移动小方块,两个数字一样小方块相撞时就会相加合成一个方块,每次操作以后会在空白方格处随机生成一个2或4方块,最终得到一个2048方块就算胜利了, 假如16个格子全部填满且无法移动话GAMEOVER。 二、需求分析 1.游戏开发趋势和特色 Linux特点就是代码开源。开放平台使更多开发者参与到游戏代码优化和完善当中,一个崭新游戏也很快走向成熟。 伴随计算机技术不停发展,硬件已经不在是游戏发展瓶颈。游戏计划愈加向专业化方向发展。  1. 将向网络化方向发展,伴随各平台对无线通信网络、WIFI网络、蓝牙网络良好支持,游戏将创新出愈加好游戏性和用户本验。网络游戏,多人游戏,联机对战等将深入强化玩家对游戏粘着度,而且轻易经过对道具等控制产生营利模式。玩家之间对交互能力需求也会促成未来游戏向网络化发展进程加紧。 2.将向休闲化、时间片化方向发展,移动设备随身性使是休闲小游戏将得到快速发展。移动设备对分散时间利用促进了游戏向时间片化发展,即一个游戏能够随时开始,随时结束,充足利用用户分散时间片来运行。   所以2048这个休闲益智手机游戏就应运而生,一经公布就占据各大手机游戏下载排行榜前列,这是一款老少皆宜手机游戏,在空闲时间你能够拿出手机来玩,上班、下班、坐公交、等地铁,你随心随意愉快玩耍。它简单易上手,只需滑动手指就能够操作,但却有难精通,要打通关卡却不是一件轻易事情 经过C语言控制台仿写这个游戏,能够锻炼编程框架思想和技巧,同时将所学到数据结构等知识灵活利用。  2.游戏操作需求 1、可使用鼠标或↑、↓、→、←或W、X、A、D键进行操作; 2、ESC 退出游戏 3.开发环境 运行环境:centos6.2 开发环境:vim编辑器 编写语言:c语言 三、概要设计 1、游戏开始时随机产生2个数值为2/4方格,其中1个方格置于4个角中一个位置, 另一个方格随机置于其它位置,其它方格值为0。 2、每次移动鼠标或按方向键后,逐行计算移动后方格值。每行移动算法是:先将全部值为0数移至行首。能后从行尾开始逐一和前一个数比较,假如相等则合并这2个格子。 3、每合并一次格子,将其值累计到游戏总分中。 4、一次移动结束后,在全部值为0方格中随机分配一个2/4值。 5、全部方格值不为0且上下、左右相邻方格全部不相等,则游戏结束。 6、2出现概率为90%,4出现概率为为10%。 四、程序步骤图 五、具体设计 1.控制Linux终端打印字符颜色和位置 Linux 终端控制台字体颜色,用到一个 转义序列 \e[F;B;Om \e 转义字符开始,ESC ASCII 码用十进制表示就是 27,等于用八进制表示 033。 \e 或 \033 申明了转义序列开始(经过测试,F、B次序能够交换,也可省略) [ 开始定义颜色。 'F' 为字体颜色,编号30~37; 'B' 为背景色,编号40~47。 'O' 为特殊意义代码 它们次序没相关系。 m 是标识 m 后面不用跟空格,是所定义彩色字和背景 使用方法一: 格式 printf("\033[字体颜色; 字背景颜色m输出字符串\033[0m" ); 例子:printf("\033[31; 47;1mhello world\033[5m\n"); 说明:31是字体颜色,47是字背景颜色, , hello world是字符串. ,1m表示高亮显示,后面\033[5m是控制码 使用方法二: 格式: echo -e "\033[字体颜色;字背景颜色;1m字符串\033[0m" 例子: echo -e "\033[36;41;1m something here \033[0m" 说明:其中41位置代表底色, 36位置是代表字颜色 \033[ ; m …… \033[0m ---这些ascii code是对颜色调用始末. 2.字体颜色和背景色 字背景颜色范围: 40--49 字颜色: 30--39 40: 黑 30: 黑 41:红 31: 红 42:绿 32: 绿 43:黄 33: 黄 44:蓝 34: 蓝 45:紫 35: 紫 46:深绿 36: 深绿 47:白色 37: 白色 3.输出特效格式控制(特殊意义码) ===========ANSI控制码说明============= \033[0m 关闭全部属性 \033[1m 设置高亮度 \033[4m 下划线 \033[5m 闪烁 \033[7m 反显,反白显示 \033[8m 消隐,不可见 \033[30m -- \033[37m 设置前景色 \033[40m -- \033[47m 设置背景色 \033[nA 光标上移n行 \033[nB 光标下移n行 \033[nC 光标右移n行 \033[nD 光标左移n行 \033[y;xH设置光标位置 \033[2J 清屏 \033[K 清除从光标到行尾内容 \033[s 保留光标位置 \033[u 恢复光标位置 \033[?25l 隐藏光标 \033[?25h 显示光标 4.颜色以下: none = "\033[0m" black = "\033[0;30m" dark_gray = "\033[1;30m" blue = "\033[0;34m" light_blue = "\033[1;34m" green = "\033[0;32m" light_green -= "\033[1;32m" cyan = "\033[0;36m" light_cyan = "\033[1;36m" red = "\033[0;31m" light_red = "\033[1;31m" purple = "\033[0;35m" light_purple = "\033[1;35m" brown = "\033[0;33m" yellow = "\033[1;33m" light_gray = "\033[0;37m" white = "\033[1;37m" 5.光标位置等格式控制 \033[nA 光标上移n行 \03[nB 光标下移n行 \033[nC 光标右移n行 \033[nD 光标左移n行 \033[y;xH设置光标位置 \033[2J 清屏 \033[K 清除从光标到行尾内容 \033[s 保留光标位置 \033[u 恢复光标位置 \033[?25l 隐藏光标 \33[?25h 显示光标 代码实例:color.c 6.终端控制 struct termios struct termios org, new; 终端状态 tcgetattr() 获取状态org STDIN_FILENO : 终端相关宏 memcpy() 内存拷贝函数 struct stu a,b; a = b; xxxxx memcpy(&a, &b, sizeof(struct stu)); 24 行 , &= ~ 位运算 设置终端新状态 tcsetattr(new_opts),修改目前状态 c=getchar(); tcsetattr(old_opts), 恢复之前状态 键盘输入--方向键--由三个字符表示: 上: 27 91 65 下: 27 91 66 右: 27 91 67 左: 27 91 68 终端控制文档说明 代码实例 termios_control.c 7. 数据结构、绘图 相关数据结构、数据类型定义 相关头文件定义中 游戏状态、按键方向、4x4方格数据值(使用二维数据存放)、实施步数、取得分数 绘制界面--4x4方格并显示数据值、实施步数、取得分数 依据color.c , 打印方格及数值, 代码实例 draw.c draw_box() 键盘控制数据方块移动 绘制图形、方向控制、更新画面 代码实例 draw.c main函数实施步骤 step 5 位运算 -5 : 原码 1000 0101 反码 1111 1010 补码 1111 1011 9 : 0000 1001 -5 & 9 0000 1001 00000011 3 00001100 12 1<<1 1 * 2^1 1<<2 1 * 2^2 1<<3 1 * 2^3 x = 1100 1010 0000 0001 0010 0000 1110 1010 1110 1010 x = (1<<5) | x x |= (1<<5) 0100 0000 1011 1111 1010 1010 x = x & ~( 1<<6) x &= ~(1<<6) step9:合并算法 将一维数组转换为二维 RIGHT: 对每行处理:i=0; i<4; i++ 从右边开始计算, j=3 , 用于从右到左循环移动、合并 deep = 3, 用于从右到左存放 box_4x4[i][deep] = box_4x4[i][j] deep = 2 merge_line i=0; box2[0][j] = box[j] box2[1][j] = box[4+j] box2[2][j] = box[8+j] 参考 merge.c 完整代码 my2048.c 六、游戏运行说明 1.游戏运行步骤图 七、扩展说明 可增加排名、存档和读档等功效 1.扩展功效框图
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服