c语言打字练习
‘壹’ 用c语言编个英文打字练习程序要用到哪些知识
基本语言,GUI,少量的各种算法。
都是比较基础的东西。
初学的话先看 谭浩强的C/C++程序设计吧。
‘贰’ 我写了一个C语言的“练习打字程序” ,出了些问题,求解答!
是字母下落的位置还是下落的字母?
我玩了5次等级1的没出现提前结束啊
‘叁’ 用c语言编写打字练习
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <stdlib.h>
int funcA(int n)
{
n=getch();
if(n==0x50)
{
return 2;
}
else if(n==0x4b)
{
return 3;
}
else if(n==0x4d)
{
return 4;
}
else if(n==0x48)
{
return 1;
}
}
void Time()
{
clock_t start,finish;
double ration;
start=clock();
System();
finish=clock();
ration=(double)(finish-start)/CLOCKS_PER_SEC;
printf("用时:%.0f毫秒\n",ration*1000);
}
void System()
{
int i;
int number;
int n[4];
int w[4];
int j;
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
{
number=rand()%4+1;
w[i]=number;
switch(number)
{
case 1:
printf("↑ ");
break;
case 2:
printf("↓ ");
break;
case 3:
printf("← ");
break;
case 4:
printf("→ ");
break;
}
}
printf("\n");
for(i=0;i<4;i++)
{
j=getch();
n[i]=funcA(j);
switch(n[i])
{
case 1:
printf("↑ ");
break;
case 2:
printf("↓ ");
break;
case 3:
printf("← ");
break;
case 4:
printf("→ ");
break;
}
}
for(i=0;i<4;i++)
{
if(w[i]!=n[i])
{
printf("\n未能过关\n");
return;
}
}
printf("\n恭喜过关\n");
}
int main()
{
Time();
}
/*原理是大差不差的自己研究一下*/
‘肆’ C语言程序设计 (英文打字练习)
Option Explicit
Dim speed, right, wrong, keynum As Integer '定义速度,正确次数,错误次数,击键次数
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1
Dim rtn As LongSub letterInit() '初始化每个字母
lbl_letter.Caption = Chr(Int(Rnd * 26) + 97) '随机产生字母,如果要产生大写字母只要把97改成65即可
speed = Int(Rnd * 100 + 200)
lbl_letter.Left = Int(Rnd * (Form1.Width - lbl_letter.Width)) '随机产生字母出现的位置
lbl_letter.Top = lbl_score.Height
End SubPrivate Sub Command1_Click()
letterInit
lbl_score.Caption = "成绩: " & 0 & " 分" & " 错误: " & 0 & " 个" & " 正确率: " & 0 & "%"
Timer1.Enabled = True '启动定时器
Timer2.Enabled = True
Timer1.Interval = 100
Timer2.Interval = 1000
'隐藏命令按钮
Command1.Visible = False
Command2.Visible = False
lbl_time.Caption = 120 & " 秒"
End SubPrivate Sub Command2_Click()
Unload Me
End SubPrivate Sub Form_KeyPress(KeyAscii As Integer)
keynum = keynum + 1 If Chr(KeyAscii) = lbl_letter.Caption Then '判断所按键位是否与产生的字母相符
letterInit
rtn = sndPlaySound(App.Path & "\right.wav", SND_ASYNC)
right = right + 1
Else
rtn = sndPlaySound(App.Path & "\wrong.wav", SND_ASYNC)
wrong = wrong + 1
End If
lbl_score.Caption = "成绩: " & right & "分" & " 错误: " & wrong & " 个" & " 正确率: " & Int(right / keynum * 100) & "%" If KeyAscii = 27 Then
Timer1.Enabled = False
Timer2.Enabled = False
lbl_score.BackColor = vbYellow
lbl_score.Caption = "成绩: " & right & "分" & " 错误: " & wrong & " 个" & " 正确率: " & Int(right / keynum * 100) & "%" & " 按任意键继续"
Else
lbl_score.BackColor = vbGreen
Timer1.Enabled = True
Timer2.Enabled = True
End If
End SubPrivate Sub Form_Load()
Form1.Left = (Screen.Width - Form1.Width) / 2
Form1.Top = (Screen.Height - Form1.Height) / 2
Form1.BorderStyle = 1
Form1.BackColor = vbBlack
Form1.Caption = "英文打字练习程序"
Command1.Default = True
Command1.Caption = "开始"
Command2.Caption = "退出"
'设置lbl_letter中显示的字符的字体、样式、字号,请同时调整lbl_letter的大小与字符大小相等
With lbl_letter.Font
.Name = "宋体"
.Size = 20
.Bold = True
End With
lbl_letter.ForeColor = vbYellow
lbl_letter.BackColor = Form1.BackColor
lbl_score.BackColor = vbGreen
lbl_score.Alignment = 0
lbl_score.Caption = "敲回车键开始打字练习,按ESC键暂停"
lbl_time.BackColor = lbl_score.BackColor
lbl_time.Alignment = 2
lbl_time.Caption = "时间120秒"
Timer1.Enabled = False
Timer2.Enabled = False
Randomize '初始化
End SubPrivate Sub Timer1_Timer()
lbl_letter.Top = lbl_letter.Top + speed
If lbl_letter.Top >= Form1.Height Then
letterInit
End If
End Sub Private Sub Timer2_Timer()
lbl_time.Caption = Val(lbl_time.Caption) - 1 & " 秒"
If Val(lbl_time.Caption) <= 0 Then '判断时间是否已经用完
Timer1.Enabled = False
Timer2.Enabled = False
lbl_letter.Caption = ""
Select Case (right * (right / keynum))
Case Is <= 80
MsgBox "成绩: 不及格! 不过别灰心,请多多练习!", vbOKOnly, "练习结束!"
Case Is <= 100
MsgBox "成绩: 及格! 还要继续加油努力啊!", vbOKOnly, "练习结束!"
Case Is <= 120
MsgBox "成绩: 良!再加加油你就可以成为高手了!", vbOKOnly, "练习结束!"
Case Is >= 150
MsgBox "成绩: 优秀! 太棒了,恭喜你再也不会为打字发愁了!", vbOKOnly, "练习结束!"
End Select Command1.Visible = True '命令按钮恢复为可见状态
Command2.Visible = True
right = 0
wrong = 0
keynum = 0
End If
End Sub哥哥帮你,对你好吧!也不搞点分来啊
‘伍’ C语言打字练习游戏中循环体里用sleep()函数和system("cls")有什么作用
sleep是延时函数
可以使程序暂停运行
cls是清屏函数
可以清除当前屏幕所有输出 也就是全黑。
‘陆’ 一个打字练习的小程序(C语言)
不知道这个合不合你意 哈哈#include<stdio.h>
#include<time.h>
#include<stdlib.h>int main()
{
int i,j,count1=0,count2=0,c=1;
char ch[100],data[100];
srand(time(NULL));
for(i=0;i<100;i++)
{
j = rand()%52 + 0;
if(j<26)
{
c = 2;
ch[i] = j + 'A';
}
else
ch[i] = j + 'A' + 6;
}
if(c == 1)
{
printf("等级为1\n");
for(i=0;i<100;i++)
printf("%c",ch[i]);
}
else
{
printf("等级为2\n");
for(i=0;i<100;i++)
printf("%c",ch[i]);
}
printf("\n");
for(i =0;i<100;i++)
{
scanf("%c",&data[i]);
}
for(i=0;i<100;i++)
{
if(data[i] == ch[i])
{
printf("%c",data[i]);
count1++;
}
else
{
printf("*");
count2++;
}
}
printf("\n");
printf("对了%d个\n",count1);
printf("错了%d个\n",count2);
return 1;
}数字可以自己改的!
‘柒’ 请问如何用C语言编写打字模拟练习程序呢
定议键码,
用一个数组来定义
key13=key[13] 是一个数组
在FORM上面的keyperss
上加入
if key=#13 and key=true then //如果你按了回车和当前回车键出现则。。。。。。。
key=false
这样简单可以实现它的原理,基础。。。见笑了
‘捌’ C语言打字练习游戏中怎样实现字母掉落,不用换行和随机坐标还有别的方法吗
可以指定光标位置进行printf输出字符,多字符同时出现,最好使用多线程,下面是个简单的例子,希望对你有帮助
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
voidsetxy(intx,inty)
{
COORDcoord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
intmain()
{
CONSOLE_CURSOR_INFOcci;
cci.bVisible=FALSE;
cci.dwSize=sizeof(cci);
HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle,&cci);
srand((unsigned)time(0));
intx,y;
intc;
while(1)
{
c=rand()%26;
c+='A';
x=rand()%40;
y=0;
while(1)
{
setxy(x,y);
printf("%c",c);
sleep(1);
setxy(x,y);
printf("");
y++;
if(y>5)
{
break;
}
}
}
return0;
}
‘玖’ 求c语言英文打字练习程序
比较简单:
/*
练习训练游戏
*/
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <bios.h>
#include <dos.h>
#include <time.h>
#define MAXCHAR 100
#define ESC 0x011b /* 退出程序键,调用quitgame()函数*/
#define F1 0x3b00 /* 查看帮助信息,调用Help()函数 */
#define F2 0x3c00 /* 查看关于...信息,调用About()函数 */
#define F3 0x3d00 /* 以下功能键暂时保留,如果增加功能可使用 */
#define F4 0x3e00
#define F5 0x3f00
#define F6 0x4000
#define F7 0x4100
#define F8 0x4200
#define F9 0x4300
#define F10 0x4400
#define KEY1 0x0231
#define KEY2 0x0332
#define KEY3 0x0433
#define KEY4 0x0534
#define KEY01 0x4f31
#define KEY02 0x5032
#define KEY03 0x5133
#define KEY04 0x4b34
char string[MAXCHAR+1];
int LittleWin(int WinType/*=1, quitgame; =2, Help;=3, About; =4, others;*/);/*when WinType=1, return 0, quit, return 1, not quit*/
void quitgame();
void Welcome();
void drawframe();
void Frame();
void GetCharacter();
void Typing();
int LittleWin(int WinType/*=1, quitgame; =2, Help;=3, About; =4, others;*/)
/*when WinType=1, return 0, quit, return 1, not quit*/
{
int i;
char ch;
window(18,6,62,20);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(1,1);
cprintf("%c",201);
for(i=0;i<43;i++)
cprintf("%c",205);
cprintf("%c",187);
for(i=0;i<13;i++)
{
gotoxy(1,i+2);
cprintf("%c",186);
gotoxy(45,i+2);
cprintf("%c",186);
}
gotoxy(1,14);
cprintf("%c",200);
for(i=0;i<43;i++)
cprintf("%c",205);
cprintf("%c",188);
gotoxy(20,1);
switch(WinType)
{
case 1:
cprintf(" Exit ");
textcolor(LIGHTRED);
gotoxy(18,3);
cprintf("Warning!");
textcolor(LIGHTBLUE);
gotoxy(5,5);
cprintf("This operation will exit the program!");
gotoxy(10,7);
cprintf("Do you really want to quit?");
textcolor(LIGHTGREEN);
gotoxy(18,9);
cprintf("OK? [Y/N]");
/*window(18,20,62,20);
textbackground(LIGHTBLUE);
textcolor(YELLOW);
clrscr();*/
window(19,18,61,18);
textbackground(LIGHTBLUE);
textcolor(WHITE);
clrscr();
gotoxy(5,1);
cprintf("Press Y to quit, press N to return.");
while(1)
{
ch=getch();
if(ch=='Y'||ch=='y')
return 0;
else if(ch=='N'||ch=='n')
return 1;
}
break;
case 2:
cprintf(" Help ");
break;
case 3:
cprintf(" About ");
break;
case 4:
cprintf(" Info ");
break;
default:
break;
}
}
void quitgame()
{
if(LittleWin(1))
{
Frame();
return;
}
window(1,1,80,25);
textbackground(BLACK);
textcolor(LIGHTGRAY);
clrscr();
exit(0);
}
void Welcome()
{
int driver=VGA,mode=VGAHI; /*定义变量*/
int x1=20,y1=20,r=10,num,i;
int x2=20,y2=450;
int color1=10,color2=10; /*在此设置颜色,一改全改*/
static char ch1[28][2]={"W","e","l","c","o","m","e"," ","t","o"," ","t","h","e"," ","T","y","p","i","n","g"," ","W","o","r","l","d","!"};
initgraph(&driver,&mode,"C:\\tc "); /*初始化图形模式*/
setbkcolor(LIGHTBLUE);
setcolor(color1); /*步骤一、设置当前颜色用于绘图*/
for(num=0;num<30;num++)
{
circle(x1,y1,r); /*步骤二、使用当前颜色绘制一个闭合图形*/
setfillstyle(num%12,color1); /*步骤三、设置填充方式*/
floodfill(x1,y1,color1); /*步骤四、对闭合图形进行填充*/
x1+=20;
sound(300); /*输出声音*/
delay(3000);
nosound();
}
setcolor(color2);
for(num=0;num<30;num++)
{
circle(x2,y2,r);
setfillstyle(num%12,color2);
floodfill(x2,y2,color2);
x2+=20;
sound(300); /*输出声音*/
delay(3000);
nosound();
}
settextstyle(0,0,2);
setcolor(LIGHTRED);
sound(300); /*输出声音*/
delay(3000);
nosound();
outtextxy(180,90,"^o^ Hello! ^o^");
sound(300); /*输出声音*/
delay(3000);
nosound();
setcolor(YELLOW);
gotoxy(50,150);
for(i=0;i<28;i++)
{
outtextxy(50+i*16,150,ch1[i]);
sound(300); /*输出声音*/
delay(3000);
nosound();
}
/*outtextxy(50,150,"Welcome to the Typing World!");*/
setcolor(WHITE);
outtextxy(50,200,"This is a little");
sound(300); /*输出声音*/
delay(6000);
nosound();
outtextxy(100,250,"Typing Training");
sound(300); /*输出声音*/
delay(6000);
nosound();
outtextxy(150,300,"Software ... ^_^");
sound(300); /*输出声音*/
delay(6000);
nosound();
setcolor(LIGHTMAGENTA);
outtextxy(100,350,"Ver. 2004-04-30");
sound(300); /*输出声音*/
delay(6000);
nosound();
setcolor(LIGHTGREEN);
outtextxy(100,400,"Press any key to start...");
sound(300); /*输出声音*/
delay(6000);
nosound();
getch();
closegraph(); /*关闭图形*/
}
void drawframe()
{
int i;
window(1,1,80,1);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(7,1);
cprintf("File Edit Run Compile Project Options Debug Help");
textcolor(RED);
gotoxy(7,1);
cprintf("F");
gotoxy(14,1);
cprintf("E");
gotoxy(21,1);
cprintf("R");
gotoxy(27,1);
cprintf("C");
gotoxy(37,1);
cprintf("P");
gotoxy(47,1);
cprintf("O");
gotoxy(57,1);
cprintf("D");
gotoxy(65,1);
cprintf("H");
window(1,25,80,25);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(7,1);
printf("F1-Help F2-About F3-Open F4-Restart Ctrl+F9-Run ESC-Quit");
textcolor(RED);
gotoxy(7,1);
cprintf("F1");
gotoxy(17,1);
cprintf("F2");
gotoxy(28,1);
cprintf("F3");
gotoxy(37,1);
cprintf("F4");
gotoxy(50,1);
cprintf("Ctrl+F9");
gotoxy(64,1);
cprintf("ESC");
window(1,2,80,24);
textbackground(LIGHTBLUE);
textcolor(LIGHTGRAY);
clrscr();
gotoxy(1,2);
cprintf("%c",213);
for(i=0;i<78;i++)
cprintf("%c",205);
cprintf("%c",184);
for(i=0;i<21;i++)
{
gotoxy(1,i+3);
cprintf("%c",179);
gotoxy(80,i+3);
cprintf("%c",179);
}
gotoxy(1,22);
cprintf("%c",192);
for(i=0;i<78;i++)
cprintf("%c",196);
cprintf("%c",217);
textcolor(WHITE);
gotoxy(37,1);
cprintf(" Type ");
}
void Frame() /*设置菜单函数*/
{
drawframe();
window(2,3,79,22);
textbackground(LIGHTBLUE);
textcolor(YELLOW);
clrscr();
gotoxy(25,2);
cprintf("The Typing World Menu\n");
gotoxy(12,4);
cprintf("1:Practice Only ENGLISH Characters.");
gotoxy(12,6);
cprintf("2:Practice Other Charcters.");
gotoxy(12,8);
cprintf("3:Practice All Charcters.");
gotoxy(12,10);
cprintf("4:Quit at once!");
GetCharacter();
}
void GetCharacter(void) /*设置得到字符函数*/
{
void Typing(); /*声明typing()函数*/
FILE *in;
int i,t,choice;
char ch;
t=abs(time(0))%700; /*获取随机数来指定下面指针的位*/
gotoxy(12,12);
cprintf("Please input your choice: ");
while(1)
{
gotoxy(38,12);
choice=bioskey(0);
if(choice==ESC||choice==KEY4||choice==KEY04)
{
quitgame();
break;
}
else if(choice==KEY1||choice==KEY01)
{
in=fopen("english.dat","r");
break;
}
else if(choice==KEY2||choice==KEY02)
{
in=fopen("others.dat","r");
break;
}
else if(choice==KEY3||choice==KEY03)
{
in=fopen("typeall.dat","r");
break;
}
}
clrscr(); /*清屏*/
fseek(in,t*1l,0);
fgets(string,MAXCHAR+1,in);
textcolor(WHITE);
gotoxy(1,2);
cprintf("******************************************************************************");
textcolor(YELLOW);
for(i=0;i<MAXCHAR;i++)
cprintf("%c",string[i]);
gotoxy(1,5);
textcolor(WHITE);
cprintf("******************************************************************************");
fclose(in);
gotoxy(1,6);
cprintf("Let's begin typing,OK?[Y/N]");
while(1)
{
gotoxy(28,6);
ch=getch();
if(ch=='n'||ch=='N') /*判断是否练习打字*/
{
quitgame();
break;
}
else if(ch=='y'||ch=='Y')
{
Typing();
break;
}
}
}
void Typing(void) /*设置打字(包括计算其他结果)函数*/
{
int i,j,Right_char=0,Wrong_char=0,Sum_char=0;
float Speed,Timeused,Right_rate;
char absorb_char,ch_1,ch_2,ch_3;
time_t star,stop; /*定义time变量,获取系统时间并显示在屏幕上*/
time(&star);
textcolor(WHITE);
gotoxy(1,6);
cprintf("time begin:%s",ctime(&star));
gotoxy(1,7);
i=0;
textcolor(YELLOW);
absorb_char=getch(); /*接受键盘输入的字符并在下面的while语句判断正错和计算结果*/
while(i<MAXCHAR)
{
if(absorb_char=='\n')
continue;
else
cprintf("%c",absorb_char);
if(absorb_char==string[i])
{
Right_char++;
Sum_char++;
}
else
{
Wrong_char++;
Sum_char++;
}
i++;
absorb_char=getch();
}
time(&stop);
Timeused=difftime(stop,star); /*利用difftime()函数输出所用时间*/
Right_rate=(float)Right_char/(float)Sum_char*100;
Speed=(Sum_char/Timeused)*60;
textcolor(WHITE);
gotoxy(1,11);
cprintf("time end:%s",ctime(&stop)); /*下面显示分数*/
textcolor(LIGHTGREEN);
gotoxy(1,12);
cprintf("********************Your Score!*************************");
gotoxy(7,13);
textcolor(WHITE);
cprintf(" 1: TOTAL TIME USED:%.3f",Timeused);
gotoxy(7,14);
cprintf(" 2: YOU HAVE TYPED:%d",Sum_char);
gotoxy(7,15);
cprintf(" 3: Typing Right_Characters are:%d",Right_char);
gotoxy(7,16);
cprintf(" 4: Typing Wrong_Characters are:%d\n",Wrong_char);
gotoxy(7,17);
cprintf(" 5: YOUR TYPING SPEED IS :%.2f\\min\n",Speed);
gotoxy(7,18);
cprintf(" 6: YOUR TYPING RIGHT_RATE IS :%.2f%%\n",Right_rate);
textcolor(LIGHTGREEN);
gotoxy(1,19);
cprintf("********************Your Score!*************************");
gotoxy(1,20);
textcolor(WHITE);
if(Speed<=50||Right_rate<=80) /*询问用户是否重来一遍*/
{
cprintf("Not Very Good! Try it Again,OK?[Y/N]");
while(1)
{
gotoxy(39,20);
ch_2=getch();
if(ch_2=='n'||ch_2=='N')
{
quitgame();
break;
}
else if(ch_2=='y'||ch_2=='Y')
{
Frame();
break;
}
}
}
else
{
cprintf("Well Done!! One More Time?[Y/N]"); /*询问用户是否重来一遍*/
while(1)
{
gotoxy(35,20);
ch_3=getch();
if(ch_3=='n'||ch_3=='N')
{
quitgame();
break;
}
else if(ch_3=='y'||ch_3=='Y')
{
Frame();
break;
}
}
}
}
main(void) /*主函数包含两个要调用的函数*/
{
/*Welcome();*/
Frame();
}
/*注:cprintf与printf的区别如下:
1.cprintf函数用于向当前窗口输出数据,比如你用window函数定义一个窗口
window(20,10,60,20),那么当你调用cprintf函数时,cprintf的输出就是相对于20,10,
60,20这个窗口,当输出的字符串长度大于当前窗口长度时,会在当前窗口自动换行。
默认方式下,当前窗口为整个屏幕,即:0,0,79,25
2.cprintf函数可以配合setcolor,setbkcolor等函数使用,而调用printf函数时会忽略这些
函数执行的结果。
比如执行:setcolor(RED);
cprintf( "Hello world ");
printf( "Hello ");
将会在屏幕上显示红色字符串:Hello world
和白色字符串(因为setcolor函数对printf函数比起作用:Hello
在原来的C语言中,cprintf中的c代表console,就是控制台.(conio.h中的con也是这个意思)到了windows也继承了这个渊源.
按照设计者本来的意图,printf是标准输出,就是指可以完全不知道你输出的对象,只是以标准的文本流方式输出.cprintf是与终端相关的,要用到一些系统平台,硬件设备相关的特性,所以可以有颜色等很多东西可供选择,同时也削弱了移植性所以cprintf是非标准的.
*/