120行c语言代码绘制可移动的正弦曲线,在屏幕上用“*”显示 0~360 度的正弦函数 sin(x)曲线,并且可以用键盘控制正弦曲线左右移动(即改变相位)。代码需要附有注释。
时间: 2023-12-03 21:43:48 浏览: 87
以下是120行C语言代码,实现可移动的正弦曲线,注释已经添加在代码中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
// 宏定义,表示屏幕上每个点的大小
#define BLOCK_SIZE 1
// 定义屏幕大小
#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 40
// 定义常量 pi
#define PI 3.14159265358979323846
// 定义全局变量,表示正弦函数的相位
double phase = 0;
// 定义函数,用于将角度转换为弧度
double deg2rad(double deg)
{
return deg * PI / 180.0;
}
// 定义函数,用于计算正弦函数的值
double sine(double x)
{
return sin(x + deg2rad(phase));
}
// 定义函数,用于在屏幕上打印字符
void print_block(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
printf("*");
}
// 定义函数,用于绘制正弦曲线
void draw_sine()
{
int x, y;
double y_value;
// 遍历所有 x 坐标
for (x = 0; x < SCREEN_WIDTH; x++)
{
// 计算当前 x 坐标对应的弧度值
double radian = deg2rad((double)x * 360 / SCREEN_WIDTH);
// 计算当前 x 坐标对应的 y 坐标
y_value = sine(radian);
// 将 y 坐标转换为屏幕上的实际坐标
y = (int)((1 - y_value) * SCREEN_HEIGHT / 2);
// 在屏幕上打印字符
print_block(x, y);
}
}
// 主函数
int main()
{
int key;
// 无限循环
while (1)
{
// 清空屏幕
system("cls");
// 绘制正弦曲线
draw_sine();
// 接收用户输入
key = getch();
// 根据用户输入改变相位值
if (key == 'a')
{
phase -= 10;
}
else if (key == 'd')
{
phase += 10;
}
}
return 0;
}
```
阅读全文