📄 test.c
字号:
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 + -