《愤怒的小鸟》——大一下C语言程序课设
目录
一、介绍
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语言程序课设相关推荐
- 万年历c语言程序课设,万年历C语言程序设计.pdf
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:万年历软件设计 学 院:计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:从丽晖 起止 ...
- c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc
矩形问题-C语言程序课程设课程设计(论文) PAGE PAGE \* MERGEFORMAT 20课程设计(论文)题 目 名 称 矩形问题 课 程 名 称 C语言程序课程设计 学 生 姓 名 xxx ...
- C语言程序设计课设题
C语言程序设计课设题 1.点歌台歌曲信息管理 [任务描述]设计并实现一个点歌台管理程序. [功能要求] ⑴ 管理员功能:歌曲信息管理:歌曲信息添加,查询,修改,删除,存盘,浏览等.歌曲信息至少包括:编 ...
- 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- C语言程序设计课设——图书出入库管理系统
图书出入库管理系统 C语言程序设计课设 说是C语言程序设计的课设,实际上和上学期的数构的课设没什么区别,换了个系统而已,也不知道学校老师为啥要多一门这个课设.不过还是有所收获的,会改了很多常见的BUG ...
- 深大c语言程序设计题库,深大复试C语言程序.doc
深大复试C语言程序 深圳大学信息工程学院复试C语言题库 A类-简 单 题 A1:设计一个菜单程序,选择数字键1~3分别在屏幕中间输出正三角形.倒三角形和菱形,选择数字4结束操作并回到操作系统状态. A ...
- c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- c语言药店管理系统的前提报告,数据结构(C语言)课设5——药店的药品销售统计系统...
数据结构(C语言)课设5--药店的药品销售统计系统 题目描述: 你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了.因此,你需要对这些 ...
- 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题
数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...
最新文章
- 技能模块的防外挂机制和同步机制优化
- Servlet3.0注解配置访问路径和urlParttern配置
- 第8步 第2剑客 mybatis plugin 第三剑客 page helper csdn每天最多发多少文章 是20篇,刚刚才试了。2014
- 施一公:培养本科生比培养博士生要难
- Java多线程学习三十七:volatile 的作用是什么?与 synchronized 有什么异同
- BaseRecyclerViewAdapterHelper: 灵活强大的循环适配器
- 【优化调度】基于matlab人工鱼群算法求解梯级水库调度优化问题【含Matlab源码 415期】
- 非参数分析-符号秩和检验法
- dorado7.x form提交数据报错
- 门铃C语言设计程序,单片机C语言程序设计:用定时器设计的门铃
- 今日头条 2018 AI Camp 视频面试
- dms档案资料管理系统(源码)
- 携程商旅酒店直连平台的实践(一)
- 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
- houdini 常用命令
- java通过QR生成二维码 (QRCodeUtils工具类)(HUTOOL生成二维码)
- ERP实施工程师必备知识体系及职业操守
- 在网页调用微信支付,并解决IOS调用提示“缺少参数timeStamp”问题
- 解决硬盘分区错误, 纯Dos磁盘工具Diskpart的用法.
- Matlab 从怀俄明大学上爬取探空数据