第四次实验报告

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

二·实验项目功能描述:

(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. [LeetCode] 228. 汇总区间

    题目链接: https://leetcode-cn.com/problems/summary-ranges 难度:中等 通过率:48.9% 题目描述: 给定一个无重复元素的有序整数数组,返回数组区间范 ...

  2. npm 关联 git包

    npm 关联 git包 由于现在项目越做越多,很多公共的部分相互公用,需要尽可能早地提炼出来,这样便可以在其他项目进行引用,而不是每次建一个项目就需要进行拷贝,这样太痛苦了,因而想通过类似npm包管理 ...

  3. spring boot 是如何加载jackson的?

    Spring Boot 自动引入jackson: 通过:Spring-Boot-starter-web Jackson自动配置 这里的configurations是读取的这里: 通过反射加载Jacks ...

  4. 22、nlpir 人工智能

    练习介绍 [程序功能] 我们将完成一个和语义识别相关的爬虫程序,输入任意词汇.句子.文章或段落,会返回联想的词汇. [背景信息] 有一个非常牛的处理语言的网站nlpir,上面有非常多的处理语言的功能( ...

  5. luogu P2481 [SDOI2010]代码拍卖会

    luogu 题目中的那个大数一定是若干个1+若干个2+若干个3...+若干个9组成的,显然可以转化成9个\(\underbrace {111...1}_{a_i个1}(0\le a_1\le a_2\ ...

  6. chrom插件1

    本文是稀土掘金投稿,虽然其中有倔金的私货,是篇推广文,但我看过后认为内容确实不错,有些好插件还是第一次知道,对我很有帮助,考虑过后还是决定推荐给大家,最近我比较关注各种提高开发效率的工具与技巧,今后看 ...

  7. redis常见问题和解决方案

    转载:https://www.cnblogs.com/aspirant/p/6820262.html [原创]那些年用过的Redis集群架构(含面试解析) redis常见问题和解决方案 持久化.主从问 ...

  8. Maven项目构建利器04——Maven的一些核心概念

    1.坐标 1)数学上的坐标: [1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点 [2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点 2)Maven中的坐标: ...

  9. SQL函数 Convert,dateadd

    1.SQL中CONVERT转化函数的用法 格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字 ...

  10. HMM 传统后向算法

    HMM 传统后向算法,已实现,仅供参考. package jxutcm.edu.cn.hmm.model; import jxutcm.edu.cn.hmm.bean.HMMHelper; impor ...