在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用C語言實現打字練習系統

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-17 17:48 ? 次閱讀

這篇文章主要為大家詳細介紹了C語言實現——《打字練習系統》,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下!

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

游戲介紹:

字母游戲》是一款敏捷打字小游戲,游戲大小為468K。背景設定 《字母游戲》是一款有趣的打字游戲,可以提高你的打字速度。操作指南 根據出現的字母,按鍵盤A-Z鍵對應的按鍵即可。游戲加載完畢點擊[開始游戲]即可開始游戲。在限定時間內,盡可能地輸入正確的字母,挑戰高分!

本項目針對C語言學習者,將我們打字母的“字母”置換成了C語言關鍵字,記在一定時間內及時輸出C語言關鍵字就可以得分!我們一起來看看吧!

本項目編譯環境:VS2019/VS2013;

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關注文末領取;

效果圖展示

配套講解教程程序員打字練習系統教程——嗶哩嗶哩

源代碼示例:

#define _CRT_SECURE_NO_WARNINGS#include     #include #include #include #include   //報錯,請先安裝#include #pragma comment(lib,"winmm.lib")//數據設計設計//窗口屬性:const int WIDTH = 640;const int HEIGHT = 500;//游戲正確率和錯誤率int right = 0;int error = 0;//下墜文字的結構體struct TARGET{  //每一個字符串的x,y坐標  int x;  int y;  char *str;  //保存字符串};//用戶輸入的值struct USRKEY{  int x;  int y;  char str[20];}userkey = {320,500-30,""};
//在指定位置輸出整數void outtextxy_int(int x, int y, char *format, int num){  char str[20] = "";  //printf;  sprintf(str, format, num);  outtextxy(x, y, str);}//在指定位置輸出浮點數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  //隨機產生  words[n].str = str[rand() % 29];  //0 1 2   //判斷重復,如果重復,就重新生成  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號-鎮魂手書"); 
  //軟件信息輸出  outtextxy(WIDTH - 90, 25, "頓開教育");  outtextxy(WIDTH - 90, 25+25, "程序員專屬");  outtextxy(WIDTH - 90, 25 +25+25, "打字游戲");
  //游戲狀態欄輸出  outtextxy(WIDTH - 90, 225, "正確數");   outtextxy_int(WIDTH - 90, 225 + 25,"%d", right);
  outtextxy(WIDTH - 90, 285, "錯誤數");  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語言 除法會取整    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];  //隨機產生掉落的字符串  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 檢測鍵盤,有按鍵返回非零    {      //字符串變為字符處理      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++;        }        //習慣很重要:邊寫邊測試        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;}

寫在最后:對于準備學習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內功)不妨從現在開始!

責任編輯:haq


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7612

    瀏覽量

    137238
  • 代碼
    +關注

    關注

    30

    文章

    4807

    瀏覽量

    68803

原文標題:C語言項目實戰:《打字母游戲》零基礎項目!183 行源代碼示例

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于FPGA實現圖像直方圖設計

    直方圖統計的原理 直方圖統計從數學上來說,是對圖像中的像素點進行統計。圖像直方圖統計常用于統計灰度圖像,表示圖像中各個灰度級出現的次數或者概率。統計直方圖的實現采用C/C++或者其他高級語言實
    的頭像 發表于 12-24 10:24 ?158次閱讀
    基于FPGA<b class='flag-5'>實現</b>圖像直方圖設計

    使用C語言實現函數模板

      用C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?427次閱讀

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C
    的頭像 發表于 10-29 17:31 ?386次閱讀

    何用java語言開發一套數字化產科系統? 數字化產科管理平臺源碼

    何用java語言開發一套數字化產科系統 數字化產科管理平臺源碼
    的頭像 發表于 07-06 09:38 ?1037次閱讀
    如<b class='flag-5'>何用</b>java<b class='flag-5'>語言</b>開發一套數字化產科<b class='flag-5'>系統</b>? 數字化產科管理平臺源碼

    PLC編程語言C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯著的區別。本文將從多個維度深入探討PLC編程
    的頭像 發表于 06-14 17:11 ?3045次閱讀

    何用C語言實現高效查找(二分法)

    今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:二分查找算法介紹二分查找算法使用場景二分查找算法代碼實現二分查找算法實現過程用C
    的頭像 發表于 06-04 08:04 ?1208次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語言實現</b>高效查找(二分法)

    使用C語言實現的CRC計算單元的例子

    使用C語言實現的CRC計算單元的例子
    的頭像 發表于 05-16 16:16 ?1033次閱讀

    嵌入式編程,如何用 C 語言實現狀態機設計?

    狀態機模式是一種行為模式,通過多態實現不同狀態的調轉行為的確是一種很好的方法,只可惜在嵌入式環境下,有時只能寫純C代碼,并且還需要考慮代碼的重入和多任務請求跳轉等情形,因此實現起來著實需要一番考慮
    發表于 04-23 11:00

    C語言基礎-為什么要使用C

    當今最流行的 Linux 操作系統和 RDBMS(Relational Database Management System:關系數據庫管理系統) MySQL 都是使用 C 語言編寫的
    發表于 03-25 11:20 ?472次閱讀

    C語言實現Web參數傳遞

    電子發燒友網站提供《C語言實現Web參數傳遞.docx》資料免費下載
    發表于 03-24 09:14 ?2次下載

    fpga語言是什么?fpga語言c語言的區別

    功能,從而實現對數字電路的高效定制。FPGA語言主要包括VHDL(VHSIC Hardware Description Language)和Verilog等,這些語言具有強大的描述能力,能夠精確地定義硬件的每一個細節,從而
    的頭像 發表于 03-15 14:50 ?972次閱讀

    嵌入式系統C語言結構體的基礎實現與應用

    C語言中的數組只能允許程序員定義存儲相同類型數據。但是結構是C語言編程中允許您存儲不同數據類型的數據。
    發表于 03-12 14:29 ?528次閱讀
    嵌入式<b class='flag-5'>系統</b>中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結構體的基礎<b class='flag-5'>實現</b>與應用

    plc編程語言c語言的聯系 c語言和PLC有什么區別

    PLC編程語言C語言的聯系 PLC(可編程邏輯控制器)是一種針對自動化控制系統的特殊計算機。PLC編程語言是為了控制和管理自動化生產過程中
    的頭像 發表于 02-05 14:21 ?4274次閱讀

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門
    的頭像 發表于 02-05 14:11 ?2501次閱讀

    vb語言c++語言的區別

    Microsoft開發的一種面向對象的事件驅動編程語言。它的設計目標是簡化編程過程,讓初學者也能快速上手。與之相比,C++語言是一種通用的、面向對象的編程語言,其設計目標是提供高性能的
    的頭像 發表于 02-01 10:20 ?2412次閱讀
    主站蜘蛛池模板: 5252a我爱haose01亚洲| 69日本人xxxx16-18| 天天狠狠操| 深夜视频在线观看免费| 奇米影视四色7777| 国产午夜久久精品| 奇米影视亚洲春色77777| 68日本xxxxxxxxx777| 免费久久精品国产片香蕉| 种子搜索在线| 我想看一级黄色片| 人人爱爱| 国产无遮挡床戏视频免费| 永久影视| 久久久国产乱子伦精品| 免费在线观看视频| 美欧毛片| 四虎官网| 哪里可以看免费毛片| 国产天天射| 中文字幕精品一区影音先锋| 看黄网站免费| 四虎永久在线日韩精品观看| 免费能看的黄色网址| www.亚洲黄色| 久草免费色站| 亚洲视频在线一区| 婷婷5月天| 久草免费新视频| 午夜 在线播放| 2021久久精品国产99国产精品| 色播四房间| 色综合久久五月| 国产精品黄网站免费观看| 手机看片免费福利| xxxx日本老师hd| 性欧美人与zooz| 黄a级免费| 人人干人人爽| 欧美色图亚洲自拍| 美女扒开内裤无遮挡禁18 |