发布时间:2024-04-24 16:01
一些注意事项:_stprintf()这个函数要求挺苛刻的,他调用的变量必须初始化否则无法正常运行;
还有关于vs2022一些安全性必须说一说,如果不设置的很多正常代码其实也无法运行,安全性对于个人开发者和学者其实必要性不是很大,初学者建议关闭,关闭方法是在调试按钮上选择最后一项,在选择c/c+,在将警告视为错误设置为否,在点击c/c++小三角,在代码生成的安全检测中选择禁用安全检查;
#include
#include
#include
#include
int main() {
const float pi = 3.1415926;
int height, width;
height = 600, width = 800;
initgraph(width, height);
setbkcolor(RGB(255, 255, 255));
setlinestyle(PS_SOLID, 3);
float lineLength = 160, xend, yend, rotatespeeed = pi / 360;
int linenum = 0;
float angles[1000];
int score = 0;
int i;
BeginBatchDraw();
while (1) {
cleardevice();
setlinecolor(RGB(0, 0, 0));
line(0, height / 2, lineLength, height / 2);
for (i = 0; i < linenum; i++) {
angles[i] = angles[i] + rotatespeeed;
if (angles[i] > 2 * pi) {
angles[i] = angles[i] - 2 * pi;
}
xend = lineLength * cos(-angles[i]) + width / 2;
yend = lineLength * sin(-angles[i]) + height / 2;
setlinecolor(RGB(0, 0, 255));
if (i == linenum - 1) {
setlinecolor(RGB(255, 0, 0));
}
line(xend, yend, width / 2, height / 2);
}
if (_kbhit() && rotatespeeed != 0) {
char input = _getch();
if (input == \' \') {
linenum++;
angles[linenum - 1] = pi;
xend = lineLength * cos(-angles[i - 1]) + width / 2;
yend = lineLength * sin(-angles[i - 1]) + height / 2;
line(xend, yend, width / 2, height / 2);
for (i = 0; i < linenum-1; i++) {
if (fabs(angles[linenum - 1] - angles[i]) < pi / 60) {
rotatespeeed = 0;
break;
}
}
score = score + 1;
}
}
setfillcolor(HSVtoRGB(0, linenum / 60.0, 0.8));
setlinecolor(HSVtoRGB(0, 0.9, 0.8));
fillcircle(width / 2, height / 2, 60);
TCHAR s[20];
_swprintf(s, _T(\"%d\"), score);
settextstyle(50, 0, _T(\"TIMES\"));
settextcolor(RGB(50, 50, 50));
outtextxy(65, 200, s);
FlushBatchDraw();
Sleep(10);
}
closegraph();
return 0;
}
还有我在这个学渣在第一次敲这个题目时其实又遇到了一个问题,就说在
for (i = 0; i < linenum-1; i++) {
if (fabs(angles[linenum - 1] - angles[i]) < pi / 60) {
rotatespeeed = 0;
break;
语句中,我第一次敲的是 for (i = 0; i < linenum; i++),因为我心想以及是<,已经少算了一个,但原本数组是从0开始算起,并且如果算linenum-1,开始加第一根针的时候,就会第一根针与自己比较角度,自己和自己比结果肯定是小于3度的,那就肯定有问题,虽然这是一个小错误,不过有时也挺烦的。