0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用C語(yǔ)言實(shí)現(xiàn)打字練習(xí)系統(tǒng)

C語(yǔ)言編程學(xué)習(xí)基地 ? 來(lái)源:C語(yǔ)言編程學(xué)習(xí)基地 ? 作者:C語(yǔ)言編程學(xué)習(xí)基地 ? 2021-11-17 17:48 ? 次閱讀

這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)——《打字練習(xí)系統(tǒng)》,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下!

90ccb3ac-44ec-11ec-b939-dac502259ad0.png

游戲介紹:

字母游戲》是一款敏捷打字小游戲,游戲大小為468K。背景設(shè)定 《字母游戲》是一款有趣的打字游戲,可以提高你的打字速度。操作指南 根據(jù)出現(xiàn)的字母,按鍵盤(pán)A-Z鍵對(duì)應(yīng)的按鍵即可。游戲加載完畢點(diǎn)擊[開(kāi)始游戲]即可開(kāi)始游戲。在限定時(shí)間內(nèi),盡可能地輸入正確的字母,挑戰(zhàn)高分!

本項(xiàng)目針對(duì)C語(yǔ)言學(xué)習(xí)者,將我們打字母的“字母”置換成了C語(yǔ)言關(guān)鍵字,記在一定時(shí)間內(nèi)及時(shí)輸出C語(yǔ)言關(guān)鍵字就可以得分!我們一起來(lái)看看吧!

本項(xiàng)目編譯環(huán)境:VS2019/VS2013;

插件:圖形庫(kù)插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領(lǐng)取;

效果圖展示

配套講解教程程序員打字練習(xí)系統(tǒng)教程——嗶哩嗶哩

源代碼示例:

#define _CRT_SECURE_NO_WARNINGS#include     #include #include #include #include   //報(bào)錯(cuò),請(qǐng)先安裝#include #pragma comment(lib,"winmm.lib")//數(shù)據(jù)設(shè)計(jì)設(shè)計(jì)//窗口屬性:const int WIDTH = 640;const int HEIGHT = 500;//游戲正確率和錯(cuò)誤率int right = 0;int error = 0;//下墜文字的結(jié)構(gòu)體struct TARGET{  //每一個(gè)字符串的x,y坐標(biāo)  int x;  int y;  char *str;  //保存字符串};//用戶輸入的值struct USRKEY{  int x;  int y;  char str[20];}userkey = {320,500-30,""};
//在指定位置輸出整數(shù)void outtextxy_int(int x, int y, char *format, int num){  char str[20] = "";  //printf;  sprintf(str, format, num);  outtextxy(x, y, str);}//在指定位置輸出浮點(diǎn)數(shù)void outtextxy_double(int x, int y, char *format, double num){  char str[20] = "";  sprintf(str, format, num);  outtextxy(x, y, str);}
void divWindow(){  line(WIDTH - 100, 0, WIDTH - 100, HEIGHT - 40);  line(0, HEIGHT - 40, WIDTH + 50, HEIGHT - 40);  line(WIDTH - 100, 130, WIDTH + 50, 130);}
void initTarget(struct TARGET words[], int n){  static char str[29][10] = { "main", "include", "void", "while", "for",    "true", "false", "break", "int", "char", "float", "double", "switch", "case",    "static", "if", "else", "short", "unsigned", "signed", "sizeof", "continue", "struct", "union", "enum",  "register","default","long","return"};  //0-28  //隨機(jī)產(chǎn)生  words[n].str = str[rand() % 29];  //0 1 2   //判斷重復(fù),如果重復(fù),就重新生成  while (words[n].str == words[(n + 1) % 3].str || words[n].str == words[(n + 2) % 3].str)  {    words[n].str = str[rand() % 29];  }  words[n].x = rand() % (WIDTH-200);  words[n].y = -20;}void drawScore(){  settextcolor(LIGHTBLUE);  settextstyle(25, 0, "字魂24號(hào)-鎮(zhèn)魂手書(shū)"); 
  //軟件信息輸出  outtextxy(WIDTH - 90, 25, "頓開(kāi)教育");  outtextxy(WIDTH - 90, 25+25, "程序員專屬");  outtextxy(WIDTH - 90, 25 +25+25, "打字游戲");
  //游戲狀態(tài)欄輸出  outtextxy(WIDTH - 90, 225, "正確數(shù)");   outtextxy_int(WIDTH - 90, 225 + 25,"%d", right);
  outtextxy(WIDTH - 90, 285, "錯(cuò)誤數(shù)");  outtextxy_int(WIDTH - 90, 285 + 25, "%d", error);
  outtextxy(WIDTH - 90, 285+285-225, "正確率");  //分類討論  if (right + error == 0)  {    outtextxy_double(WIDTH - 90, 285 + 285 - 225 + 25, "%.2lf%%", 0.00);  }  else  {    //C語(yǔ)言 除法會(huì)取整    double sum = right + error;    outtextxy_double(WIDTH - 90, 285 + 285 - 225 + 25, "%.2lf%%", right / sum * 100);  }
}int main(){  srand((unsigned int)time(NULL));  mciSendString("open 1.mp3 alias music", 0, 0, 0);  initgraph(WIDTH+50, HEIGHT);  struct TARGET words[3];  //隨機(jī)產(chǎn)生掉落的字符串  for (int n = 0; n < 3; n++)  {    initTarget(words, n);    words[n].y = -15 - n * 30; //形成不登高  }  BeginBatchDraw();  int i = 0;  while (1)  {    cleardevice();    divWindow();    //碰線處理    for (int n = 0; n < 3; n++)    {      words[n].y += 2;      if (words[n].y>(HEIGHT - 40 - textheight(words[n].str)))      {        initTarget(words, n);      }    }    //打印文字    for (int n = 0; n < 3; n++)    {      settextcolor(RED);       outtextxy(words[n].x, words[n].y, words[n].str);
    }    if (_kbhit())  //kbhit 檢測(cè)鍵盤(pán),有按鍵返回非零    {      //字符串變?yōu)樽址幚?/span>      char target;    //接受用戶的值      if ((target = _getch()) != '
')      {        userkey.str[i++] = target;      }      else      {
        int flagError = 0;        //干掉輸入正確的字符        for (i = 0; i < 3; i++)        {          if (strcmp(userkey.str, words[i].str) == 0)          {            initTarget(words, i);            right++;            flagError = 1;            mciSendString("play music", 0, 0, 0);           }        }        if (flagError == 0)        {          error++;        }        //習(xí)慣很重要:邊寫(xiě)邊測(cè)試        i = 0;        userkey.x = 320;        memset(userkey.str, 0, 20);      }      }    outtextxy(userkey.x, userkey.y, userkey.str);    drawScore();    FlushBatchDraw();    Sleep(100);  }  getchar();  closegraph();  return 0;}

寫(xiě)在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開(kāi)始!

責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135575
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68083

原文標(biāo)題:C語(yǔ)言項(xiàng)目實(shí)戰(zhàn):《打字母游戲》零基礎(chǔ)項(xiàng)目!183 行源代碼示例

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何用C語(yǔ)言實(shí)現(xiàn)高效查找(二分法)

    今天給分享一下使用C語(yǔ)言實(shí)現(xiàn)二分算法,主要包含以下幾部分內(nèi)容:二分查找算法介紹二分查找算法使用場(chǎng)景二分查找算法代碼實(shí)現(xiàn)二分查找算法實(shí)現(xiàn)過(guò)程用C
    的頭像 發(fā)表于 06-04 08:04 ?826次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>高效查找(二分法)

    使用C語(yǔ)言實(shí)現(xiàn)的CRC計(jì)算單元的例子

    使用C語(yǔ)言實(shí)現(xiàn)的CRC計(jì)算單元的例子
    的頭像 發(fā)表于 05-16 16:16 ?747次閱讀

    C語(yǔ)言實(shí)現(xiàn)Web參數(shù)傳遞

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言實(shí)現(xiàn)Web參數(shù)傳遞.docx》資料免費(fèi)下載
    發(fā)表于 03-24 09:14 ?2次下載

    嵌入式系統(tǒng)C語(yǔ)言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語(yǔ)言中的數(shù)組只能允許程序員定義存儲(chǔ)相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語(yǔ)言編程中允許您存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?367次閱讀
    嵌入式<b class='flag-5'>系統(tǒng)</b>中<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>結(jié)構(gòu)體的基礎(chǔ)<b class='flag-5'>實(shí)現(xiàn)</b>與應(yīng)用

    c語(yǔ)言,c++,java,python區(qū)別

    操作系統(tǒng)、嵌入式系統(tǒng)等對(duì)性能要求較高的場(chǎng)景。C語(yǔ)言的語(yǔ)法相對(duì)簡(jiǎn)單,學(xué)習(xí)曲線較平緩,也是學(xué)習(xí)其他高級(jí)語(yǔ)言的入門(mén)
    的頭像 發(fā)表于 02-05 14:11 ?1642次閱讀

    ADUC7061如何使用C語(yǔ)言實(shí)現(xiàn)EEPROM功能?

    我使用ADUC7061做的信號(hào)采集,現(xiàn)在客戶需要實(shí)現(xiàn)EEPROM功能來(lái)保存3-5個(gè)數(shù)據(jù),請(qǐng)問(wèn)如何使用C語(yǔ)言實(shí)現(xiàn)?不使用外部EEPROM 專用IC。
    發(fā)表于 01-12 06:56

    C語(yǔ)言構(gòu)建高效的嵌入式程序

    嵌入式工程師在編寫(xiě)C語(yǔ)言程序時(shí),需要注重效率和清晰的思路。本文將通過(guò)解析經(jīng)典問(wèn)題“猴子選大王”來(lái)展示如何用C語(yǔ)言思維方式構(gòu)建高效、清晰的程序
    的頭像 發(fā)表于 12-21 09:27 ?562次閱讀

    C語(yǔ)言運(yùn)行環(huán)境是什么

    C語(yǔ)言運(yùn)行環(huán)境(C language runtime environment)是指在執(zhí)行C語(yǔ)言程序時(shí)所需的軟件及硬件環(huán)境。
    的頭像 發(fā)表于 11-27 16:13 ?3142次閱讀

    如何選擇創(chuàng)建c語(yǔ)言c++

    ++ 的詳盡、詳實(shí)、細(xì)致的討論。 C 語(yǔ)言的特點(diǎn)和優(yōu)勢(shì): C 語(yǔ)言是一種過(guò)程性的編程語(yǔ)言,它注重的是簡(jiǎn)潔、高效、直接的編碼方式。以下是一些
    的頭像 發(fā)表于 11-27 15:58 ?527次閱讀

    C語(yǔ)言實(shí)用程序150例

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言實(shí)用程序150例.rar》資料免費(fèi)下載
    發(fā)表于 11-20 11:37 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言實(shí)</b>用程序150例

    C語(yǔ)言進(jìn)階之嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言進(jìn)階之嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程.rar》資料免費(fèi)下載
    發(fā)表于 11-18 10:32 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>進(jìn)階之嵌入式<b class='flag-5'>系統(tǒng)</b>高級(jí)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>編程

    C語(yǔ)言何用/* */ 注釋?

    有些早期的C編譯器對(duì)這種注釋是不支持的。代碼要做到全平臺(tái)兼容,這點(diǎn)是必須要考慮的。 因此,老外定義的C語(yǔ)言軟件規(guī)范,無(wú)論是MISRA還是CMMI,一般都要求所有代碼注釋必須使用/**/。
    的頭像 發(fā)表于 11-13 12:33 ?558次閱讀

    何用C語(yǔ)言實(shí)現(xiàn)線程池

    線程池是一種多線程處理形式,大多用于高并發(fā)服務(wù)器上,它能合理有效的利用高并發(fā)服務(wù)器上的線程資源;線程與進(jìn)程用于處理各項(xiàng)分支子功能,我們通常的操作是:接收消息 ==> 消息分類 ==> 線程創(chuàng)建 ==> 傳遞消息到子線程 ==> 線程分離 ==> 在子線程中執(zhí)行任務(wù) ==> 任務(wù)結(jié)束退出; 對(duì)大多數(shù)小型局域網(wǎng)的通信來(lái)說(shuō),上述方法足夠滿足需求;但當(dāng)我們的通信范圍擴(kuò)大到廣域網(wǎng)或大型局域網(wǎng)通信中時(shí),我們將面臨大量消息頻繁請(qǐng)求服務(wù)器;在這種情況下,創(chuàng)
    的頭像 發(fā)表于 11-13 10:41 ?912次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>線程池

    基于VHDL語(yǔ)言實(shí)現(xiàn)遠(yuǎn)程防盜報(bào)警設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于VHDL語(yǔ)言實(shí)現(xiàn)遠(yuǎn)程防盜報(bào)警設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-08 14:33 ?0次下載
    基于VHDL<b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>遠(yuǎn)程防盜報(bào)警設(shè)計(jì)

    何用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng)?

    何用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng)? DSP嵌入式系統(tǒng)開(kāi)發(fā)是一個(gè)非常重要的領(lǐng)域,它涉及到設(shè)備的控制、數(shù)據(jù)的處理、
    的頭像 發(fā)表于 10-29 17:29 ?1112次閱讀