C语言程序设计实习项目

C语言程序设计实习项目

闲来无事做做总结~感叹自己年少无知,当初设计的界面真的是毫无美感啊。。。但一番心血,留下自己成长的痕迹。

  • 灵感来源:以宫崎骏经典动漫《龙猫》中的龙猫和煤球为原型,设计的一款线上闯关小游戏。
  • 开发工具:Funcod平台,CodeBlocks,PhotoShop。
  • 项目名称:多多洛之迷失森林

目录

一、作品概述
1.1 背景故事
1.2 作品创意
1.3 主要功能
1.4 创新点
二、功能设计
三、功能实现
3.1 数据结构
3.2 算法描述
3.2.1 精灵的初始化
3.2.2 游戏开始和控制按钮
3.3 关键问题
3.3.1 人物二连跳系列问题
3.3.2 游戏中途难度加大
3.3.3 人物动画制作
四、系统界面
五、小组分工
六、总结

一、作品概述

1.1 背景故事
居住在森林深处的龙猫(又名多多洛)一族,数千年来很少在人前露面,但都是由于近些年来大自然受到破坏,越来越多的灰尘精灵入侵,打破了原本宁静的森林环境。于是多多洛一行决定召唤猫车巴士,走出森林,向外界寻求帮助。
但是邪恶的灰尘精灵在森林中设置了重重关卡,多多洛一不小心就会迷失在森林中。它们为找到通关大门,一路上躲避灰尘精灵的袭击,并收集能召唤出猫车巴士的能量球。
勇敢的三只龙猫日夜兼程,终于突破重围乘坐猫车巴士找到了它们的好朋友小月和小梅,消灭了灰尘精灵。他们又可以在森林中享受风吹虫鸣,自由地玩耍了。
1.2作品创意
1.素材选取:取材于宫崎骏动漫《龙猫》,勾起人们的童年回忆,使用PS等软件进行处理后,重新设计组合成游戏画面。
2.人物弹跳:龙猫可以通过上下左右键实现连跳和游动。
3.精灵之间碰撞:龙猫与台阶、龙猫与彩球、龙猫与煤球的碰撞效果不同。
4.路的拼接:每一关台阶的数量和效果不同,随着难度增加,数量会减少,宽度变小(使难以停留),通关门的虚实和出现也不同。
5.背景音乐:主旋律《我的邻居龙猫》,贴合故事背景和人物设计。
6.背景滚动:采用3层以上图片实现基本3D效果;同时每一层图片的速度不同,从而给玩家一种视觉上的冲击;多次场景调换,没有重复感。
1.3 主要功能
1.通过上、下、左、右键来控制龙猫的弹跳行动,实现碰撞积分,操作简单,但要求用键的灵活性。
2.龙猫需要躲避煤球,利用人物的连跳,考验玩家的反应能力和灵活性。
3.煤球从上边界随机出现,彩球在第二、三关从左右边界随机出现,同时改变X和Y方向的速度。并且在第三关会有煤球和彩球的碰撞,增加游戏的难度和不确定性。
4.通关门设置真假、隐藏功能;台阶的用以支撑龙猫不能掉下来,同时每一关的数量、位置不同,增加游戏难度。
5.每一关必须在一定时间内,把所有的彩球(10个)吃完,然后找到门,才能进入下一关。
1.4 创新点
1.每一关选用不同年龄阶段的龙猫(幼年、少年、成年),增强画面和故事性。
2.第三关煤球和煤球,彩球和彩球,煤球和彩球之间会发生碰撞而拥堵,造成道路堵塞,所以龙猫需要及时躲避煤球,吃掉彩球才可以。

二、功能设计

1.游戏运行,初始界面会出现**‘play’**的提示,并且游戏的主要人物龙猫和煤球会出现在界面,并设有眨眼的特效,鼠标变为煤球的样子。
2.玩家鼠标左键单击开始游戏,进入选关界面,鼠标左键单击相应的关卡开始游戏。
3.游戏开始后,玩家每按一次上键和右键或上键和左键,龙猫会向右上或左上方向移动相应距离,当松开按键龙猫会自动落下,从而产生跳的效果。当玩家每按一次键盘,龙猫会在当前的位置向相应的方向移动一段距离,从而产生连跳的特效。
4.游戏中,玩家控制的龙猫如果碰到彩球,则会增加一定分数。
5.每过一关游戏设置都不相同,龙猫从小到大,且每一关都是不同的样子,彩球从静到动,通关门从一个到三个再到消失,从而增加游戏难度。
6.当玩家失误,龙猫碰到煤球或下边界,或生命时间减到0,就会出现游戏失败结束界面,单击鼠标左键再次进行选关。
7.玩家成功通关以后,会出现胜利的通关界面。单击鼠标左键可重新挑战游戏。

三、功能实现

3.1 数据结构

3.2 算法描述
游戏状态g_iGameState分为三种状态0,1,2 ,其中0表示游戏结束状态,1表示游戏初始化,2则表示游戏运行状态。
0 1的转换为点击相应的按键。
1 2的转换自然发生,即游戏初始化函数后会自动将游戏状态从1置为2。
2 表示游戏运行状态,在该状态,敲击上、下、左、右键可以使人物运动。
2 0的转换为当前局结束,转换新的场景。
3.2.1 精灵的初始化
1.创建煤球、彩球的模板,并保存。
2.创建龙猫和台阶,放于游戏界面内。
3.根据怪物、彩球模板复制相应的精灵,初始化速度。
4.初始人物和障碍物的位置以及开始游戏。
3.2.2 游戏开始和控制按钮
1.游戏还未开始,即游戏状态为0,如果点击开始按钮,则将游戏状态改为1,此时对程序的数据进行初始化。循环一次之后,游戏的状态变为2,此时游戏开始运行。
2.如果按上键时,“人物”会向Y轴负方向移动相应距离,再次按上后,”人物“会在当前位置上移动相应距离。并且动作连贯,形成跳跃的效果。
3.每个关卡会实时显示时间和所得分数。每一关卡结束后会出现过关界面,点击鼠标左键开始下一关。若游戏失败,会出现游戏结束界面,点击鼠标左键重新选择关卡进行游戏。
3.3 关键问题
3.3.1 龙猫连续跳系列问题
答:给龙猫设置一个向下的常力,龙猫不踩台阶时会自动落下,按住上键可使龙猫上升,由于动作连续,可形成连续跳跃的效果。
3.3.2 道路拼接设置
答:第一关相对简单,彩球静止不动,龙猫吃掉所有彩球到达通关门即可过关。第二关彩球从左右屏幕随机出现,并且三个门之中只有一个门是真的,且当龙猫碰到某个假门时台阶会消失。第三关彩球从左右屏幕随机出现,通关门消失,只有完成指定任务后门才会出现。
3.3.3 人物动画制作
答:我们的动画先用photoshop裁剪,然后根据标尺,精确定位。然后计算图片制作时所需要减去的宽度,制作一张包含各帧的图片,最后进行制作动画。

四、系统界面

C语言程序设计实习项目
图4-1 开始游戏界面

C语言程序设计实习项目
图4-2 第一关界面

C语言程序设计实习项目
图4-3 选关界面

C语言程序设计实习项目
图4-4 第二关界面

C语言程序设计实习项目
图4-5 第三关界面

C语言程序设计实习项目
图4-6 失败界面

C语言程序设计实习项目
图4-7 通关界面

C语言程序设计实习项目
图4-8 成功界面

五、小组分工

六、总结