有趣的C 编程——球球大作战

有趣的C 编程——球球大作战

首页休闲益智同桌大作战原版更新时间:2024-06-23

这是一份老少皆宜的C 游戏编程教程,从我们数年的内部教学中孵化而出,从6岁~66岁皆可学习。当然,主要是写给6~16岁的孩子[狗头]

游戏演示

游戏描述

让我们把以上这些看似复杂的任务,分解成更小更具体的任务,提出下面这些问题。其中鼠标跟随已经在之前的案例中学习过,不记得的同学可以戳

小球的下落

在 这篇文章中,我们学习了如何实现位置的移动,总结起来就是每次循环执行的时候,更新小球的位置,并且把新位置的小球画出来,同时擦除之前的小球。

小球位置更新的依据是 “ 新位置 = 旧位置 这段时间内移动的距离”

我们知道,如果把一个东西从高处抛下来,它下落的速度会越来越快,也就是说相同时长内移动的距离会越来越大。我们可以找出位置的变化的规律

  1. 第1次移动的距离 = g; 位置1 = 位置0 第1次移动的距离;
  2. 第2次移动的距离 = 第1次移动的距离 g; 位置2 = 位置1 第2次移动的距离;
  3. 第3次移动的距离 = 第2次移动的距离 g; 位置3 = 位置2 第3次移动的距离;
  4. …………

用代码可以把这个规律更清楚地写出来(我们省去其他一些部分,只展现核心代码)

while (1) { vy = vy g; y = y vy; }

每次循环的时候,小球的速度和位置都会更新,我们依据最新位置画出小球。这部分代码如下

#include <graphics.h> #include <conio.h> #include <stdio.h> int main() { initgraph(1000, 1000); int x = 200; int y = -20; int r = 20; int vy = 10; int g = 1; while (1) { cleardevice(); vy = vy g; y = y vy; fillcircle(x, y, r); Sleep(10); } return 0; }碰撞检测——条件语句

当小球碰到横板、左右边界、下边界的时候,它要反弹。可是,计算机没有我们这样的眼睛,它要怎么判断小球有没有碰到横板、左右边界、下边界呢?

以横板为例,对于计算机来说,小球是用圆心坐标和半径表示的,横板也是用位置和大小表示的,它们对于计算机来说都是些数字。

如果小球落到了横板上面,那么“ 小球的圆心y坐标肯定是横板的y坐标减去小球的半径,小球的圆心x坐标一定大于横板的左侧边界数值 并且 小于横板的右侧边界数值”

上面加引号的部分就是判断小球是否落到横板上的依据,这个依据用代码是这样写的

y >= p.y-r && x >= p.x && x <= p.x w //w表示横板的宽

if (y >= p.y-r && x >= p.x && x <= p.x w) { // 小球反弹 }反弹怎么表示

反弹重在一个“反”,如果原先是向下运动,那么碰到了边界之后就要向反方向运动

我们说两个物体向反方向运动,意味着它们速度相反

所以,我们需要在碰到边界之后,先让这个物体固定在边界处,然后马上将速度改成反方向的速度。通过 -1 * 原先的速度 来实现

if (y >= p.y-r && x >= p.x && x <= p.x w) { y = p.y-r; vy = -1 * vy; // 小球反弹 }整理一下

把这几个部分合在一起,代码如下。30行实现球球大作战,是不是可以动手尝试一下?

#include <graphics.h> #include <conio.h> #include <stdio.h> #include<iostream> #include<windows.h> int main() { initgraph(1000, 1000); int x = 200; int y = -20; int r = 20; int vy = 10; int g = 1; int w = 300; int h = 5; while (1) { POINT p; GetCursorPos(&p); if (y >= p.y-r && x >= p.x && x <= p.x w) { y = p.y; vy = -vy; } cleardevice(); vy = vy g; y = y vy; fillcircle(x, y, r); fillrectangle(p.x, p.y, p.x w, p.y h); Sleep(10); } return 0; }课后思考

欢迎大家在评论区留下你们的答案~

答对1题者即可获得 AC少儿编程 免费试听课名额(原价480元

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved