目录

一、介绍

1、题目要求

2、资源

二、关键功能的实现

1、设计的结构体和链表:

2、弹弓拉绳的实现:

3、当绳子拉伸达到上限时,仍然使小鸟可以改变方向:

3、计算小鸟飞出后的任意时刻的位置:


一、介绍

这个寒假翻电脑的时候找到了上学期C语言课设的介绍视频。这是我自己做的目前来说最长的代码,实现的功能也是最复杂的,对我来说还是很有纪念意义的。我之后也把视频传到B站上了:《愤怒的小鸟》——C语言课设。感兴趣的同学可以去看看。

在这里我简单分享一下我的设计,也许可以帮到有需要的人。

1、题目要求

老师当时对于我们的要求是使用easyX实现图形界面,利用贴图和重画实现动画,必须使用链表。除此之外,只能使用C语言语法。

2、资源

所有的资源都在这里了,里面包含一个可执行文件和一个文件夹,文件夹里有全部的图片、音乐、源代码还有工程文件。
链接:https://pan.baidu.com/s/1vjQ48dcR7DNjKtKG6OQgHg?pwd=qc1v
提取码:qc1v

除此之外,在大一上学期的寒假,我是通过 @童晶 老师的课程视频学习使用easyX的,感觉很不错,有需要的同学可以了解一下。

二、某些功能的实现

1、设计的结构体和链表:

typedef struct users{char id[100];char password[100];int score[5]={0};int good[5] = { 0 };  //用来存购买的道具,0放鸟制传送门int money=0;
}users;typedef struct bird_info {  //用结构体存储画面上某一点的图像,role为1(小红鸟),2(笑鸟)int x;int y;int role;int fire;   //是否发射struct bird_info* next;
}b_info;typedef struct pig_info {  //用结构体存储画面上某一点的图像,role为1(小猪),2(笑猪)int x;int y;int role;int count;struct pig_info* next;
}p_info;typedef struct stick_info {  //用结构体存储画面上某一点的图像,role为1(木棍障碍)int x;int y;int role;struct stick_info* next;
}s_info;b_info* bH;  //将b_info变量串成链表,将头指针定义为全局变量,各函数均可访问
p_info* pH;  //将p_info变量串成链表,将头指针定义为全局变量,各函数均可访问
s_info* sH;  //将s_info变量串成链表,将头指针定义为全局变量,各函数均可访问
users user;

2、弹弓拉绳的实现

实际上是利用了easyX的画线函数,不过我把线的宽度调大了,也改了线的颜色。然后将线的一端设置为小鸟的坐标,一端为弹弓的坐标。

3、当绳子拉伸达到上限时,仍然使小鸟可以改变方向:

void bposition1(short x1,short y1) {     //当绳子过长时计算小鸟的位置  (传入鼠标位置)double sinx;    //储存正弦值double cosx;    //储存余弦值double heartx = 267;  //圆心x坐标double hearty = 515;  //圆心y坐标double l= distance(x1, y1, heartx, hearty);sinx = (hearty - y1) / l;cosx = (heartx - x1) / l;bH->x = heartx - cosx * 35-25;bH->y = hearty - sinx * 35-25;}   

3、计算小鸟飞出后的任意时刻的位置

void bposition(int a,int b) {    //计算小鸟发出后的位置static int speed = 0;double vm=14; //绳的最大合速度double sin;double cos;  float heartx = 267;  //弹弓x坐标float hearty = 515;  //弹弓y坐标double l=distance(a,b, heartx, hearty);  //计算绳长sin = (hearty - b) / l;cos = (heartx - a) / l;vx = vm * cos*l/35;vy = vm * sin*l/35+10*times;   //屏幕上 以向下为y坐标增加,取+号if (speed == 10) {times=times+0.2;speed = 0;}else {speed++;}
}

这里的很多参数都是我自己反复尝试才确定的,虽然我也觉得这样直接用数字其实不利于程序的维护,但是就完成课设来说还是比较方便的。

《愤怒的小鸟》——大一下C语言程序课设相关推荐

  1. 万年历c语言程序课设,万年历C语言程序设计.pdf

    沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:万年历软件设计 学 院:计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:从丽晖 起止 ...

  2. c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc

    矩形问题-C语言程序课程设课程设计(论文) PAGE PAGE \* MERGEFORMAT 20课程设计(论文)题 目 名 称 矩形问题 课 程 名 称 C语言程序课程设计 学 生 姓 名 xxx ...

  3. C语言程序设计课设题

    C语言程序设计课设题 1.点歌台歌曲信息管理 [任务描述]设计并实现一个点歌台管理程序. [功能要求] ⑴ 管理员功能:歌曲信息管理:歌曲信息添加,查询,修改,删除,存盘,浏览等.歌曲信息至少包括:编 ...

  4. 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)

    数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...

  5. C语言程序设计课设——图书出入库管理系统

    图书出入库管理系统 C语言程序设计课设 说是C语言程序设计的课设,实际上和上学期的数构的课设没什么区别,换了个系统而已,也不知道学校老师为啥要多一门这个课设.不过还是有所收获的,会改了很多常见的BUG ...

  6. 深大c语言程序设计题库,深大复试C语言程序.doc

    深大复试C语言程序 深圳大学信息工程学院复试C语言题库 A类-简 单 题 A1:设计一个菜单程序,选择数字键1~3分别在屏幕中间输出正三角形.倒三角形和菱形,选择数字4结束操作并回到操作系统状态. A ...

  7. c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...

    数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...

  8. c语言药店管理系统的前提报告,数据结构(C语言)课设5——药店的药品销售统计系统...

    数据结构(C语言)课设5--药店的药品销售统计系统 题目描述: 你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了.因此,你需要对这些 ...

  9. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

最新文章

  1. 技能模块的防外挂机制和同步机制优化
  2. Servlet3.0注解配置访问路径和urlParttern配置
  3. 第8步 第2剑客 mybatis plugin 第三剑客 page helper csdn每天最多发多少文章 是20篇,刚刚才试了。2014
  4. 施一公:培养本科生比培养博士生要难
  5. Java多线程学习三十七:volatile 的作用是什么?与 synchronized 有什么异同
  6. BaseRecyclerViewAdapterHelper: 灵活强大的循环适配器
  7. 【优化调度】基于matlab人工鱼群算法求解梯级水库调度优化问题【含Matlab源码 415期】
  8. 非参数分析-符号秩和检验法
  9. dorado7.x form提交数据报错
  10. 门铃C语言设计程序,单片机C语言程序设计:用定时器设计的门铃
  11. 今日头条 2018 AI Camp 视频面试
  12. dms档案资料管理系统(源码)
  13. 携程商旅酒店直连平台的实践(一)
  14. 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
  15. houdini 常用命令
  16. java通过QR生成二维码 (QRCodeUtils工具类)(HUTOOL生成二维码)
  17. ERP实施工程师必备知识体系及职业操守
  18. 在网页调用微信支付,并解决IOS调用提示“缺少参数timeStamp”问题
  19. 解决硬盘分区错误, 纯Dos磁盘工具Diskpart的用法.
  20. Matlab 从怀俄明大学上爬取探空数据

热门文章

  1. 改变屏幕显示方向,让屏幕显示旋转
  2. 【思特奇杯·云上蓝桥-算法训练营】第1周:excel地址
  3. MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)
  4. [Erlang危机](3.0)过载处理
  5. 非常实用的12条 SQL 优化方案
  6. 独立的荣耀将首次与华为打擂台,谁的折叠手机更有优势?
  7. Houdini abcobj 导入 Maya
  8. 阿里巴巴编程规范(new)
  9. 什么是生化分析中的反应曲线?
  10. 金融量化 — 配对交易策略 (Pair Trading)