编写一个c++程序,键盘上按i,j,k,l使光标能上下左右移动 30
3个回答
展开全部
仅供参考。
#include <iostream>
#include <windows.h>
#include <ctime>
#include <conio.h>
using namespace std;
char SetColor(char a)//设置文本颜色
{
switch(a)
{
case 'q':case 'w':case 'e':case 'r':case 't':case 'y':case 'u':case 'i':case 'o':case 'p':case '[':case ']':
case 'Q':case 'W':case 'E':case 'R':case 'T':case 'Y':case 'U':case 'I':case 'O':case 'P':case '{':case '}':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_GREEN);return a;//Green
case 'a':case 's':case 'd':case 'f':case 'g':case 'h':case 'j':case 'k':case 'l':case ';':case '\'':
case 'A':case 'S':case 'D':case 'F':case 'G':case 'H':case 'J':case 'K':case 'L':case ':':case '\"':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);return a;//Yellow
case 'z':case 'x':case 'c':case 'v':case 'b':case 'n':case 'm':case ',':case '.':case '/':
case 'Z':case 'X':case 'C':case 'V':case 'B':case 'N':case 'M':case '<':case '>':case '?':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED);return a;//Red
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);return a;//White
}
}
int main()
{
int i=0,j=0;
float t=0,f=0;
srand(time(0));
do
{
if(i!=j)
{cout<<"\a";f++;}
else t++;
if((i=33+rand()%94)=='*')
continue;
SetColor(i);
printf("%c",i);
}while((j=getch())!='*');
system("cls");
cout<<"正确率为:"<<t/(t+f)<<endl;
getch();
return 0;
}
#include <iostream>
#include <windows.h>
#include <ctime>
#include <conio.h>
using namespace std;
char SetColor(char a)//设置文本颜色
{
switch(a)
{
case 'q':case 'w':case 'e':case 'r':case 't':case 'y':case 'u':case 'i':case 'o':case 'p':case '[':case ']':
case 'Q':case 'W':case 'E':case 'R':case 'T':case 'Y':case 'U':case 'I':case 'O':case 'P':case '{':case '}':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_GREEN);return a;//Green
case 'a':case 's':case 'd':case 'f':case 'g':case 'h':case 'j':case 'k':case 'l':case ';':case '\'':
case 'A':case 'S':case 'D':case 'F':case 'G':case 'H':case 'J':case 'K':case 'L':case ':':case '\"':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);return a;//Yellow
case 'z':case 'x':case 'c':case 'v':case 'b':case 'n':case 'm':case ',':case '.':case '/':
case 'Z':case 'X':case 'C':case 'V':case 'B':case 'N':case 'M':case '<':case '>':case '?':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED);return a;//Red
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);return a;//White
}
}
int main()
{
int i=0,j=0;
float t=0,f=0;
srand(time(0));
do
{
if(i!=j)
{cout<<"\a";f++;}
else t++;
if((i=33+rand()%94)=='*')
continue;
SetColor(i);
printf("%c",i);
}while((j=getch())!='*');
system("cls");
cout<<"正确率为:"<<t/(t+f)<<endl;
getch();
return 0;
}
展开全部
int x, y;
......
while(1)
{
c=getch();
switch(c)
{
case 'a' :
x>1?x--:x=0; break;
case 's':
y<24?y++:y=24; break;
case 'd':
x<980?x++;x=80; break;
case 'w':
y>1?y--;y=0; break;
default:
beep();
}
if(c=='x') break;
gotoxy(x,y);
}
......
while(1)
{
c=getch();
switch(c)
{
case 'a' :
x>1?x--:x=0; break;
case 's':
y<24?y++:y=24; break;
case 'd':
x<980?x++;x=80; break;
case 'w':
y>1?y--;y=0; break;
default:
beep();
}
if(c=='x') break;
gotoxy(x,y);
}
追问
gotchar 不是要按回车才读取吗? 能不能不按回车,一按键就移动
追答
getch()和getchar()功能不一样。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询