小球碰撞弹回操作加强版

 1 #include "graphics.h"
 2 #include "conio.h"
 3 #include <time.h>
 4 #include <stdlib.h>
 5 #include <stdio.h>
 6 //绘制一个任意反弹的球。这次,将程序修改成屏幕上有 1--10 个任意反弹的球。
 7 
 8 // 注释掉的代码是刚开始犯的错误
 9 // 用注释的代码则产生的效果则是有一个碰到的四周则其他的球也会改变方向
10 struct BALL{
11     int x;
12     int y;
13 };
14 void Drow();
15 int main(){
16     initgraph(640, 480);
17     srand((unsigned)time(NULL));
18     Drow();
19     closegraph();
20     return 0;
21 }
22 
23 void Drow(){
24     
25     BALL ball[10];
26     //int a = 1, b = 1;
27     int a[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
28     int b[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
29     int  i = rand() % 10 + 1;
30     for (int j = 0;j < i; j++){
31         ball[j].x = rand() % 620 + 10;
32         ball[j].y = rand() % 460 + 10;
33     }
34     for (int j = 0; j < i; j++){
35         circle(ball[j].x, ball[i].y, 10);
36     }
37     while (!kbhit()){      
38         for (int j = 0; j < i; j++){
39             setcolor(BLACK);
40             circle(ball[j].x, ball[j].y, 10);
41 
42             if (ball[j].x <= 10 || ball[j].x >= 630){
43                 //a *= -1;
44                 a[j] *= -1;
45             }
46             if (ball[j].y <= 10 || ball[j].y >= 470){
47                 //b *= -1;
48                 b[j] *= -1;
49             }
50             //ball[i].x += a;    
51             //ball[i].y += b;
52             ball[j].x += a[j];
53             ball[j].y += b[j];
54             setcolor(RGB(rand() % 255 + 1, rand() % 255 + 1, rand() % 255 + 1));
55             circle(ball[j].x, ball[j].y, 10);
56         }
57         Sleep(10);
58     }
59 }

 

转载于:https://www.cnblogs.com/hxf-zb/p/9819195.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jupyter Notebook是一个交互式的计算环境,它结合了代码、文本和可视化元素,常用于数据科学和机器学习项目。如果你想在Jupyter Notebook中模拟小球碰撞,通常会用到Python的matplotlib库来绘制场景,加上物理模拟库如Pygame或NumPy进行运动和碰撞检测。 小球碰撞模拟涉及到基本的物理学概念,如力、速度、加速度和碰撞规则(弹性碰撞、非弹性碰撞或完全非弹性碰撞)。以下是一个简单的步骤概述: 1. 导入所需库:首先需要导入matplotlib用于绘图,以及一个用于物理模拟的库,例如`pygame`。 ```python import pygame from pygame.locals import * ``` 2. 初始化游戏窗口和小球:设置窗口大小,创建两个或更多小球对象,存储它们的位置、速度和大小等信息。 3. 渲染循环:在主循环中,更新每个小球的位置,检查它们是否发生碰撞,然后重新绘制场景。 ```python while True: # 更新小球位置 for ball in balls: ball.update() # 检查碰撞 for i, ball1 in enumerate(balls): for j, ball2 in enumerate(balls): if i != j and check_collision(ball1, ball2): handle_collision(ball1, ball2) # 重绘屏幕 screen.fill((0, 0, 0)) for ball in balls: draw_ball(screen, ball) pygame.display.flip() ``` 4. 碰撞处理函数:定义函数来处理碰撞,根据碰撞类型调整小球的速度或反弹。 5. 结束条件:添加退出游戏的条件,比如按下特定键或达到预定帧数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值