第四次实验报告

一·实验项目名称: 多球反弹

二·实验项目功能描述:

(1)实现多个小球

(2)实现多个小球碰壁会反弹

(3)实现小球之间碰撞反弹

三· 项目模块结构介绍

#define High 480
#define Width 640
#define BallNum 15 //定义小球个数和游戏尺寸
//对小球的输入
for(i=0;i<BallNum;i++)
{
ball_x[i]=rand()%int(Width-4*radius)+2+radius;
ball_y[i]=rand()%int(High-4*radius)+2*radius;
ball_vx[i]=(rand()%2)*2-1;
ball_vy[i]=(rand()%2)*2-1;
}
//制造黑色的球,为了小球移动到该位置恢复到黑色
setcolor(BLACK);
setfillcolor(BLACK);
for(i=0;i<BallNum;i++)
{
fillcircle(ball_x[i], ball_y[i], radius);
} //小球的运动,并判断是否碰壁,是则返回
for(i=0;i<BallNum;i++)
{
ball_x[i]=ball_x[i]+ball_vx[i];
ball_y[i]=ball_y[i]+ball_vy[i];
if(ball_x[i]<radius)
ball_x[i]=radius;
if(ball_y[i]<radius)
ball_y[i]=radius;
if(ball_x[i]>Width-radius)
ball_x[i]=Width-radius;
if(ball_y[i]>High-radius)
ball_y[i]=High-radius;
}
for(i=0;i<BallNum;i++)
{
if((ball_x[i]<=radius)||(ball_x[i]>=Width-radius))
ball_vx[i]=-ball_vx[i]; if((ball_y[i]<=radius)||(ball_y[i]>=High-radius))
ball_vy[i]=-ball_vy[i];
}
//判断小球是否碰撞,是则改变速度方向
float minDistances2[BallNum][2];
for(i=0;i<BallNum;i++)
{
minDistances2[i][0]=9999999;
minDistances2[i][1]=-1;
}
for(i=0;i<BallNum;i++)
{
for(j=0;j<BallNum;j++)
{
if(i!=j)
{
float dist2;
dist2=(ball_x[i]-ball_x[j])*(ball_x[i]-ball_x[j])
+(ball_y[i]-ball_y[j])*(ball_y[i]-ball_y[j]);
if(dist2<minDistances2[1][0])
{
minDistances2[i][0]=dist2;
minDistances2[i][1]=j;
}
}
}
}
for(i=0;i<BallNum;i++)
{
if(minDistances2[i][0]<=4*radius*radius)
{
j=minDistances2[i][1];
int temp;
temp=ball_vx[i];ball_vx[i]=ball_vx[j];ball_vx[j]=temp;
temp=ball_vy[i];ball_vy[i]=ball_vy[j];ball_vy[j]=temp;
minDistances2[j][0]=999999999;
minDistances2[j][1]=-1;
}
}
//回执绿色的圆
setcolor(YELLOW);
setfillcolor(GREEN);
for(i=0;i<BallNum;i++)
fillcircle(ball_x[i], ball_y[i], radius);

四·界面展示



五·代码托管链接:

https://gitee.com/djh000/djh000/commit/937d05be39ddce1406943cbb2ba0f11ca93833fe

六·实验总结

该实验时在C++6.0里面完成的,起初对实验步骤流程不是特别清楚,但后来发现

和前面的游戏差不多,绿色小球每移动位置,前面位置就要变成黑色,这个有彩色

带入对那些大型游戏很好,不那么孤单,看起来就非常有感觉,增加兴趣。

C语言第四次实验报告的更多相关文章

  1. 20145330《Java程序设计》第四次实验报告

    20145330<Java程序设计>第四次实验报告 实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 搭建A ...

  2. 20145320《Java程序设计》第四次实验报告

    20145320<Java程序设计>第四次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.26 15: ...

  3. 20145240 《Java程序设计》第四次实验报告

    20145240 <Java程序设计>第四次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.26 实验 ...

  4. 20145238-荆玉茗 《Java程序设计》第四次实验报告

    20145238<Java程序设计>第四次实验报告 实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 搭建A ...

  5. 第六周学习总结&第四次实验报告

    第六周学习总结&第四次实验报告 学习总结 这周我们简单的学习了一点点关于接口的内容,接口是Java中最重要的概念之一,接口可以理解为一个特殊的类, 里面由全局常量和公共的抽象方法组成,接口摆脱 ...

  6. 南京邮电大学java第四次实验报告

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 6 月 ...

  7. 2019JAVA第四次实验报告

    JAVA实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/29 评分等级 实验四 类的继承 1.实验目的 掌握类的继承方法: 变量的继承和覆盖,方法的继承.重载和 ...

  8. C语言第四次实验

    这次实验共计7道题目 以下代码亲测无误 1.用选择排序法,键盘输入10个整数,对10个整数进行排序(升序) 1.第一种思路就是常规思路,输入--排序--输出 源代码如下: //常规思路,输入,排序,输 ...

  9. java第四次实验报告

    课程:Java程序与设计     班级:1352 姓 名:池彬宁  小组成员: 20135212池彬宁 20135208贺邦 学号:20135212 成绩:             指导教师:娄嘉鹏  ...

随机推荐

  1. python 安装 colorama 控制台输出彩色文字

    pip install colorama from colorama import Back,Fore,Style # 字体颜色print(Fore.LIGHTBLUE_EX,'HelloWorLd' ...

  2. homebrew学习(三)之homebrew命令

    安装homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...

  3. Mac中如何高亮显示当前git分支以及相关切换系统默认shell操作

    前言 在开发中对于使用git的同学,肯定会需要高亮显示当前分支,我们今天就来说一种最简单的办法,先来看一下效果图 实现 1.安装item2 https://www.iterm2.com 2.安装oh- ...

  4. numpy.random.uniform(记住文档网址)

    http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html#numpy.random.uniform h ...

  5. springboot学习1

    gradle环境配置 https://www.w3cschool.cn/gradle/ctgm1htw.html Spring profile 多环境配置管理 参考:https://www.cnblo ...

  6. pandas库

    pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理.虽然pandas采用了大量的NumPy编码风格,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的 ...

  7. Big Data(七)MapReduce计算框架

    二.计算向数据移动如何实现? Hadoop1.x(已经淘汰): hdfs暴露数据的位置 1)资源管理 2)任务调度 角色:JobTracker&TaskTracker JobTracker: ...

  8. 最简单的Android项目(含有资源文件)

    上次的项目没有使用资源文件,打包出的apk安装后是系统默认图标,程序标题也是包名加类名. 添加资源需要对编译的命令做一点调整. 首先在项目根目录新建res和assets目录,在res内新建drawab ...

  9. 牛客假日团队赛6 D 迷路的牛 (思维)

    链接:https://ac.nowcoder.com/acm/contest/993/D 来源:牛客网 迷路的牛 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  10. git初始化命令行指引

    Git 全局设置 git config --global user.name "陈耿聪" git config --global user.email "swain@di ...