⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft2.cpp

📁 TurboC2.0编写的打字练习程序
💻 CPP
字号:
#include "temp.h"
#include "need.h"
#include <stdio.h>
#include <conio.h>
#include <kbmo.h>
#include "delay.h"
#define BOARD_STX 47
#define BOARD_STY 65
char *klet1[26]={"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M"};
char *klet2[21]={"~","!","@","#","$","%","^","&","*","(",")","_","+","{","}","|",":","\"","<",">","?"};
char *klet3[21]={"`","1","2","3","4","5","6","7","8","9","0","-","=","[","]","\\",";","'",",",".","/"};
void wordp(int);
void capch();
void kkey(int,int,int,int);
char & letter(int);
class key
{
 public:
  key();
  key(int);
  key(unsigned char);
  key(int,int);
  key(int,int,int);
  key(int,int,char *);
  void onpres();
  void Onpres();
  void setcode(int);
  void setchar(char *);
  void setchar(int,int,char *);
 private:
  void *keybuf;
  void *keyb;
  unsigned char pcode;
  unsigned char rcode;
  unsigned char ASCII;
  unsigned short int kx,ky,kl,kh;
  unsigned char at;
};
//---------------------------------------------------------------------------
key::key()
{
 kx=getx();ky=gety(); kl=35,kh=35;  at=0;
 adkey(kx,ky,kl,kh);
 moveto(kx+kl+1,ky);
}
//---------------------------------------------------------------------------
key::key(int code)
{
 pcode = code;
}
//---------------------------------------------------------------------------
key::key(unsigned char code)
{
 kx=getx();ky=gety(); kl=35,kh=35; pcode=code; at=0;
 adkey(kx,ky,kl,kh);
 moveto(kx+kl+1,ky);
}
//---------------------------------------------------------------------------
key::key(int k_x,int k_y)
{
 kx=k_x,ky=k_y;kl=kh=35;   at=0;
 adkey(kx,ky,kl,kh);
 moveto(kx+kl+1,ky);
}
//---------------------------------------------------------------------------
key::key(int k_x,int k_y,char *c)
{
 kx=k_x,ky=k_y;kl=kh=35;     at=0;
 adkey(kx,ky,kl,kh);
 moveto(kx+kl+1,ky);
 setcolor(BLACK);
 outtextxy(kx+9,ky+8,c);
}
//---------------------------------------------------------------------------
key::key(int k_x,int k_y,int k_l)
{
 kx=k_x,ky=k_y;kl=k_l,kh=35;    at=0;
 adkey(kx,ky,kl,kh);
 moveto(kx+kl+1,ky);
}
//---------------------------------------------------------------------------
void key::onpres()
{
 if(sckey()==1) exit(0);
 if(sckey()==pcode&&at==0)
 {
  keybuf=malloc(imagesize(kx,ky,kx+kl,ky+kh));
  keyb=malloc(imagesize(kx,ky,kx+kl,ky+kh-4));
  getimage(kx,ky,kx+kl,ky+kh,keybuf);
  getimage(kx,ky,kx+kl,ky+kh-4,keyb);
  setfillstyle(SOLID_FILL,BLACK);bar(kx,ky,kx+kl,ky+4);
  putimage(kx,ky+4,keyb,COPY_PUT);
  at=1;  wordp(pcode);
 }
 if(sckey()==pcode+128&&at==1)
 {
  putimage(kx,ky,keybuf,COPY_PUT);
  free(keybuf); free(keyb);
  at=0;
 }
}
//---------------------------------------------------------------------------
void key::Onpres()
{
 int tcode;
 tcode = sckey();
if((tcode==250||tcode==58)&&at==0)
 {
  keybuf=malloc(imagesize(kx,ky,kx+kl,ky+kh));
  keyb=malloc(imagesize(kx,ky,kx+kl,ky+kh-4));
  getimage(kx,ky,kx+kl,ky+kh,keybuf);
  getimage(kx,ky,kx+kl,ky+kh-4,keyb);
  setfillstyle(SOLID_FILL,BLACK);bar(kx,ky,kx+kl,ky+4);
  putimage(kx,ky+4,keyb,COPY_PUT);
  at=1;  Delay(5);  capch(); //change letter's cap
  putimage(kx,ky,keybuf,COPY_PUT);
  free(keybuf); free(keyb);
  at=0;
 }
}
//---------------------------------------------------------------------------
void key::setcode(int code)
{
 pcode = code;
}
//---------------------------------------------------------------------------
void key::setchar(char *tit)
{
 setcolor(BLACK);
 outtextxy(kx+9,ky+8,tit);
}
//---------------------------------------------------------------------------
void key::setchar(int chardx,int chardy,char *tit)
{
 setcolor(BLACK);
 if(chardx>30) chardx = 30;
 if(chardy>30) chardy = 30;
 outtextxy(kx+chardx,ky+chardy,tit);
}
//---------------------------------------------------------------------------

void main()
{
 int tuse,tusey;
 char i,j;
 inig(DARKGRAY); setfillstyle(SOLID_FILL,BLACK);
 bar(BOARD_STX,BOARD_STY,BOARD_STX+539,BOARD_STY+179);
 key esc(1);
 key k0(BOARD_STX,BOARD_STY,"~"),ks1[12],bsp(getx(),BOARD_STY,586-getx());tuse=getx()-1;
 //row one
 key tab(BOARD_STX,BOARD_STY+36,53),k1[12],ks3(getx(),BOARD_STY+36,tuse-getx());
 //row two
 key capl(BOARD_STX,BOARD_STY+72,63),k2[11],enter(getx(),BOARD_STY+72,tuse-getx());
 //row three
 key lshf(BOARD_STX,BOARD_STY+108,81),k3[10],rshf(getx(),BOARD_STY+108,tuse-getx());
 //row four
 key lctrl(BOARD_STX,BOARD_STY+144,53),lwin(getx(),gety(),53),lalt(getx(),gety(),53);
 key space(getx(),gety(),161),ralt(getx(),gety(),53),rwin(getx(),gety(),53);
 key doc(getx(),gety(),53),rctrl(getx(),gety(),53);
 //row five
//----------------------------------------------------------------------------
 k0.setcode(41); for(i=0;i<12;i++) ks1[i].setcode(i+2); bsp.setcode(14);
 tab.setcode(15); for(i=0;i<12;i++) k1[i].setcode(i+16); ks3.setcode(43);
 capl.setcode(250); for(i=0;i<11;i++) k2[i].setcode(i+30); enter.setcode(28);
 lshf.setcode(42); for(i=0;i<10;i++) k3[i].setcode(i+44); rshf.setcode(54);
 space.setcode(57);
//----------------------------------------------------------------------------
 arctangle(BOARD_STX-20,BOARD_STY-25,tuse+20,BOARD_STY+205,4,WHITE);
 setcolor(BLACK); setlinestyle(SOLID_LINE,0,3);
 rectangle(BOARD_STX-2,BOARD_STY-2,tuse+2,BOARD_STY+181);
 setlinestyle(SOLID_LINE,0,0);
 arctangle(BOARD_STX-4,BOARD_STY-4,tuse+4,BOARD_STY+183,4,WHITE);
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 floodfill(BOARD_STX-6,BOARD_STY-6,WHITE);
 for(i=0;i<5;i++)
 arctangle(BOARD_STX-20+i,BOARD_STY-24+i/3,tuse+20-i,BOARD_STY+204-i,4,DARKGRAY);
 arctangle(BOARD_STX-20,BOARD_STY-25,tuse+20,BOARD_STY+205,4,BLACK);
//----------------------------------------------------------------------------
 for(i=1;i<13;i++) ks1[i-1].setchar(8,7,klet2[i]);
 for(i=0;i<10;i++) k1[i].setchar(klet1[i]);
 k1[10].setchar(8,7,klet2[13]),k1[10].setchar(8,18,klet3[13]);
 k1[11].setchar(8,7,klet2[14]),k1[11].setchar(7,19,klet3[14]);
 ks3.setchar(6,7,klet2[15]),ks3.setchar(8,18,klet3[15]);
 for(i=0;i<9;i++) k2[i].setchar(klet1[i+10]);

 for(i=0;i<7;i++) k3[i].setchar(klet1[i+19]);
//----------------------------------------------------------------------------
 while(1)
  {
   esc.onpres(), k0.onpres();
   for(i=0;i<12;i++) ks1[i].onpres();bsp.onpres();
   tab.onpres();
   for(i=0;i<12;i++) k1[i].onpres(); ks3.onpres(); capl.Onpres();
   lshf.onpres(),rshf.onpres(); enter.onpres();
   for(i=0;i<11;i++)
   k2[i].onpres();
   for(i=0;i<10;i++)
   k3[i].onpres();
   space.onpres();
  }
}


//----------------------------------------------------------------------------
void wordp(int code)
{
 gotoxy(10,20);   printf("%d",code);
}
void capch()
{
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -