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

📄 test.c

📁 uCos-II 打字练习游戏 源代码, 欢迎各位进行二次开发
💻 C
📖 第 1 页 / 共 2 页
字号:
test.c

/*
*uCos typing game by Walter Clozet for term-ending test        *
*this program is designed to practising basic typing                  *
*task 1 is used to test key pressing,task 2 to task n is used  to  *
*show diffrent letters,each of them takes one column               *
*each letter in one column falls from start line to end line,if no *
*key pressed,it will return to start line to fall again. if correct     *
*key pressed system will generate a radom letter to fall            *
*Copyright (c) 1986-2007 wangcou.com.cn,listened by GPL 2.0*
*/
#include “includes.h”

#define          STK_SIZE     512       
#define taskx 27/* position x of first char on the left*/
#define tasky 1/* start line no. */
#define endy 22/* end line no. */
#define tcolor DISP_FGND_WHITE+DISP_BGND_BLUE /* color of falling letter */
#define showx1 8
#define showx2 63
#define showy 21

OS_STK           stk1[STK_SIZE];  
OS_STK           stk2[STK_SIZE];  
OS_STK           stk3[STK_SIZE];
OS_STK           stk4[STK_SIZE];
OS_STK           stk5[STK_SIZE]; 
OS_STK           stk6[STK_SIZE]; 
OS_STK           stk7[STK_SIZE]; 
OS_STK           stk8[STK_SIZE];  
OS_STK           stk9[STK_SIZE];
OS_STK           stk10[STK_SIZE];
OS_STK           stk11[STK_SIZE]; 
OS_STK           stk12[STK_SIZE]; 
OS_STK           stk13[STK_SIZE]; 
OS_STK           stk14[STK_SIZE];
void     task1(void *data);
void     task2(void *data);
void     task3(void *data);
void     task4(void *data);
void     task5(void *data);
void     task6(void *data);
void     task7(void *data);
void     task8(void *data);
void     task9(void *data);
void     task10(void *data);
void     task11(void *data);
void     task12(void *data);
void     task13(void *data);
void     task14(void *data);
void write(char *mat,int x,int y) ;/* write author name*/
void showint(int x,int y,unsigned int num);
char author1[]={
  0×00,0×08,0×7F,0xFC,0×01,0×00,0×01,0×00,
  0×01,0×00,0×01,0×00,0×01,0×08,0×3F,0xFC,
  0×01,0×00,0×01,0×00,0×01,0×00,0×01,0×00,
  0×01,0×04,0xFF,0xFE,0×00,0×00,0×00,0×00,
};
char author2[]={
  0×00,0×80,0×00,0×80,0×00,0xE0,0×67,0×00,
  0×31,0xC0,0×03,0×00,0×01,0xF0,0×16,0×40,
  0×22,0×60,0×25,0×90,0×48,0xEE,0×57,0×80,
  0×01,0×40,0×02,0×30,0×0C,0×10,0×00,0×00,
};
INT16S     key;
unsigned int err=0;
unsigned int right=0;
int y1=tasky;
int y2=tasky;
int y3=tasky;
int y4=tasky;
int y5=tasky;
int y6=tasky;
int y7=tasky;
int y8=tasky;
int y9=tasky;
int y10=tasky;
int y11=tasky;
int y12=tasky;
char *str=”WALTERCLOZETTYPINGGAME”;
char ttime[20];

void main (void)
{
    srand(time(NULL));
    PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLUE);
PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLUE);
PC_DispStr(0,0,”                                     Readme                                     “,DISP_FGND_BLACK+DISP_BGND_RED+DISP_BLINK);
    PC_DispStr(2,1,”This Software is designed by Walter Clozet for YuMiao to improve  hertyping “,tcolor);
    PC_DispStr(0,2,”speed. So it is designed very difficult and has no time or error number limit   “,tcolor);
    PC_DispStr(0,3,”to stop your game,so do enjoy it and take notice that ithas no end. So press the”,tcolor);
    PC_DispStr(0,4,”Enter key if you do not want to continue any more or just want a rest to have a “,tcolor);
    PC_DispStr(0,5,”relax.”,tcolor);
    PC_DispStr(2,6,”This Software is Listenced by GPL 2.0,so you can do anyting allowed under it.”,tcolor);
    PC_DispStr(0,7,” And I am pleased to help anyone who want to update this Software as I will”,tcolor);
    PC_DispStr(0,8,”never do this any more.”,tcolor);
    PC_DispStr(2,9,”However,if you want to add this code to your own Software or program I sugguest”,tcolor);
    PC_DispStr(0,10,”you to show my information in your works.”,tcolor);
    PC_DispStr(66,12,”Walter Clozet”,tcolor);
    PC_DispStr(62,13,”www.wangcou.com.cn”,tcolor);
    PC_DispStr(4,22,”Copyright (c) 1986 - 2007 Designed by Walter Clozet,all rights reserved.”,tcolor);
    PC_DispStr(0,24,”Tips:Press any key to start game                                                    “,DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
    while(!kbhit());getch();
    PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLUE);
    PC_DispStr(0,0,”       uCos-II Basic Typing Practising Game Version 6.48 By Walter Clozet       “,DISP_FGND_BLACK+DISP_BGND_RED+DISP_BLINK);
    PC_DispStr(0,24,”Tips:Press Enter Key to pause and continue;Press Esc Key to exit this software. “,DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
    write(author1,5,4);
    write(author2,59,4);
    OSInit(); 
    PC_DOSSaveReturn();
    PC_VectSet(uCOS,OSCtxSw);
    OSTaskCreate(task1,(void *)0,stk1,0);
    OSTaskCreate(task2,(void *)0,stk2,1);
    OSTaskCreate(task3,(void *)0,stk3,2);
    OSTaskCreate(task4,(void *)0,stk4,3);
    OSTaskCreate(task5,(void *)0,stk5,4);
    OSTaskCreate(task6,(void *)0,stk6,5);
    OSTaskCreate(task7,(void *)0,stk7,6);
    OSTaskCreate(task8,(void *)0,stk8,7);
    OSTaskCreate(task9,(void *)0,stk9,8);
    OSTaskCreate(task10,(void *)0,stk10,9);
    OSTaskCreate(task11,(void *)0,stk11,10);
    OSTaskCreate(task12,(void *)0,stk12,11);
    OSTaskCreate(task13,(void *)0,stk13,12);
    OSTaskCreate(task14,(void *)0,stk14,13);
    OSStart();    
}
void  task1 (void *data)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    write(author1,5,4);
    write(author2,59,4);   
    data = data;
    OS_ENTER_CRITICAL();
    PC_VectSet(0×08,OSTickISR);
    PC_SetTickRate(OS_TICKS_PER_SEC);
    OS_EXIT_CRITICAL();
    OSStatInit();
    for (;;)
    {
        OS_ENTER_CRITICAL();
        if (PC_GetKey(&key)==TRUE)
        { 
             if (key == 0×1B) PC_DOSReturn();
        }
        OS_EXIT_CRITICAL();
        OSTimeDlyHMSM(0,0,0,100);
    }
}
#define ty y1
#define tx 0
#define tchar *(str)
void  task2 (void *data)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    data = data;
    OS_ENTER_CRITICAL();
    PC_VectSet(0×08,OSTickISR);
    PC_SetTickRate(OS_TICKS_PER_SEC);
    OS_EXIT_CRITICAL();
    OSStatInit();
    for (;;)
    {
             
              PC_DispChar(taskx+tx,ty,tchar,tcolor);
              if (ty==tasky) PC_DispChar(taskx+tx,endy,’ ‘,tcolor);
              else PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
              ty++;
              if (key==13)
              {
                    key=0;
                    while(key!=13);
              }
              if (ty==endy+1) {ty=tasky;err++;}
              OSTimeDlyHMSM(0,0,0,100);
              if ((char)key==tchar+32||(char)key==tchar)
              {
                    if (ty!=tasky) PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
                    ty=tasky;right++;
                    tchar=random(26)+’A';
              }
    }
}
#undef ty
#define ty y2
#undef tx
#define tx 2
#undef tchar
#define tchar *(str+1)
void  task3 (void *data)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    data = data;
    OS_ENTER_CRITICAL();
    PC_VectSet(0×08,OSTickISR);
    PC_SetTickRate(OS_TICKS_PER_SEC);
    OS_EXIT_CRITICAL();
    OSStatInit();
    for (;;)
    {
             
              PC_DispChar(taskx+tx,ty,tchar,tcolor);
              if (ty==tasky) PC_DispChar(taskx+tx,endy,’ ‘,tcolor);
              else PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
              ty++;
              if (ty==endy+1) {ty=tasky;err++;}
              OSTimeDlyHMSM(0,0,0,100);
              if ((char)key==tchar+32||(char)key==tchar)
              {
                    if (ty!=tasky) PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
                    ty=tasky;right++;
                    tchar=random(26)+’A';
              }
    }
}
#undef ty
#define ty y3
#undef tx
#define tx 4
#undef tchar
#define tchar *(str+2)
void  task4 (void *data)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    data = data;
    OS_ENTER_CRITICAL();
    PC_VectSet(0×08,OSTickISR);
    PC_SetTickRate(OS_TICKS_PER_SEC);
    OS_EXIT_CRITICAL();
    OSStatInit();
    for (;;)
    {
             
              PC_DispChar(taskx+tx,ty,tchar,tcolor);
              if (ty==tasky) PC_DispChar(taskx+tx,endy,’ ‘,tcolor);
              else PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
              ty++;
              if (ty==endy+1) {ty=tasky;err++;}
              OSTimeDlyHMSM(0,0,0,100);
              if ((char)key==tchar+32||(char)key==tchar)
              {
                    if (ty!=tasky) PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
                    ty=tasky;right++;
                    tchar=random(26)+’A';
              }
    }
}
#undef ty
#define ty y4
#undef tx
#define tx 6
#undef tchar
#define tchar *(str+3)
void  task5 (void *data)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    data = data;
    OS_ENTER_CRITICAL();
    PC_VectSet(0×08,OSTickISR);
    PC_SetTickRate(OS_TICKS_PER_SEC);
    OS_EXIT_CRITICAL();
    OSStatInit();
    for (;;)
    {
             
              PC_DispChar(taskx+tx,ty,tchar,tcolor);
              if (ty==tasky) PC_DispChar(taskx+tx,endy,’ ‘,tcolor);
              else PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
              ty++;
              if (ty==endy+1) {ty=tasky;err++;}
              OSTimeDlyHMSM(0,0,0,100);
              if ((char)key==tchar+32||(char)key==tchar)
              {
                    if (ty!=tasky) PC_DispChar(taskx+tx,ty-1,’ ‘,tcolor);
                    ty=tasky;right++;
                    tchar=random(26)+’A';
              }
    }
}
#undef ty
#define ty y5
#undef tx
#define tx 8
#undef tchar
#define tchar *(str+4)
void  task6 (void *data)
{

⌨️ 快捷键说明

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