祖玛 C语言作业

分享18级同学大一上学期用C语言实现的祖玛。分步骤代码、图片音乐素材、可执行程序可从百度网盘下载:

链接:https://pan.baidu.com/s/1klPi-7s7a60dI71ddlOmYw

提取码:8qr5

一.游戏介绍

游戏的主角是佩奇,佩奇会吐出各种颜色的珠子,环绕着石青蛙的是承载珠子的轨道,各种颜色的珠子沿着轨道往前滑动,佩奇必需遏止珠子滚进轨道终点的房顶。佩奇吐出的珠子与轨道上的珠子相结合,连续三颗颜色相同即可消失得分,当轨道上的所有珠子被消除干净时即取得游戏的胜利。当珠子碰到房顶游戏失败。

你可以:按下鼠标左键发射小球;按下鼠标右键更换小球颜色;按下ESC键暂停游戏;游戏结束后你也可以选择再来一局或是退出。

二.设计思路

整个祖玛游戏我们首先分为两大部分,第一部分是素材,第二部分是功能。

1.素材里面分为四大部分:中间的佩奇,背景,小球、房子和音乐。小球共五种颜色,用EasyX实现。音乐分背景音乐、失败音乐、成功音乐和吐球的音乐。

2.功能分为两大部分:中间的佩奇的旋转和小球的处理。

1) 中间的佩奇和即将吐出的球利用EasyX实现随鼠标转向。

2) 行进中的小球需要实现出洞、沿路线前进、进洞游戏失败。首先利用数组实现球链的路径,之后利用结构体和链表代替数组。实现时定好出洞和进洞的位置,路径先定为简单的矩形。

3) 利用链表实现小球的插入、消除和对速度的处理。

三.分步骤实现方法

1. 球链的路径和颜色

球链的路径定为矩形,第一步采用坐标位置改变实现,但由于想让结束时小球速度为0,第二步采用坐标位置加速度实现球链移动。

实现颜色的第一步利用rand()%255,但颜色种类太多,而且会出现每个球每秒钟颜色不一样的情况。因此第二步定义一个数组储存五种颜色,在初始化时给每个球随机赋予不同的颜色。第三步使用srand(time(NULL));设置随机种子数,使每次小球的颜色都不一样。

2. 利用三角函数实现佩奇和即将要吐的小球随鼠标旋转

3. 背景

利用EasyX绘制画面并放背景,采用HWND hwnd = GetHWnd();和SetWindowText(hwnd, "祖玛小猪");获取窗口句柄并设置窗口标题文字

4. 将数组变为链表,方便实现后面小球的插入与消除

第一步定义小球结构体。第二步定义新函数制作双向链表,使每个数据结点中都有两个指针,分别指向直接后继和直接前驱,这样从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。同时定义了首尾哨兵。

5. 吐球

利用鼠标交互左键发射小球、右键换小球颜色。并实现等吐出去的小球插入球链或超出画面边际后才能发射下一个小球。

6. 小球的插入及后续处理

定义函数,实现插入和更新链表长度。

后续处理时我们增加了几项功能:让插入的小球进入球链中,后面的小球位置依次后移;消除后前面的球链保持不动,等后面的球链跟进再一起前进。

7. 小球的消除

第一步判断吐出去的小球和球链中小球的距离,小于一定值时分别向前查重、向后查重,判断与它最近的小球的颜色是否与其相同,重复颜色的球大于等于三个时小球消除。第二步更新链表长度和分数。第三步重复上述步骤连环消球。

8. 开始界面、失败界面、成功界面、暂停界面

第一步定义一个变量为游戏状态(等于0为初始菜单界面,1为正常游戏,2为结束游戏状态,3为游戏暂停,4为游戏失败),初始化为0。第二步定义三个函数,分别利用settextcolor、settextstyle、outtextxy和鼠标交互实现界面互换。

9. 加入音乐

利用mciSendString加入音乐。

四.体会与总结

一开始选游戏内容的时候我们就想到了祖玛,看着代码一天天变长,功能一天天完善,真的很开心。从一开始球链的颜色闪来闪去,到最后背景音乐都可以配合着游戏进行,感到很开心,很有成就感,也学到了很多。

祖玛主要应该用链表实现,而我们决定一开始先用数组实现一部分,等到后面再将数组变为链表,这样以来实现球链的路径就容易了许多。球链的颜色这部分也一样,没有用较复杂的结构体,而是运用了简单的数组和rand实现。就像老师一开始就教我们用简单的代码做游戏一样,简单的函数也可以很好的实现强大的功能。做祖玛游戏也让我学会了PS,学会了抠图和加遮罩层。学习是相通的,要善于联想。

在编写游戏的时候也遇到过一些困难,需要一步一步的慢慢去找错误,有时候改对了一个又会出现另一个,所以要耐下心,仔细的找,不能急功近利。

这次做游戏,让我收获了一个好的队友,通过她我学到了许多知识,这次也让我学会了获取知识的许多途经,让我知道要敢于尝试,敢于去想象,要动手去做,要有目标,要用于实现。

2018级C语言大作业 - 祖玛相关推荐

  1. c语言变长数组_2018级C语言大作业 - 祖玛

    C语言 - 祖玛https://www.zhihu.com/video/1226223520021295104 分享18级同学大一上学期用C语言实现的祖玛.分步骤代码.图片音乐素材.可执行程序可从百度 ...

  2. 2018级C语言大作业 - 坦克动荡

    坦克动荡 C语言作业 分享18级同学大一上学期用C语言实现的坦克动荡.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/17_j-jxe8B ...

  3. 2018级C语言大作业 - 黄金矿工

    黄金矿工 C语言作业 分享18级同学大一上学期用C语言实现的黄金矿工.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1xCy1l2-7Q ...

  4. 2010C语言添加背景图片_2019级C语言大作业 - 火柴人试炼之地

    C语言大作业 - 火柴人试炼之地https://www.zhihu.com/video/1200491618794606592 分享19级同学大一上学期用C语言实现的火柴人试炼之地.分步骤代码.图片音 ...

  5. 2020级C语言大作业 - 王国保卫战

    王国保卫战 C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的王国保卫战.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https: ...

  6. 2020级C语言大作业 - 丛林大作战

    丛林大作战_C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的丛林大作战游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:http ...

  7. 2019级C语言大作业 - 火柴人试炼之地

    火柴人试炼之地 C语言大作业 分享19级同学大一上学期用C语言实现的火柴人试炼之地.分步骤代码.图片音乐素材.可执行程序可以从百度网盘下载: 链接:https://pan.baidu.com/s/1X ...

  8. java泡泡龙开源_2019级C语言大作业 - 泡泡龙

    分享19级同学大一上学期用C语言实现的泡泡龙.分步骤代码.可执行程序可从百度网盘下载: 提取码:jcuc C语言大作业 - 泡泡龙https://www.zhihu.com/video/1207418 ...

  9. 2020级C语言大作业 - 三国杀

    三国杀 C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的简化版三国杀游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https ...

最新文章

  1. 网络广告推广浅析网站的外链究竟要如何优化效果才会更好呢?
  2. C#实现在Winform中嵌入Word和Excel
  3. cmake跨平台编译之判断操作系统平台、32位64位系统
  4. 从一个字符串中剔除连续的字符,只留一个。
  5. TypeScript里数组foreach和map操作的区别
  6. 把HttpClient换成IHttpClientFactory之后,放心多了
  7. 解决 idea 运行 Spring Boot 项目启动慢的问题
  8. tesseract 配置文件
  9. 个性化推荐的另一种思路: 学习用户行为的解纠缠表示
  10. 怎么看tomcat添加的项目名_Tomcat部署项目不加项目名访问,不加8080访问
  11. 特征提取与检测(四) : HOG特征
  12. Mysql8秒级加字段_MySQL8.0大表秒加字段,是真的吗?
  13. springboot 中jsp乱码设置
  14. CAN FD的波特率到底能跑多快?
  15. 电脑在指定时间关机的指令代码
  16. PHP的面向对象编程思想
  17. 扫码挪车小程序源码专业版上线了
  18. calcite解读专栏前言
  19. ESP32 报错is installed, but the tool failed to run
  20. byte json 互转_Json互转

热门文章

  1. Pytorch——torch.Tensor.data操作的含义
  2. python中出现iterator should return strings, not bytes怎么解决
  3. linux磁盘相关命令
  4. 查看python下安装的包有哪些
  5. STM32L5特性简介 Cortex-M33内核TEE-TrustZone信息安全
  6. stm32的串口DMA空闲中断接收不等长数据,stm32F4的usart2-DMA-IDLE收发
  7. Ciesz się Polską
  8. fbx模型加载的材质球路径
  9. 视频课程学习及学习计划
  10. JavaScript高级程序设计学习笔记--DOM