用C++写一个钟摆小游戏
时间: 2023-12-07 20:51:40 浏览: 138
基于C++ Qt实现一款拟物时钟,全部为自绘时钟,主要使用定时器,等比例绘图,绘制角度,及钟摆动画等,秒针摆动有轻微动画效果
好的,下面是一个简单的钟摆小游戏,希望能够对您有所帮助。
```
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
const double PI = 3.14159265358979323846;
const double GRAVITY = 9.8;
int main() {
double length, angle, timeInterval;
double angularVelocity = 0, angularAcceleration = 0;
double x, y;
int score = 0;
bool isOver = false;
srand(time(NULL)); // 随机数种子
cout << "欢迎来到钟摆小游戏!" << endl;
cout << "请输入绳长(单位:米):";
cin >> length;
cout << "请输入初始角度(单位:度):";
cin >> angle;
cout << "请输入时间间隔(单位:秒):";
cin >> timeInterval;
while (!isOver) {
system("cls"); // 清屏
cout << "得分:" << score << endl;
// 计算角加速度、角速度和角度
angularAcceleration = -GRAVITY / length * sin(angle * PI / 180);
angularVelocity += angularAcceleration * timeInterval;
angle += angularVelocity * timeInterval * 180 / PI;
// 计算小球坐标
x = length * sin(angle * PI / 180);
y = length * cos(angle * PI / 180);
// 输出小球图形
for (int i = 0; i < round(y); i++) {
cout << endl;
}
for (int i = 0; i < round(x) + 10; i++) {
cout << " ";
}
cout << "o" << endl;
// 判断是否结束
if (angle > 90 || angle < -90) {
isOver = true;
cout << "游戏结束!得分:" << score << endl;
} else {
score++;
// 延时
int delay = rand() % 3 + 1;
for (int i = 0; i < delay; i++) {
cout << ".";
Sleep(1000); // 等待1秒
}
}
}
return 0;
}
```
游戏规则:
1. 您需要输入绳长、初始角度和时间间隔。
2. 游戏开始后,小球会沿绳子摆动。
3. 您需要按照小球位置,输入一个数字,让小球碰到相应数字。
4. 每次成功碰撞,得分加1。
5. 如果小球摆到最高点或最低点,游戏结束,得分为当前得分。
阅读全文